mehrfachselektionen in multiple select

G

Guest

Guest
Ein schönes ding ist die mehrfachselektion in multiple selectboxes.

<form>

//name eigenschaft ist ein array, id aber nicht. wird die id weggelassen, funktioniert's nicht.
<select multiple name="beispiel[]" id="beispiel">
<option value="0"><? echo $option0 ?></option>
<option value="1"><? echo $option1 ?></option>
<option value="2"><? echo $option2 ?></option>
<option value="3"><? echo $option3 ?></option>
</select>
</form>

zum selektieren mit vorgegebenen Werten in einer anderen Seite kann das Array über die ID angesprochen und selektiert werden.

<? $anzahl=count($_POST[beispiel]);
if($anzahl>0){
while($i<$anzahl){
if($_POST['beipiel'][$i]!=''){
echo 'document.form.beispiel.options['.$_POST['beispiel'][$i].'].selected=true;';}
$i++;}}


über die value-eigenschaft werden die option elemente zwar auch markiert, aber nicht selektiert, d.h. sie geben beim abschicken keine werte zurück.


 
ok das es ohne die id nicht geht ist klar, da über diese ID das Javascript auf das Ding zugreifen kann
die ID muß auch kein Array sein

eigentlich sieht ein aktviertes Feld auch bei einer Mehrfachauswahl so aus
CODE <option value="a" selected>1</option>

und die Werte werden dann auch problemlos übergeben.

Also ist es wirklich notwendig das Du die die Werte über eine JS Funktion aktiverst ???
oder könntest Du nicht einfach das gesamte Menü über php erstellen ???

Eventuell könnte es sein das durch das JS auch die Bezeichnung geändert wird
ist zwar unwarscheinlich aber das solltest du einfach mal kontrolieren

einfach mal mit einer while Schleife alle Variablen die übergeben werden anzeigen lasen

CODE while(list($feld, $inhalt) = @each($HTTP_POST_VARS)) {
echo "$feld: $inhalt"";
}

 
ja stimmt, man könnte das auch ohne javascript nur in php schreiben. es wird jedoch dann viel komplizierter, weil die anzahl der übergebenen werte nicht mit der anzahl optionselemente übereinstimmt. dann müsste man zu jeder option in der select box jedesmal alle übergebenen werte durchlaufen lassen.
 
hmm ich glaub nicht das es viel komplizierter wird.

schreib mal kurz woher die Werte kommen die im Auswahlmenü gezeigt werden, und woher die WErte kommen die im auswahlmenü selectiert werden...
 
die werte komme aus einer einfachen suchfunktion und werden dann als $_SESSION(vars) gespeichert und in eine detaillierte suchfunktion übernommen. Sie können aber auch in der detaillierten Suchfunktion geändert werden. Sie werden dann direkt in einer Ergebnisliste für eine sql-abfrage gebraucht. In einer weiteren Rundschreibenfunktion werden sie wieder in den Boxen angezeigt und können bei Bedarf verändert werden. In zwei weiteren Reservierungsfunktionen finden die Werte Eingang in den Email Text und filtern die Emailempfänger heraus. hmm, ziemlich aufwendige Geshcichte und mit Javascript reicht mir jedesmal eine einzige Schleife zum Füllen. Was man weglassen könnte, wäre die php if clause, da theoretisch keine leeren Werte vorhanden sein können, aber irgendwie ist mir das so sicherer.
 
nagut hilft mir jetzt nicht viel weiter, aber nehmen wir mal folgendes an,
die optionswerte die im menü enthalten sind, werden in einem array übergeben, und auch die namen oder ID´s der WErte die aktiviert werden sollen liegen in einem array.

dann solltest du es einfach mit der in_array() funktion probieren damit würde dann ein schleifendurchlauf ausreichen...
 
ja, das würde auch gehen. dann wäre in dem Durchlauf jede option mit dem kompletten array verglichen. warum sträubst du dich denn so gegen das script?
ich muss wech, bis später
 
ich sträube mich generell gegen Javascript, und veruche drauf zu verzichten wenn es geht.

ähnlich ist es auch mit mehrfachen schleifen die nicht sein müssen.

jede unnütze schleife ist eine zusätzliche Serverlast
und ich denke da nicht nur an den Server sonder auch immer an mich.

denn ich selber einige webseiten die auf einen Server eines Providers liegen, also anders gesagt auf diesem Server liegen noch etliche andere Webseiten

und wenn dort jeder mit unnütz vielen schleifen arbeitet, dann wirkt sich das auch negativ auf meine Seite aus....

dazu must du auch mal folgendes bedenken.
jetzt im Moment schreibst Du vielleicht nur kleine Scripte für dich selber.
aber es kann immer mal passieren das jeman ein richtig großes von Dir programmiert haben möchte.

und wenn Du dann mit unnützen schleifen arbeitest, könnte das unter umständen nach hinten losgehen.
Darum lieber gleich von Anfang an versuchen sauber und optimal zu programmieren, denn sowas prägt sich ein...

damit jetzt keine falschen Vorstellungen aufkommen
ich bin kein Proffeioneller Programmer sondern betreibe das auch nur als Hobby und nebenberuflich !!!
 
tja, ich kann php gut mit javascript vereinbaren. die beiden sprachen ergänzen sich m.E. prima.
wenn du andere scripte von mir sehen würdest, würdest du wahrscheinlich kotzen. dann sind in dem o.g. script keine überflüssigen schleifen, sondern die select box wird in einer schleife direkt abgearbeitet und erst noch clientseitig. wenn zu jeder option das ganze $_post-array geprüft werden müsste, ob nicht vielleicht ein passender wert vorhanden sein könnte, würde das meinen server sicherlich mehr belasten. in_array() ist schliesslich auch eine funktion, die abgearbeitet werden muss. hast du eine vorstellung wie? Schliesslich programmiere ich für anwender und für mich selbst.
 
nagut wenn man nur die severlast alleine sieht ist js eine gute lösung

jedoch wenn diese gute Lösung bei nur einem einzigen Besucher nicht funktioniert weil dieser vielleicht einen falschen Browser benutzt oder js gänzlich deaktiert hat.....

 
Nur weil ein paar minimalisierende Exzentriker alte Opera-Versionen benutzen, verzichte ich nicht auf java script. Immerhin gibt's ja auch mögliche Besucher, die über gar keinen Internetanschluss verfügen, und die schreibe ich dann per Post an.
tongue.gif
 
Zurück
Oben