Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: Die selektierten Felder soll er sich merken

  1. #1
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719

    Die selektierten Felder soll er sich merken

    Hallo,
    in einer mysql Datenbank habe ich eine Tabelle für das Obst.

    ID Obst

    1 Erdbeere
    2 Apfel
    3 Birne
    4 Orange
    5 Himmbeere


    Nun gebe ich den Inhalt in einem Formular/Mehrfachauswahlliste aus:
    Code:
        echo "<select size=\"5\" name=\"xxx[]\" class=\"inputbox\" multiple>\n";
    	$sql = mysql_query("SELECT id_obst,obst FROM obst_tabelle");
    	while($daten=mysql_fetch_array($sql))
          {
    	  echo "<option "; 
    	  echo "value=\"$daten[0]\">";
    	  echo "$daten[1]";
    	  echo "</option>\n";
    	  }
    	echo "</select>\n";
    Wenn man das Formularfeld abschickt dann wird die gleiche PHP Seite wieder aufgerufen. Ich möchte nun erreichen das sich das System die vom User bereits getroffene Mehrfachauswahl merkt. Daher muss ich mein Script anpassen:


    Wenn im Array xxx die id_obst vorhanden ist dann schreibe in der WHILE Schleife statt

    echo "<option ";

    den Eintrag

    echo "<option selected";



    Leider weiss ich nicht wie ich das in der WHILE Schleife in ZUsammenhang mit dem Array umsetzen kann. Kann mir jemand helfen?

  2. #2
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Hallo

    versuchs mal so:
    PHP-Code:
    echo "<select size=\"5\" name=\"xxx[]\" class=\"inputbox\" multiple>\n";
            
    $sql mysql_query("SELECT id_obst,obst FROM obst_tabelle");
            while(
    $daten mysql_fetch_array($sql)) {
              echo 
    "<option";
              echo 
    " value=\"" .$daten['id_obst']. "\""
                      if(
    $daten['obst'] == $_POST['obst']) {
                          echo 
    " selected=\"selected\"";
                      }
              echo 
    ">";
              echo 
    "</option>\n";
            }
     echo 
    "</select>\n"
    ohne Gewähr! (bin noch nicht ganz wach )

    Gruß Rizzo

  3. #3
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Der Vergleich auf Obst kann eigentlich nicht, da obst nicht in $_POST steht, sondern die ID.
    Weiterhin ist das Statement für selected falsch.

    So sollte es gehen
    PHP-Code:
    echo "<select size=\"5\" name=\"xxx[]\" class=\"inputbox\" multiple>\n";
    $sql mysql_query("SELECT id_obst,obst FROM obst_tabelle");
    while(
    $daten mysql_fetch_array($sql)){
      echo 
    "<option value=\"$daten[id_obst]\" ";
      echo 
    $daten[id_obst] == $_POST[id_obst] ? "selected" "";
      echo 
    ">$daten[obst]</option>\n";
    }
    echo 
    "</select>\n"
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  4. #4
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von webcreate
    Der Vergleich auf Obst kann eigentlich nicht, da obst nicht in $_POST steht, sondern die ID.
    [edit]
    Stimmt, hab ich nicht drauf geachtet. Ohne das "value=obst_id" würde es so gehen. Mit der ID muß natürlich die ID geprüft werden. Sorry

    [edit 2]
    wieso ist das statement falsch? einzig die abfrage nach dem obst, statt der obst_id, war falsch, oder was meinst du?

    Gruß Rizzo
    Geändert von phpBuddy (08.04.2006 um 11:59 Uhr)

  5. #5
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Zitat Zitat von Rizzo
    Ohne das "value=obst_id" würde es so gehen.
    Mhh, dann würde aber doch garnichts übergeben werden, was man in $_POST vergleichen könnte.
    Zitat Zitat von Rizzo
    Sorry
    Ist ja nicht schlimm, hast ja auch geschrieben, dass du noch nicht ganz wach bist.

    [Zusatz]
    Du hast geschrieben: echo " selected=\"selected\"";
    Die Angabe "selected" reicht, da muss man keine Zuweisung machen.
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  6. #6
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von webcreate
    Mhh, dann würde aber doch garnichts übergeben werden, was man in $_POST vergleichen könnte.

    Ist ja nicht schlimm, hast ja auch geschrieben, dass du noch nicht ganz wach bist.

    [Zusatz]
    Du hast geschrieben: echo " selected=\"selected\"";
    Die Angabe "selected" reicht, da muss man keine Zuweisung machen.
    Stimmt auch wieder.. Oh Mann, ich sollte die Finger vom Alkohol lassen oder zumindest warten bis der Restalk aufgebraucht und der vollständige Wachzustand erreicht ist, bevor ich etwas in öffentliche Foren schreibe

    @ Zusatz
    Ok, das man keine Zuweisung machen muß ist klar, prinzipiell ist es aber auch nicht schädlich. Deswegen hat mich das "Statement ist falsch" statt " Zuweisung ist unnötig" etwas irritiert.

    Gruß Rizzo

  7. #7
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Zitat Zitat von webcreate
    [Zusatz]
    Du hast geschrieben: echo " selected=\"selected\"";
    Die Angabe "selected" reicht, da muss man keine Zuweisung machen.
    Erläuterung:

    für xhtml muss eine Zuweisung passieren:
    selected="selected"
    checked="checked"
    disabled="disabled"
    etc

    sonst ist es nicht valide

    für html reicht die Angabe ohne Zuweisung aus.

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  8. #8
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Thx Steffen, dass war mir nun nicht wirklich bekannt.
    OK, dann war Rizzos Ansatz sogar besser, ich tue ihm dann nun gleich, leere ne Flasche, ggf. bedenke ich das dann auch
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  9. #9
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Prost Mark, ich leere wohl auch ne Flasche

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  10. #10
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Diese Zeile verstehe ich nun wirklich nicht:

    Code:
    echo $daten[id_obst] == $_POST[id_obst] ? "selected" : "";
    spiezell:

    Code:
    $_POST[id_obst]
    Beim abschicken des Formulars steht die id_obst doch in Form eines Arrays (xxx). Wie kann ich mir die ID aus dem Array holen?

  11. #11
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von dieter99
    Diese Zeile verstehe ich nun wirklich nicht:

    Code:
    echo $daten[id_obst] == $_POST[id_obst] ? "selected" : "";
    spiezell:

    Code:
    $_POST[id_obst]
    Beim abschicken des Formulars steht die id_obst doch in Form eines Arrays (xxx). Wie kann ich mir die ID aus dem Array holen?
    Die Zeile ist eine Kurzschreibform einer if-Abfrage. Die lange Form würde sein
    PHP-Code:
    if($daten[id_obst] == $_POST[id_obst]) {
       echo 
    "selected";
       }else{
       echo 
    "";

    Wobei man auch den else-Teil ganz weg lassen kann.

    Gruß Rizzo

    [edit]
    Zum leichteren merken/lesen kannst Du in Gedanken das ? ersetzen mit if und den : mit else - abgefragt wird was links vom Operator steht, wobei egal ist ob es ein Vergleichsoperator oder eine Zuweisung ist.
    Geändert von phpBuddy (10.04.2006 um 09:50 Uhr)

  12. #12
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Ich glaube du hast mich nicht richtig verstanden. In meinen Listenfeld ist eine Mehrfachauswahl möglich. Wenn der User mehrere Einträge gleichzeitig auswählt, dann wird die id_obst im Array xxx gespeichert. Der Code müßte also in der Form lauten:

    echo $daten[id_obst] == id_obst in ARRAY xxx ? "selected" : "";

  13. #13
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Nein nein Dieter, du verstehst da was nicht richtig.
    Die Listenfelder werden ja in einer while-Schleife erzeugt und da gibt man halt die Array Elemente so aus.
    Es wird mit dieser Abfrage einfach nur das Element auf selected gesetzt, welchens zuvor im Forular ausgewählt wurde, welche ID also in $_POST steht.
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  14. #14
    TP-Insider Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Das Problem ist das ich bestimmte Inhalte bereits in einem Array vorliegen habe. Ich muss daher mit Array`s arbeiten.

    Gehen wir nochmal von den Fall aus das in der Tabelle "obst_tabelle" folgenden Inhalt vorliegen habe:

    1 Erdbeere
    2 Apfel
    3 Birne
    4 Orange
    5 Himmbeere


    Mein Listenmenü erzeuge ich mit

    Code:
        echo "<select size=\"5\" name=\"xxx[]\" class=\"inputbox\" multiple>\n";
    	$sql = mysql_query("SELECT id_obst,obst FROM obst_tabelle");
    	while($daten=mysql_fetch_array($sql))
          {
    	  echo "<option "; 
    	  echo "value=\"$daten[0]\">";
    	  echo "$daten[1]";
    	  echo "</option>\n";
    	  }
    	echo "</select>\n";

    Jetzt habe ich ein Array (Name: testarray) indem 3 Werte gespeichert sind (1 für Erdbeere, 2 für Apfel und 4 für Orange). Im Listenmenü müssen nun alle Einträge vorselektiert sein die im Array vorhanden sind. Ich dachte daher an folgenden Code:


    Code:
    Code:
        echo "<select size=\"5\" name=\"xxx[]\" class=\"inputbox\" multiple>\n";
    	$sql = mysql_query("SELECT id_obst,obst FROM obst_tabelle");
    	while($daten=mysql_fetch_array($sql))
                 {
    	  echo "<option "; 
    	  foreach ($testarray as $key) 
    		{
    		if($daten[0] == $key)
    			{
    			echo "selected ";
    			}
    		}
    	  echo "value=\"$daten[0]\">";
    	  echo "$daten[1]";
    	  echo "</option>\n";
    	  }
    	echo "</select>\n";
    Leider selektiert er mir nur die Orange (also den letzten Eintrag im Array :-((((

  15. #15
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Du überprüfst auch den Schlüssel, nicht den Inhalt des Schlüssels.
    Versuch mal foreach ($testarray as $key=>$value) und in der if-Abfrage kontrollierst Du $value und nicht $key ... oder ... frag innerhalb der while() ab, ob if(in_array($daten[0], $testarray)) echo "selected";
    Geändert von phpBuddy (10.04.2006 um 14:08 Uhr)

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51