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
				
					Collapse
				
			
		
	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
es wird also beim generieren des array überprüft ob dei dem jeweiligen Rennen nach dem drücken von submit die checkbox angeklickt ist und ob ein wert aus dem selektfeld selektiert istPHP 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);
}
Attached FilesLast edited by krel; 07-06-2007, 11:53.
Comment
 - 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
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.
Comment
 - 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
wenn nichts angewählt wurde
3->checkbox selected und LG "III" ausgewähltPHP 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>
Last edited by krel; 07-06-2007, 12:29.
Comment
 - 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
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 ?
*******
Last edited by Koala; 07-06-2007, 13:02.
Comment
 - 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
$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).
Comment
 
          
 Moderator
Comment