| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

06-06-2007, 21:20
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
Smarty und das selected in einem <select> feld
Hallo, ich arbeite mich derzeit in Smarty ein und versuche jetzt grad ein dynamisches select feld zu erzeugen. Das erzeugen ist kein Problem, doch möchte ich gerne, wenn ein Feld noch nicht ausgefüllt wurde das zuletzt selektierte wieder selektiert wird, was ja über selected ="abc" geht. folgender code:
index.tpl
PHP-Code:
<tr>
<td>
<input type="checkbox" name="rennen[{$rennen.nr}]" value="{$rennen.nr}" {$rennen.checked}>
</td>
<td>
{$rennen.bezeichnung}{$rennen.select}
</td>
<td>
<select name="{$rennen.nr}" size="3">
{html_options values=$rennen.lg output=$rennen.lg selected="{$rennen.select}" }
</select>
</td>
<td>{$rennen.fehler}</td>
</tr>
index.php
PHP-Code:
$rennen[] = array("nr"=> $row['Nr'],
"bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
"lg"=> explode(",",$row['Leistungsgruppen']),
"checked"=> $checked,
"select"=> $select);
das ganze wird in der PHP datei mittels eine while schleife erzeugt und dann in der tpl mittels foreach ausgegeben, für das $rennen.checked funktioniert es auch nur funktioniert dieser Teil noch nicht
{html_options values=$rennen.lg output=$rennen.lg selected="{$rennen.select}" }
es wird einfach nichts ausgewählt, obwohl an dieser Stelle {$rennen.bezeichnung}{$rennen.select}
eindeutig ein das richtige ausgegeben wird.Der erzeugte Quellcode:
PHP-Code:
<tr>
<td>
<input type="checkbox" name="rennen[3]" value="3" >
</td>
<td>
3)Männer Achter(8+)II
</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>
</tr>
jemand ne Idee wieso ich nicht dynamisch selektieren kann? direkt eingegeben funktioniert das ganze
mfg
|

06-06-2007, 22:30
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
Dann wirst du jetzt mal schön debuggen und gucken wo $checked welche Werte hat.
|

06-06-2007, 22:35
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
es geht doch gar nicht um das $checked sondern um das $rennen.select und das hat an der richtigen Stelle ja den richtigen Wert, denn sonst würde hier:
tpl=>{$rennen.bezeichnung}{$rennen.select}
erzeugter Code =>3)Männer Achter(8+)II
daher ist es da auf jeden Fall da. nur wenn ich es hier einfüge
{html_options values=$rennen.lg output=$rennen.lg selected="{$rennen.select}" }
wird es anscheinend nicht erkannt..
es ist doch möglich an dieser Stelle eine Variable zu setzen, oder??
mfg
EDIT:
das "II" kommt dann aus dem {$rennen.select}
wieso wird es bei den html_options nicht erkannt
Geändert von krel (06-06-2007 um 22:44 Uhr)
|

06-06-2007, 22:47
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
 Dann geht es eben und eine andere Variable. Debugge und prüfe was die Variablen beinhalten.
PHP-Code:
"checked"=> $checked,
"select"=> $select
EDIT: weil dort selected stehen muss und zwar genau bei dem das ausgewählt werden soll. -> HTML
|

06-06-2007, 22:52
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
es stimmt doch auch alles
PHP-Code:
$rennen[] = array("nr"=> $row['Nr'],
"bezeichnung"=> $row['Nr'].")".$row['Bezeichnung']."(".$klasse.")",
"lg"=> explode(",",$row['Leistungsgruppen']),
"checked"=> $checked,
"select"=> $select);
echo "<PRE>".print_r($rennen)."</PRE>";
ergibt folgendes nach dem abschicken des formulars und dem anklicken der zweiten Checkbox und der auswahl im zweiten SelectFeld
Array
(
[0] => Array
(
[nr] => 3
[bezeichnung] => 3)Männer Achter(8+)
[lg] => Array
(
[0] => I
[1] => II
[2] => III
)
[checked] =>
[select] =>
)
[1] => Array
(
[nr] => 15
[bezeichnung] => 15)Männer achter(8+)
[lg] => Array
(
[0] => I
[1] => II
[2] => III
)
[checked] => checked
[select] => II
)
)
es muss ja auch das richtige drin stehen sonst würde ja bei einem {$rennen.select} in der tpl vor dem selectFeld auch nicht "II" ausgegeben werden, RICHTIG?
mfg
|

06-06-2007, 23:37
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
|

07-06-2007, 09:26
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
jaja das man das so mittels html direkt macht ist mir klar aber bei Smarty macht man das in dem man das Value angibt siehe:
http://smarty.php.net/crashcourse.php
viertes Beispiel
mfg
|

07-06-2007, 09:57
|
|
Koala
PHP Junior
|
|
Registriert seit: Jan 2006
Beiträge: 887
|
|
mal auf das Beispiel bezogen:
PHP-Code:
include('Smarty.class.php');
// create object
$smarty = new Smarty;
// assign options arrays
$smarty->assign('id', array(1,2,3,4,5));
$smarty->assign('names', array('bob','jim','joe','jerry','fred'));
// hier ermittelst Du die Option die selected sein soll
$number = $_POST['user'];
// Wert der selektierten Option der Smartyvariablen "sel" zuweisen
$smarty->assign('sel', $number);
// display it
$smarty->display('index.tpl');
// in der index.tpl:
<select name=user>
{html_options values=$id output=$names selected=$sel}
</select>
|

