HTML Formular mit PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
button
code
date
form
gewissen situationen
jahr
kalender
lernen
mai
monat
test
text
unterschiedlichen werten code
url
verstecken
versteckten daten
wenigkeit
zahl
ziehen
-
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="-->" />
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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ä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 :)
-
computer-freak schrieb:
nein ;) du hast so etwas wie inen 'schrittmacher' für monat und jahr basteln wollen.
Ich habe so einen kalender gebastelt ...
anlagegeld schrieb:
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 ;):
... das geht sicher auch noch besser :)... code ...
(nach dem letzten EOT; muss eine leere zeile kommen. danach kannst dir '?>' sparen.)<?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;
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! -
Schlagt mich, wenn ich gerade den Kontext nicht richtig mitbekommen habe, aber wieso:
$_GET['button1']
statt:
$_POST['button1']
-
anaboli-key schrieb:
nööö ;)
Schlagt mich, ...
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.
schickt sichtbat die versteckten daten!! (das wollen wir doch nicht. Oder? warum dann verstecken??<form action="..." method="get"> <input type="hidden" name="<name>" value="<value>">
2.
schickt demgegenüber unsichtbar.<form action="..." method="post">
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:
war das jetzt 'con'-text? ;)... <input type="submit" name="prevnext" value="$left"> ... ... <input type="submit" name="prevnext" value="$right"> ...
-
hemiolos schrieb:
anaboli-key schrieb:
nööö ;)
Schlagt mich, ...
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.
schickt sichtbat die versteckten daten!! (das wollen wir doch nicht. Oder? warum dann verstecken??<form action="..." method="get"> <input type="hidden" name="<name>" value="<value>">
2.
schickt demgegenüber unsichtbar.<form action="..." method="post">
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:
war das jetzt 'con'-text? ;)... <input type="submit" name="prevnext" value="$left"> ... ... <input type="submit" name="prevnext" value="$right"> ...
Jaja begriffen :)
Bin manchmal eben etwas langsamer als die anderen Superhirne hier :P -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage