Darth Sidious Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 Ich habe auf einer Website zwei Auswahlfelder (HTML). Diese zwei Auswahlfälder sollen nun mittels PHP automatisch ausgefüllt werden. Die zwei Felder sind Monat und Jahr im Format YYYY und Monat ausgeschrieben. Wie kann es nun so bewerkstelligen dass bei jedem Seitenaufruf automatisch diese Felder ausgefüllt werden je nachdem welches Jahr/Monat wir haben? <div style="margin-left:16px"> <form method="post" action=""> Month <select name="month2" id="month2"> <option value="" selected="selected"></option> <option value="January">January</option> <option value="February">February</option> <option value="March">March</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="August">August</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> </select> Year <select name="year2" id="year2"> <option value="" selected="selected"></option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> <option value="2020">2020</option> </select> <input type="submit" name="start" id="start" value="start" /> <br /> </form> </div> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 Lass einfach mal deiner Fantasie freien Lauf. Wenn Dinge wie Schleifen, Bedingungen, PHP: getdate - Manual und PHP: date - Manual drin vorkommen, dann bist du auf nem guten Weg. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 25. November 2010 Autor Teilen Geschrieben 25. November 2010 Könntest Du mir verraten wo nun mein fehler liegt? Ich habe folgenden code gebastelt. Jedoch bekomm ich in dem entsprechenden feld nur ein "$format" angezeigt anstatt den Inhalt der Variable Code für das Feld Monat: Month <select name="month2" id="month2"> <?php string $format [, int $timestamp = time(month)]; while ($format = "December"){ if {$format = getdate("month")} echo "<option value='"$format"' selected=selected>$format</option>"; else echo "<option value='"$format"'>$format</option>"; } ?> </select>[/PHP]Code für das Feld Jahr: [PHP] Year <select name="year2" id="year2"> <?php string $format [, int $timestamp = time("year")]; while ($format = "2030"){ if {$format = getdate("year")} echo "<option value='"$format"' selected=selected>"$format"</option>"; else echo "<option value='"$format"'>"$format"</option>"; ?> </select> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 <?php $today = getdate(); $monat = 1; do{ $date = mktime(0,0,0,$monat + 1, 0,0); $formatted_month = date('F', $date); $selected = ($monat) == $today['mon'] ? '*' : ''; echo "$monat - $formatted_month $selected\n"; } while($monat++ < 12); ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 Könntest Du mir verraten wo nun mein fehler liegt? Du hast die Beschreibung auf den verlinkten Seiten nicht annähernd verstanden und Dir anscheinend auch die anschaulichen Beispiele nicht angesehen. Auch fehlen Dir offensichtlich grundlegende PHP-Kenntnisse. string $format [, int $timestamp = time(month)]; Was soll das sein? while ($format = "December"){ Hier weist Du der Variable format den Wert "December" zu. Vergleichsoperator in PHP ist ==, = ist immer eine Zuweisung. Selbst wenn dort $format == "December" stünde, was ist der Zweck? Warum soll die Schleife laufen, so lange $format gleich "December" ist? if {$format = getdate("month")} "month" ist kein Timestamp. Warum if? Das Format dieser If-Verzweigung ist obendrein komplett verkehrt. echo "<option value='"$format"' selected=selected>$format</option>"; Strings verbindet man in PHP mit einem Punkt. ("text".$variable."text") Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 25. November 2010 Autor Teilen Geschrieben 25. November 2010 Richtig, ich habe vor einigen Tagen erst mit PHP angefangen. Mit der If-Anweisung wollte ich dass solange der nächste Monat immer hinzugefügt wird bis der Monat Dezember erreicht ist. Es soll ja eine Liste erstellt werden als DropDown Box mit den Monaten (der aktuelle soll ausgewählt sein) und eine Box für das Jahr (ebenfalls das aktuelle). @etrue: Dein Code scheint scheinbar nicht zu funktionieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 @etrue: Dein Code scheint scheinbar nicht zu funktionieren. Was genau funktioniert denn nicht? Der Code zeigt dir, wie du die Monate ausgeben und den aktuellen selektieren kannst. Anwendung auf HTML und die Jahre ist eine Transferleistung, die ich dir überlasse Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 25. November 2010 Teilen Geschrieben 25. November 2010 Richtig, ich habe vor einigen Tagen erst mit PHP angefangen. Mit der If-Anweisung wollte ich dass solange der nächste Monat immer hinzugefügt wird bis der Monat Dezember erreicht ist. Ist ja ein guter Ansatz, da aber jedes Jahr 12 Monate hat, wäre hier eine for-Schleife vielleicht einfacher, die Du einfach von 1 bis 12 durchlaufen lässt. Allgemein empfehle ich Dir, Dir grundlegende Dinge anzulesen, damit Du erstmal weißt, wie Ausgaben, Schleifen und If-Abfragen in PHP funktionieren. Die Online-Dokumentation ist eigentlich sehr gut. Etreu hat ja schon Ansätze gezeigt, es wird aber kaum zielführend sein, wenn Du Dir alles vorbeten lässt. Selbst lernen macht doch viel mehr Spaß. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Das sehe ich ganz genauso, dass selber lernen besser ist als alles sich sagen lassen. Wobei ich das "Learning by doing" am liebsten mag. Doch leider gibt es manchmal Punkte wo ich halt nicht weiterkomme bzw. wo meine Kentnisse oder das Verständniss aufhört und ich mit Google nicht weiterkomme. In der Schule gibt es dafür ein Lehrer, und hier hab ich das Forum wo ich fragen stellen kann wenn ich nicht weiterkomme. @etreu: Ich hab den Code jetzt mal angepasst (Ausgabe). Leider gibt er mir keinen Wert zurück (das Auswahlfeld bleibt leer): <div style="margin-left:16px"> <form method="post" action=""> Month <select name="month2" id="month2"> <?php $today = getdate(); $monat = 1; do{ $date = mktime(0,0,0,$monat + 1, 0,0); $formatted_month = date('F', $date); $selected = ($monat) == $today['mon'] ? '*' : ''; echo '<option value="' . $formatted_month . '">"' . $formatted_month . '"</option>"'; } while($monat++ < 12); ?> <!-- <option value="" selected="selected"></option> <option value="January">January</option> <option value="February">February</option> <option value="March">March</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="August">August</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> --> </select> </form> </div>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 26. November 2010 Teilen Geschrieben 26. November 2010 Das $monat + 1 im mktime kann ich so nicht nachvollziehen. Dann müsste man die Schleife auch mit 0 starten, sonst geht nämlich der Januar flöten. Und die Prüfung, ob der Monat der aktuelle Monat is, muss auch mit $monat + 1 gemacht werden. Oder man fängt bei 1 an, nimmt das +1 weg und prüft im Fuß der Schleife auf <13 statt <12. Ich würde ja, wie schon gesagt, lieber eine for-schleife von 1 bis 12 nehmen. Ist einfacher. Du musst die Prüfung auf den aktuellen Monat auch noch so umbauen, dass ggf. selected="selected" mit in den Tag geschrieben wird. Das Script sollte aber zumindest die Monate Februar bis Dezember ausgeben. Wie sieht denn das erzeugte HTML aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Momentan sieht das Ergebniss so aus wie im Bild. Den Code kann ich dir geben. Der Code ist jedoch so wie ich ihn geschrieben habe (Die Jahrensangabe kann man im Moment noch vergessen, erstmal soll der Monat funktionieren): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN "http://www.w3.org/TR/html4/loose.dtd"> <?php //include head and functions require("head.php"); require("function.php"); ?> <h1>Administration</h1> <!-- input fields for input values --> <div class="optionDIV""> <div style="margin-left:16px"> <form method="post" action=""> Month <select name="month2" id="month2"> <?php $today = getdate(); $monat = 0; do{ $date = mktime(0,0,0,$monat + 1, 0,0); $formatted_month = date('F', $date); $selected = ($monat) == $today['mon'] ? '*' : ''; echo '<option value="'$formatted_month'">"'$formatted_month'"</option>"'; } while($monat++ < 12); ?> <!-- <option value="" selected="selected"></option> <option value="January">January</option> <option value="February">February</option> <option value="March">March</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="August">August</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> --> </select> Year <select name="year2" id="year2"> <?php string $format [, int $timestamp = time("year")]; while ($format = "2030"){ if {$format = getdate("year")} echo "<option value='"$format"' selected=selected>"$format"</option>"; else echo "<option value='"$format"'>"$format"</option>"; ?> <!-- <option value="" selected="selected"></option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> <option value="2020">2020</option> --> </select> <input type="submit" name="start" id="start" value="start" /> <br /> </form> </div>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 26. November 2010 Teilen Geschrieben 26. November 2010 Der erzeugte Code ist der, der im Browser gerendert wird. Also lass dir im Browser den Quelletext anzeigen und poste den entsprechenden Auszug! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 26. November 2010 Teilen Geschrieben 26. November 2010 Momentan sieht das Ergebniss so aus wie im Bild. Den Code kann ich dir geben. Der Code ist jedoch so wie ich ihn geschrieben habe (Die Jahrensangabe kann man im Moment noch vergessen, erstmal soll der Monat funktionieren): Jetzt verwendest Du allerdings wieder keine Punkte beim zusammenfügen der Strings... Und Quellcode: wie gesagt, Im Browser kann man sich ansehen, was PHP da zusammenbastelt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 o.O Ich habe jetzt nochmal die ' . ' und zwei Gänsefüßchen weggemacht, und siehe da es funktioniert. Das bekomme ich als Ergebniss geliefert: <div class="optionDIV""> <div style="margin-left:16px"> <form method="post" action=""> Month <select name="month2" id="month2"> <option value="December">December</option>"<option value="January">January</option>"<option value="February">February</option>"<option value="March">March</option>"<option value="April">April</option>"<option value="May">May</option>"<option value="June">June</option>"<option value="July">July</option>"<option value="August">August</option>"<option value="September">September</option>"<option value="October">October</option>"<option value="November">November</option>"<option value="December">December</option>" <!-- <option value="" selected="selected"></option> <option value="January">January</option> <option value="February">February</option> <option value="March">March</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="August">August</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> --> </select> Year <select name="year2" id="year2"> <option value="" selected="selected"></option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> <option value="2020">2020</option> </select> <input type="submit" name="start" id="start" value="start" /> <br /> </form> </div> Damit nun auch automatisch der Monat ausgewält wird, müsste der Code doch wie folgt sein, richtig? <?php $today = getdate(); $monat = 0; do{ $date = mktime(0,0,0,$monat + 1, 0,0); $formatted_month = date('F', $date); $selected = ($monat) == $today['mon'] ? '*' : ''; If ($formatted_month == ($today['mon'] ? '*' : '')){ echo '<option value="' . $formatted_month . '" seleted="selected">' . $formatted_month . '</option>"';} else {echo '<option value="' . $formatted_month . '">' . $formatted_month . '</option>"'; } } while($monat++ < 12); ?>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 26. November 2010 Teilen Geschrieben 26. November 2010 (bearbeitet) Nicht so ganz. Wenn du den "*" durch "selected=\"selected\"" ersetzt und nach jedem value noch $selected ausgibst, dann bist du schon einen Schritt weiter. Als Wert solltest du jedoch etwas numerisches übergeben und nicht den Namen. $selected = ($monat) == $today['mon'] ? 'selected="selected"' : ''; echo "<option value=\"$formatted_month\" $selected>$formatted_month</option>"; [/PHP] Bearbeitet 26. November 2010 von etreu Code eingefügt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Danke für die Hilfestellung. Dein Code funktioniert nicht ganz. Nachdem ich noch einmal ein ['" " . $selected .' ] (ohne []) hat es funktioniert. <form method="post" action=""> Month <select name="month2" id="month2"> <?php $today = getdate(); $monat = 0; do{ $date = mktime(0,0,0,$monat + 1, 0,0); $formatted_month = date('F', $date); $selected = ($monat) == $today['mon'] ? ' selected="selected"' : ''; echo '<option value="' . $formatted_month . '" ' . $selected . '>' . $formatted_month . '</option>"'; } while($monat++ < 12); ?> </select>[/PHP] Nun probier ich mal ob ich das Jahr noch schaffe. Ich melde mich sobald ich Problem damit habe. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 26. November 2010 Autor Teilen Geschrieben 26. November 2010 Nun hab ich doch nochmal ne frage. Ich kann nun mein PHP-Code schlecht überprüfen. Wird mir der folgende Code auch immer das aktuelle Jahr (z.B. in 2011) ausgeben? <?php $selected = ""; $today = ""; $monat = ""; $today = getdate(); $jahr = 0; do{ $date = mktime(0,0,0,0,0,$jahr); $formatted_jahr = date('Y', $date); $selected = ($jahr) == $today['yyyy'] ? ' selected="selected"' : ''; echo '<option value="' . $formatted_jahr . '" ' . $selected . '>' . $formatted_jahr . '</option>"'; } while($jahr++ < 20); ?>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 28. November 2010 Teilen Geschrieben 28. November 2010 Dein Code liefert dir nur die Jahre 0 bis 20. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 29. November 2010 Autor Teilen Geschrieben 29. November 2010 Ich komm einfach nicht auf den Fehler. Inzwischen hab ich mir xampp mal zugelegt und mir alle variablen auch als echo mal zurückgeben lassen. Leider hat mich alles nicht weiter gebracht. So wie der Code jetzt ist spuckt er mir alle Jahre von 2000 bis 2035 aus. <?php $selected = ""; $today = ""; $monat = ""; $today = getdate(); $jahr = 2001; do{ $date = mktime(0,0,0,0,0,$jahr); $formatted_jahr = date('Y', $date); $selected = ($jahr) == $today['year'] ? ' selected="selected"' : ''; echo '<option value="' . $formatted_jahr . '" ' . $selected . '>' . $formatted_jahr . '</option>"'; } while($jahr++ < 2036); ?>[/PHP]Findest du noch irgendwo ein Fehler? Wenn ich die Syntax von getdate, date und mktime richtig verstanden habe dürfte es auch alles korrekt sein !? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 29. November 2010 Teilen Geschrieben 29. November 2010 Welches Jahr soll denn ausgewählt sein? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 29. November 2010 Autor Teilen Geschrieben 29. November 2010 Naja, immer das Aktuelle Jahr (2010). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 Dann zeig doch bitte mal den generierten Code! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 30. November 2010 Autor Teilen Geschrieben 30. November 2010 <div style="margin-left:16px"> <form method="post" action=""> Month <select name="month2" id="month2"> <option value="December" >December</option>"<option value="January" >January</option>"<option value="February" >February</option>"<option value="March" >March</option>"<option value="April" >April</option>"<option value="May" >May</option>"<option value="June" >June</option>"<option value="July" >July</option>"<option value="August" >August</option>"<option value="September" >September</option>"<option value="October" >October</option>"<option value="November" selected="selected">November</option>"<option value="December" >December</option>" </select> Year <select name="year2" id="year2"> <option value="2000" >2000</option>"<option value="2001" >2001</option>"<option value="2002" >2002</option>"<option value="2003" >2003</option>"<option value="2004" >2004</option>"<option value="2005" >2005</option>"<option value="2006" >2006</option>"<option value="2007" >2007</option>"<option value="2008" >2008</option>"<option value="2009" selected="selected">2009</option>"<option value="2010" >2010</option>"<option value="2011" >2011</option>"<option value="2012" >2012</option>"<option value="2013" >2013</option>"<option value="2014" >2014</option>"<option value="2015" >2015</option>"<option value="2016" >2016</option>"<option value="2017" >2017</option>"<option value="2018" >2018</option>"<option value="2019" >2019</option>"<option value="2020" >2020</option>"<option value="2021" >2021</option>"<option value="2022" >2022</option>"<option value="2023" >2023</option>"<option value="2024" >2024</option>"<option value="2025" >2025</option>"<option value="2026" >2026</option>"<option value="2027" >2027</option>"<option value="2028" >2028</option>"<option value="2029" >2029</option>"<option value="2030" >2030</option>"<option value="2031" >2031</option>"<option value="2032" >2032</option>"<option value="2033" >2033</option>"<option value="2034" >2034</option>"<option value="2035" >2035</option>" </select> <input type="submit" name="Start" id="Start" value="Start" /> <br /> </form> </div> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 30. November 2010 Teilen Geschrieben 30. November 2010 (bearbeitet) 1. Du gibst da ein unnötiges Anführungszeichen aus 2. Wenn ich die Doku (s. Beispiel #3) richtig verstehe, darfst Du mktime nicht komplett mit 0 und einer Jahreszahl ausführen, sonst kriegst Du den letzten Tag des Vorjahres als Timestamp. Zumindest einen Monat musst Du also angeben, wenn Du das Jahr willst. Das würde erklären, warum die Liste mit 2000 anfängt, obwohl Du bei 2001 startest. Und deswegen ist auch 2009 statt 2010 ausgewählt. Bearbeitet 30. November 2010 von Toothrot Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 30. November 2010 Autor Teilen Geschrieben 30. November 2010 Es funktioniert jetzt. Das überflüssige " ist weg. Der Code sieht jetzt so aus: $today = getdate(); $jahr = 2000; do{ $date = mktime(0,0,0,10,10,$jahr); $formatted_jahr = date('Y', $date); $selected = ($jahr) == $today['year'] ? ' selected="selected"' : ''; echo '<option value="' . $formatted_jahr . '" ' . $selected . '>' . $formatted_jahr . '</option>'; } while($jahr++ < 2035); [/PHP] Da ich ja was lernen möchte: Wie hast du das aus dem Codebeispiel #3 heruasgelesen? Dort steht ja nur das "0" als der Tag des nächsten Monats gewertet werden kann --> daraus schließe ich das mit der Angabe "mktime(0,0,0,0,0,$jahr);" eigentlich der 01.01.2001 ausgegeben werden müsste (wie im Codebeispiel in meiner vorherigen Post); doch warum ist das eben nicht der Fall? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.