jessy: Werte einer Variable in array schreiben

Hallo!

Ich lese Daten aus der Datenbank, um Auswahllisten mit diesen Werten zu füllen. Von diesen Listen gibt es mehrere, wobei Liste 2 z.B. abhängig von Auswahl in Liste 1 sein soll.
Diese Werte speichere ich wie gesagt in Variablen. Nun möchte ich diese Inhalte in arrays schreiben, um diese dann für das dynamische Generieren der PullDowns zu verwenden. Bei dem was ich verzapft habe, erhalte ich allerdings immer nur den Inhalt: Array ( [0] => $inhalt ), mehrmals hintereinander gereiht ( die Anzahl der Ausgaben scheint mit der Anzahl der Werte übereinzustimmen ). Mir geht es vorerst grundlegend darum zu wissen, ob der richtige Inhalt übernommen / übergeben wurde.
Kann mir bitte jemand auf die Sprünge helfen, was ich falsch gemacht habe.
Dank euch!

$sqlResult = mysql_query('SELECT myfeld FROM testtab');
while ($wert = mysql_fetch_object($sqlResult)) {
       $inhalt = $wert -> myfeld;
       $_SESSION['ausgabe'] = array ('$inhalt');
       print_r ($_SESSION['ausgabe']);
}

Es besteht ein connection zur Datenbank, ich habe eine session gestartet und $_SESSION['ausgabe'] am Anfang der Datei initialisiert.

  1. Hallo jessy,

    $sqlResult = mysql_query('SELECT myfeld FROM testtab');
    while ($wert = mysql_fetch_object($sqlResult)) {
           $inhalt = $wert -> myfeld;
           $_SESSION['ausgabe'] = array ('$inhalt');

    Warum willst Du die ein Array, das genau eine Zeichenkette '$inhalt' enthält in $_SESSION['ausgabe'] schreiben? Siehe dazu auch diese Anmerkungen von mir in einem anderen Thread.

    Sollte $_SESSION['ausgabe'] ein Array werden, das als Elemente die Inhalte der betreffenden Spalte enthält?

    Freundliche Grüße

    Vinzenz

    1. Ich möchte alle Werte einer Spalte (z.B. Namen), die ich aus der Datenbank hole in eine Auswahlliste laden.

      Das pure reinladen hat funktioniert über (darüber waren alle Werte in der Liste):
      echo '<option>'.$_SESSION['ausgabe'].'<br></option>';

      Die Schwierigkeit besteht nun für mich darin, die Listen (Liste 2 und 3) dynamisch zu füllen. Bisher habe ich auch schon Einiges getestet und ausprobiert, aber ich habs einfach nicht auf die Reihe gekriegt. Ich dachte ein array wäre eine weitere Variante, da man dann vielleicht mit Javascript besser darauf zugreifen kann.

      Danke für weitere Hinweise.

  2. Hi jessy,

    $sqlResult = mysql_query('SELECT myfeld FROM testtab');
    while ($wert = mysql_fetch_object($sqlResult)) {
           $inhalt = $wert -> myfeld;
           $_SESSION['ausgabe'] = array ('$inhalt');
           print_r ($_SESSION['ausgabe']);
    }

    Mit array() erstellst du bei jedem Schleifendurchlauf ein neues Array. Verwende

    $_SESSION['ausgabe'][] = $inhalt;

    im den Wert von $inhalt an einer neuen Position im Array $_SESSION['ausgabe'] abzulegen. Zuvor erzeugst du das Array einmal außerhalb der while-Schleife mit

    $_SESSION['ausgabe'] = array();

    was ein leeres Array erstellt. Vermutlich würde es dank dem Type-Chaos von PHP auch funktionieren, wenn du nicht vorher ein leeres Array erstellst, aber ich würde es jedenfalls zum guten Programmierstil zählen, das Array vorher zu initialisieren. Statt dem []-Kürzel, gibt es übrigens auch array_push().

    Viele Grüße,
      ~ Dennis.

    1. Hi!

      Vielen Dank für deine schnelle Antwort!

      Ich habs auch gleich umgesetzt. In der Ausgabe hat sich zwar etwas geändert, allerdings nicht das, was ich mir erhofft hatte. Jetzt habe ich unglaublich viel mehr Datensätze und die Ausgabe sieht etwa so aus:

      Array ( [0] => Array ( [0] => $alterk ) ) oder
      Array ( [0] => Array ( [0] => $alterk ) [1] => Array ( [0] => $alterk ) )

      Also es ist jetzt nicht mehr alles null, aber nicht das gesuchte.

      Mal ne andere Frage (hoffentlich nich zu blöd), wie bekomme ich denn den eigentlichen Wert ausgegeben? Das liegt sicher am Aufruf von print_r?

      Ich bin sehr dankbar für eure Hilfe!
      Schöne Grüßle!

      1. echo $begrüßung;

        Ich habs auch gleich umgesetzt. In der Ausgabe hat sich zwar etwas geändert, allerdings nicht das, was ich mir erhofft hatte. Jetzt habe ich unglaublich viel mehr Datensätze und die Ausgabe sieht etwa so aus:

        Ich kann dir sagen: Du machst etwas verkehrt. Was genau du verkehrt machst, steht in deinem Code. Vielleicht solltest du erst einmal mit Arrays und dem Hinzufügen einzelnen Werte üben, bevor du in einer Schleife massenhaft Chaos erzeugst.

        Mal ne andere Frage (hoffentlich nich zu blöd), wie bekomme ich denn den eigentlichen Wert ausgegeben? Das liegt sicher am Aufruf von print_r?

        Welchen definierst du als "eigentlichen Wert"? print_r() macht genau das, was es soll: den Inhalt eines Arrays zu Kontrollzwecken ausgeben. Vorher ein <pre> bzw. ein Blick in den Quelltext erhöht dabei die Übersichtlichkeit der Ausgabe.

        echo "$verabschiedung $name";

    2. echo $begrüßung;

      Zuvor erzeugst du das Array einmal außerhalb der while-Schleife mit
        $_SESSION['ausgabe'] = array();
      was ein leeres Array erstellt. Vermutlich würde es dank dem Type-Chaos von PHP auch funktionieren, wenn du nicht vorher ein leeres Array erstellst,

      Das hat mit der eingebauten Typumwandlung PHPs nichts zu tun. Das Feature, das du hier meinst, ist das automatische Anlegen einer Variablen (inklusive Array-Elemente) beim erstmaligen schreibenden Zugriff.

      aber ich würde es jedenfalls zum guten Programmierstil zählen, das Array vorher zu initialisieren.

      Es nicht zu tun, bezeichne ich als Schlamperei, die bei eingeschaltetem register_globals zu den Sicherheitslücken führt, für die dieses Feature statt des Programmierers immer gescholten wird.

      Statt dem []-Kürzel, gibt es übrigens auch array_push().

      Das, so steht es auch im Handbuch, sollte allerdings zugunsten der $var[]-Variante nicht getan werden.

      echo "$verabschiedung $name";