07-06-2007, 10:12
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
ja ok soweit hab ich das ganze jetzt verstanden. Ich versteh jetzt leider nur noch nicht wie ich das ganze in einem Array mache, denn ich habe ja mehrere select felder. Mal das Bsp von oben betrachtet so besteht mein select Feld aus folgenden Werten
[lg] => Array
(
[0] => I
[1] => II
[2] => III
)
das ist gleichzeitig ausgabe und value
wenn ich jetzt in meiner tpl folgendes schreibe selected="I" dann wird "I" vorselektiert. wie ist denn jetzt der zugehörige key? der von [lg] funktioniert nicht...
mfg
|

07-06-2007, 10:22
|
|
Koala
PHP Junior
|
|
Registriert seit: Jan 2006
Beiträge: 887
|
|
mehrere Selectfelder ?
Dann hast vermutlich ein mehrdimensionales Array.
Wenn Du damit nicht umgehn kannst, dann lern die Array-Grundlagen.
http://tut.php-q.net/array.html
Ich mach jedenfalls nicht die Arbeit für Dich und schreib Dir Dein Script.
Tips hast Du genügend bekommen - man muß Antworten eben auch verstehen können.
|

07-06-2007, 10:35
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
Es hat auch niemand behauptet, dass du mein Script schreiben sollst. Ich wollte nur ne Hilfe haben welchen Key ich verwenden muss. Denn sowohl 0-2 als auch I-III funktioniert nicht und das sind für mich die beiden Varianten.
danke
|

07-06-2007, 10:46
|
|
Koala
PHP Junior
|
|
Registriert seit: Jan 2006
Beiträge: 887
|
|
Du mußt den richtigen key nehmen - je nachdem welches Feld Du brauchst - ist doch logisch oder ?
Bei mehreren Selectfeldern hast auch mehrere Keys - auch logisch ?
Bei mehreren möglichen selektierten Optionsfeldern (je Select ein selektiertes Optionsfeld) hast mehrere Keys die zu den Selectarrays gehören welche wiederum in einem Array sind.
Nicht verstanden ?
Eben - deswegen hab ich den Link zum Tutorial gepostet.
Aber Du reitest lieber auf meiner Bemerkung rum, daß ich Dir Dein Script nicht schreib, anstatt den Umgang mit Arrays zu lernen.
In der Zeit in der Du hier postest, hättest schon ein bißchen was lernen können.
Aber wie Du meinst - warte halt bis jemand kommt und Dir genau sagt wo was hingeschrieben werden muß.
Viel Spaß beim warten.
*******
ich seh gerade was für Zeug Du schreibst:
Zitat:
|
denn ich habe ja mehrere select felder
|
Das ist doch Quark - Du hast mehrere Optionsfelder - nicht mehrere Selektfelder !
Ich nehm das von vorhin zurück:
Mach kein php-Grundlagentutorial, sondern ein html-Tutorial !
Und zu diesem hier:
Zitat:
[lg] => Array
(
[0] => I
[1] => II
[2] => III
)
...
wenn ich jetzt in meiner tpl folgendes schreibe selected="I" dann wird "I" vorselektiert. wie ist denn jetzt der zugehörige key?
|
Tja - wie lautet bei obigem Array wohl der key der zu "I" gehört ?
Mach das http://tut.php-q.net/ - da steht doch wie man den Key zu einem Wert findet !
Geändert von Koala (07-06-2007 um 10:53 Uhr)
|

07-06-2007, 11:02
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
nein nein, ich habe schon mehrere select Felder mit jeweils maximal 3 Optionen, ich hab jetzt nochmal folgendes ausprobiert und das funkioniert einwandfrei:
index.php
PHP-Code:
$lg = array("I","II","III");
$smarty->assign("lg",$lg);
if(isset($_POST['leistungsgruppe'])){
$smarty->assign("selectedlg",$_POST['leistungsgruppe']);
}
die index.tpl
PHP-Code:
<select name="leistungsgruppe" size="3">
{html_options values=$lg output=$lg selected="$selectedlg"}
</select>
also ist wieder value und output gleich. Also steht jetzt in $_POST['leistungsgruppe'] entweder "I","II" oder "III" gleiches gilt wenn ich mehrere Selectfelder habe. Diese erzeuge ich dann mittels foreach in der tpl wie oben beschrieben da fehlt nur das {foreach from=$rennen item=rennen} und {/foreach} und da sollte ich doch dann auch "I","II" oder "III" verwenden können. Es funktioniert ja auch wenn ich eines von diesen dreien direkt in die tpl eingebe
z.B:
PHP-Code:
<select name="{$rennen.nr}" size="3">
{html_options values=$lg output=$lg selected="I"}
</select>
funktioniert
|

07-06-2007, 11:12
|
|
Koala
PHP Junior
|
|
Registriert seit: Jan 2006
Beiträge: 887
|
|
Deine Selectfelder müssen sich im Namen unterscheiden.
Wo und wie fragst Du denn die POST-Werte für die 3 Felder ab und wie sind die Namen der select-Felder ?
Du hast normalerweise ein Array mit den 3 Selectfeldern und in diesem Array befinden sich die 3 Arrays mit den Optionsfeldern.
Das ergibt also ein foreach innerhalb eines anderen foreach um das gewählte Optionsfeld bestimmen zu können.
Innerhalb der äußeren foreach werden die 3 Arrays für Smarty erzeugt.
Hast Du das jetzt begriffen ?
Hast Du inzwischen das Tutorial gemacht ?
Meinst Du ich würd das empfehlen wenn es nicht nötig wär ?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|