Selectfeld und $_POST

Lektor21

Erfahrenes Mitglied
Hallo!

Ich habe ein Selectfeld;

PHP:
<select name="user_support" onchange="this.form.submit()" size="10" style="width: 170px; font-family: Arial;">
<?php 

$SQL_statement="SELECT `user` FROM `support` ORDER BY `id`"; 
$resultset=mysql_query($SQL_statement); 
while($data=mysql_fetch_array($resultset)){ 
echo "<option value=\"$data[0]\">$data[0]</option>";

}
  
mysql_close(); 
?> 
</select>

Und zwar wird die Seite neu geladen beim Klick auf einen User um dessen Daten abzurufen und in Formularfeldern auszugeben!

Wenn es aber neu geladen wird, ist dann der merkierte User nicht mehr markiert! Wie kann ich das lösen, dass nach dem Neuladen der Seite der User immernoch markiert ist?

Ich habe sowas schon einmal benutzt:

PHP:
<option value="01:30" <?=$wartung_from_time == "01:30" ? "selected" : "";?>>01:30</option>

Weiß aber leider nicht wie ich das in meins einbauen kann! :confused:
 
PHP:
<select name="user_support" onchange="this.form.submit()" size="10" style="width: 170px; font-family: Arial;">
<?php 
if(!empty($_POST['user_support']))
{
  print '<option value="'.$_POST['user_support'].'">'.$_POST['user_support'].'</option>';
}
$SQL_statement="SELECT `user` FROM `support` ORDER BY `id`"; 
$resultset=mysql_query($SQL_statement); 
while($data=mysql_fetch_array($resultset)){ 
echo "<option value=\"$data[0]\">$data[0]</option>";

}
  
mysql_close(); 
?> 
</select>

Wenn ich dich richtig verstanden habe, sollte das so funktionieren.
 
besser:

Code:
$selected = isset($_POST['user_support']) ? $_POST['user_support'] : null;

foreach(mysql_fetch_array($resultset) AS $_key => $_value){ 
    echo "<option value=\"".$_key."\" ".($_value['user']==$selected?"selected":null).">$_value['user']."</option>";
}
(nicht validiert)

/edit: Array falsch aufgelöst, sollte nun korrekt sein

Gruß tyg3r
 
Zuletzt bearbeitet:
besser:

Code:
$selected = isset($_POST['user_support']) ? $_POST['user_support'] : null;

foreach(mysql_fetch_array($resultset) AS $_key => $_value){ 
    echo "<option value=\"".$_key."\" ".($_value['user']==$selected?"selected":null).">$_value['user']."</option>";
}
(nicht validiert)

/edit: Array falsch aufgelöst, sollte nun korrekt sein

Gruß tyg3r

Deins ist aber wesentlich leistungsfordernder.
Bei mir wird nur eine Prüfung gemacht, bei dir werden X Prüfungen gemacht (je nachdem wieviele User es in der Datenbank gibt).
 
Nein, er greift ja auf das gleiche Resultat zurück, mit dem er die Select-Felder schreibt.
D.h. die Abfrage wird eh vorgenommen.

Ihm geht es ja nur darum, dass das selectierte Feld selectiert "bleibt".
Deshalb einfach nur der Zusatz von "selected" im option-Tag.

Gehört eigentlich eh eher ins HTML Forum ;)

/edit: Habe die foreach Schleife nur alternativ zu seiner while Schleife geschrieben (ich arbeite aus Übersichtsgründen mit foreach).

Gruß
 
Zuletzt bearbeitet:
@ Felix Jakobi

dein Script funktioniert aber nicht!

Es bleibt nicht markiert! :confused:

Wenn ich einen User anklicke, steht der User dann doppelt drin! Ist bestimmt nur nen kleiner Fehler oder
 
Gut, ich habe aufgrund der Performanz in Kauf genommen, dass der User zweimal drinnenbleibt.

Und er bleibt in sofern markiert, dass er an erster Stelle steht.
Ein Fehler ist es sogesehen nicht.

Aber falls du ihn auf keinen Fall doppelt haben möchtest, musst du wohl Tyg3rs Lösung benutzen.
 
Code:
<select name="user_support" onchange="this.form.submit()" size="10" style="width: 170px; font-family: Arial;">
<?php 
// if selected value
$selected = isset($_POST['user_support']) ? $_POST['user_support'] : null;

// query
$SQL_statement="SELECT `user` FROM `support` ORDER BY `id`";
$resultset=mysql_query($SQL_statement); 

// fetch result
while($data=mysql_fetch_array($resultset)){ 
    echo "<option value=\"".$data['user']."\" ".($data['user']==$selected?"selected":null).">".$data['user']."</option>";
}

mysql_close(); 
?> 
</select>
 
Zurück