Ich habe da oben den Link zum Handbuch gepostet. Dort findest du 4 Beispiele, die alle mit selected arbeiten. Abgucken erlaubt!
Smarty und das selected in einem <select> feld
Einklappen
X
-
Das Bild zeigt dir was erzeugt wird. so die selektfelder heißen wie das jeweilige Rennen, in diesem Fall 9 bzw 3 es können aber auch noch mehr sein. Wenn was selektiert ist kann ich darauf mittels $_POST[9] zugreifen.
Das Array für die ausgabe wird mittels einer datenbankabfrage generiert
PHP-Code:$selectedRennen = array();
//falls checkboxen ausgewählt sind
if(isset($_POST['rennen'])){
$selectedRennen = $_POST['rennen'];
}
$sql = "SELECT Nr,Bezeichnung,Leistungsgruppen
FROM rennen WHERE Klasse='".$klasse."' AND
Nr!='".$rennen."';";
$result = mysql_query($sql) OR die(mysql_error());
$rennen = array();
while($row=mysql_fetch_assoc($result)){
$checked ="";
$select ="";
//falls das jetztige Rennen einem selektieretem Rennen entspricht
//soll es wieder ausgewählt sein
if(isset($selectedRennen[$row['Nr']])){
$checked = "checked";
}
//falls eine Leistungsgruppe zu dem jetztigen Rennen ausgewählt wurde
//soll dieses wieder selektiert werden
if(isset($_POST[$row['Nr']])){
$select = $_POST[$row['Nr']];
}
//Leistungsgruppen ist ein SET
$lg = explode(",",$row['Leistungsgruppen']);
$rennen[] = array("nr"=> $row['Nr'],
"bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
"lg"=> $lg,
"checked"=> $checked,
"select"=> $select);
}
Angehängte DateienZuletzt geändert von krel; 07.06.2007, 11:53.
Kommentar
-
Dein Script ist absolut unübersichtlich:
- nichts eingerückt
- keine Kommentare
- Du mußt zuerst die DB auslesen und das Formular erzeugen
- DEUTLICH davon getrennt machst Du die POST-Auswertung
- Deine DB-Aufbau ist falsch (Stichwort: Normalisierung
benutz keine Werte in einer Zelle die per explode getrennt werden müssen)
Also:
DB ändern und dann nur den Teil machen der das Formular erzeugt
Dann kannst den erzeugten Browser-Quelltext posten.
Die einzelnen Selectfelder müssen <input name="sel[]" beinhalten
-> Arraygrundlagen.
Kommentar
-
wenn nichts angewählt wurde
PHP-Code:<PRE>
array(2) {
[0]=>
array(5) {
["nr"]=>
string(1) "9"
["bezeichnung"]=>
string(34) "9)Jungen achter mit Steuermann(8+)"
["lg"]=>
array(1) {
[0]=>
string(2) "II"
}
["checked"]=>
string(0) ""
["select"]=>
string(0) ""
}
[1]=>
array(5) {
["nr"]=>
string(1) "3"
["bezeichnung"]=>
string(19) "3)Männer Achter(8+)"
["lg"]=>
array(3) {
[0]=>
string(1) "I"
[1]=>
string(2) "II"
[2]=>
string(3) "III"
}
["checked"]=>
string(0) ""
["select"]=>
string(0) ""
}
}
</PRE>
PHP-Code:<PRE>
array(2) {
[0]=>
array(5) {
["nr"]=>
string(1) "9"
["bezeichnung"]=>
string(34) "9)Jungen achter mit Steuermann(8+)"
["lg"]=>
array(1) {
[0]=>
string(2) "II"
}
["checked"]=>
string(0) ""
["select"]=>
string(0) ""
}
[1]=>
array(5) {
["nr"]=>
string(1) "3"
["bezeichnung"]=>
string(19) "3)Männer Achter(8+)"
["lg"]=>
array(3) {
[0]=>
string(1) "I"
[1]=>
string(2) "II"
[2]=>
string(3) "III"
}
["checked"]=>
string(7) "checked"
["select"]=>
string(3) "III"
}
}
</PRE>
PHP-Code:<table id="meldefeld" border="1 cellpadding="1" cellspacing="1" bordercolor="#111111">
<tr>
<td></td>
<td>Rennen</td>
<td>LG</td>
<td></td>
</tr>
<tr>
<td>
<input type="checkbox" name="rennen[9]" value="9" >
</td>
<td>
9)Jungen achter mit Steuermann(8+)
</td>
<td>
<select name="9" size="3">
<option label="II" value="II">II</option>
</select>
</td>
<td></td>
</tr>
<tr>
<td>
<input type="checkbox" name="rennen[3]" value="3" checked>
</td>
<td>
3)Männer Achter(8+)III
</td>
<td>
<select name="3" size="3">
<option label="I" value="I">I</option>
<option label="II" value="II">II</option>
<option label="III" value="III">III</option>
</select>
</td>
<td></td>
</tr>
</table>
Zuletzt geändert von krel; 07.06.2007, 12:29.
Kommentar
-
if(isset($_POST['rennen'])){
$selectedRennen = $_POST['rennen'];
}
$_POST['rennen'] ist ein Array mit den Checkboxen.
(es gibt ja $_POST['rennen'][3] ect.)
in selectedRennen ist also ein Array drin wenn EINE oder mehrere der Chekcboxen aktiviert ist.
*******
scheint soweit alles ok zu sein.
Aber wo prüfst Du ob das Formular abgeschickt wurde ?
Und wo ist Dein assign für Smarty ?
*******
Zuletzt geändert von Koala; 07.06.2007, 13:02.
Kommentar
-
$lg = explode(",",$row['Leistungsgruppen']);
$rennen[] = array("nr"=> $row['Nr'],
"bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
"lg"=> $lg,
"checked"=> $checked,
"select"=> $select);
}
wo kommt $klasse her ?
wieso ist $klasse in {} ??
wieso nennst du das Array $rennen und das POST-Array auch $rennen ?
Benenn $rennen in $smartyrennen um (wenn register globals = on ist, könntest sonst ein Problem haben).
Kommentar
Kommentar