kostenloser Webspace werbefrei: lima-city


HTML Formular mit PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    computer-freak

    computer-freak hat kostenlosen Webspace.

    Hallo,
    Ich habe so einen kalender gebastelt und habe ein neues problem entdeckt. Wenn ich auf button3 drücke dann wird die variable $mont um +1 erhöht, aber wieso? button3 müsste ja eigentlich nicht tun? ich möchte wenn ich auf button3 klicke das er mir vom monat um 1 abzieht, wie würde das gehen mit php?

    mein Code:

    <form action="#" method="Get" style="display:inline;">
    
    <input type="submit" name="button3" value="<--" />
        
    <input type="text" name="monat" value="<?php if(isset($_GET['button1'])){ echo $_GET['monat']+1;}else{echo $month+1;}?>"/>
    <input type="submit" name="button1" value="-->" />
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. weil du im gleichen Formular die zwei Submit Buttons hast

    Du musst für jede Aktion (vor/zurück) je ein eigenes Formular machen
    sonst werden immer beide Buttons abgesendet, auch wenn Du nur einen klickst

    und Du musst prüfen, ob der Monat schon "gewechselt" hat, dann diesen verwenden, sonst aktuellen


    mal mal ganz grob ein Beispiel ( zwei Formulare in Tabelle )

    <?php
    
    $mo_name = array(
    '1' => 'Januar', 
    '2' => 'Februar', 
    '3' => 'M&auml;rz', 
    '4' => 'April', 
    '5' => 'Mai', 
    '6' => 'Juni', 
    '7' => 'Juli', 
    '8' => 'August', 
    '9' => 'Semptember', 
    '10' => 'Oktober', 
    '11' => 'November', 
    '12' => 'Dezember' 
    ); 
    
    if (!empty($_REQUEST['mon'])) { $monat = $_REQUEST['mon']; } else { $monat = date('n'); } 
    if (!empty($_REQUEST['jah'])) { $jahr = $_REQUEST['jah']; }  else { $jahr = date('Y'); } 
    
    if (!empty($_REQUEST['go1'])) { $monat--; } 
    if (!empty($_REQUEST['go2'])) { $monat++; } 
    
    if (12 < $monat) { $jahr++; $monat = 1; } 
    if ($monat < 1) { $jahr--; $monat = 12; } 
    
    ?>
    
    <br>
    <table width="400" border="0" cellspacing="2" cellpadding="2" bgcolor="#DEDEDE">
      <tr>
        <td width="15%" align="center" valign="top">
    	  <form name="form1" method="post" action="">
    	    <input type="submit" name="go1" value="<--">
    	    <input type="hidden" name="mon" value="<?php echo $monat; ?>">
    	    <input type="hidden" name="jah" value="<?php echo $jahr; ?>">
    	  </form>
        </td>
        <td width="70%" align="center" valign="top">
    	<?php 
    	echo "<span style=\"font-size:22px\">".$mo_name[$monat]."</span>"; 
    	echo "<br><span style=\"font-size:16px\">".$jahr."</span>"; 
    	?>
    	</td>
        <td width="15%" align="center" valign="top">
    	  <form name="form2" method="post" action="">
    	    <input type="submit" name="go2" value="-->">
    	    <input type="hidden" name="mon" value="<?php echo $monat; ?>">
    	    <input type="hidden" name="jah" value="<?php echo $jahr; ?>">
    	  </form>
        </td>
      </tr>
    </table>
    <br>
    <br>
    <br>Monat Zahl: <?php echo $monat; ?>
    <br>Monat Name: <?php echo $mo_name[$monat]; ?>
    <br>Jahr: <?php echo $jahr; ?>  
    <br>
    <br>



    das geht sicher auch noch besser :)


  4. computer-freak schrieb:
    Ich habe so einen kalender gebastelt ...
    nein ;) du hast so etwas wie inen 'schrittmacher' für monat und jahr basteln wollen.

    anlagegeld schrieb:
    ... code ...
    ... das geht sicher auch noch besser :)
    ja ;), wobei deine lösung in prizip ja brauchbar ist, verbreitest hier schon ein bisschen unwahrheit. hier ist dein code von einigen fehlern befreit (einigen, weil ich das ganze auf eine ganz und gar andere art lösen würde ;):
    <?php
    
    $months = array (
    	'',
    	'Jan',
    	'Feb',
    	'Mär',
    	'Apr',
    	'Mai',
    	'Jun',
    	'Jul',
    	'Augt',
    	'Sep',
    	'Okt',
    	'Nov',
    	'Dez'
    );
    
    // die buttontexte für '<prevnext>'
    $left  = '<';
    $right = '>';
    
    date_default_timezone_set('Europe/Berlin'); // DAS IST HIER UNBEDINGT NÖTIG (ab PHP 5.?)
    
    $month = (!empty($_REQUEST['month'])) ?
    	$_REQUEST['month']:
    	date('n');
    $year = (!empty($_REQUEST['year'])) ?
    	$_REQUEST['year']:
    	date('Y');
    
    if(!empty($_REQUEST['prevnext'])) {
    	if($_REQUEST['prevnext'] === $left) {
    		$month--;
    	} elseif($_REQUEST['prevnext'] === $right) {
    		$month++;
    	}
    }
    
    if(12 < $month) {
    	$year++;
    	$month = 1;
    }
    if($month < 1) {
    	$year--;
    	$month = 12;
    }
    
    echo '<h5>TEST 1:</h5><pre>$_POST: ' . print_r($_POST, true) . '</pre><hr />';
    
    echo <<< EOT
    
      <form action="" name="calendar" method="post">
        <p>{$months[$month]}, {$year}</p>
        <input type="submit" name="prevnext" value="$left">
        <input type="hidden" name="month" value="$month">
        <input type="hidden" name="year" value="$year">
        <input type="submit" name="prevnext" value="$right">
      </form>
    
    	<hr /><h5>TEST 2:</h5><pre>
    Monat Zahl: $month
    Monat Name: $months[$month]
    Jahr      : $year
    	</pre>
    EOT;
    (nach dem letzten EOT; muss eine leere zeile kommen. danach kannst dir '?>' sparen.)
    wie du sehen kannst, man braucht trotz 2 '<prevnext>'-buttons (submit) nicht 2 formen. HTML lernen!

    was ihr beide aber gemein habt ist spaghetticode, die man durch rigiroses entgegenwirken bekämpfen kann. PHP lernen!
  5. Schlagt mich, wenn ich gerade den Kontext nicht richtig mitbekommen habe, aber wieso:
    $_GET['button1']

    statt:
    $_POST['button1']
  6. anaboli-key schrieb:
    Schlagt mich, ...
    nööö ;)
    er hat seine form mit method="get" gemacht. andere leute - und meine wenigkeit - ziehen in gewissen situationen statt get eben post vor. z.b. eban dann, wenn man es nicht will, das die userangabe in der adresszeile sichtbar wird!
    also zusammengefasst:
    1.
    <form action="..." method="get">
      <input type="hidden" name="<name>" value="<value>">
    schickt sichtbat die versteckten daten!! (das wollen wir doch nicht. Oder? warum dann verstecken??
    2.
    <form action="..." method="post">
    schickt demgegenüber unsichtbar.

    ganz nebenbei. einer her hauptaussagen meines kodes war eben, dass es kein 'button1' und 'buton2' nötig sind, sondern im selben form nur 'button', das dafür aber gleich zwei mal, allerdings mit 2 unterschiedlichen werten:
    ...
        <input type="submit" name="prevnext" value="$left">
        ...
        ...
        <input type="submit" name="prevnext" value="$right">
        ...
    war das jetzt 'con'-text? ;)
  7. hemiolos schrieb:
    anaboli-key schrieb:
    Schlagt mich, ...
    nööö ;)
    er hat seine form mit method="get" gemacht. andere leute - und meine wenigkeit - ziehen in gewissen situationen statt get eben post vor. z.b. eban dann, wenn man es nicht will, das die userangabe in der adresszeile sichtbar wird!
    also zusammengefasst:
    1.
    <form action="..." method="get">
      <input type="hidden" name="<name>" value="<value>">
    schickt sichtbat die versteckten daten!! (das wollen wir doch nicht. Oder? warum dann verstecken??
    2.
    <form action="..." method="post">
    schickt demgegenüber unsichtbar.

    ganz nebenbei. einer her hauptaussagen meines kodes war eben, dass es kein 'button1' und 'buton2' nötig sind, sondern im selben form nur 'button', das dafür aber gleich zwei mal, allerdings mit 2 unterschiedlichen werten:
    ...
        <input type="submit" name="prevnext" value="$left">
        ...
        ...
        <input type="submit" name="prevnext" value="$right">
        ...
    war das jetzt 'con'-text? ;)


    Jaja begriffen :)
    Bin manchmal eben etwas langsamer als die anderen Superhirne hier :P
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!