Zum Inhalt springen

Auto select mittels PHP bei HTML


Darth Sidious

Empfohlene Beiträge

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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")

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

post-65565-1443044883979_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von etreu
Code eingefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 !?

Link zu diesem Kommentar
Auf anderen Seiten teilen

<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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von Toothrot
Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...