Lynky: Leeres Array

Frohen Samstag erstmal :)

Habe in meiner Suchroutine eine Query und lese die Werte mit "mysql_fetch_assoc" in ein Array ein. Leider kann ich die darin enthaltenen Spalten später nicht über den Index (Key) ansprechen.
Was habe ich falsch gemacht? Bzw. wie kann ich den Code ändern, daß ich später über den Index auf die rows zugreifen kann?

<?

...

While ($AlleDtNamen_array = mysql_fetch_assoc($res_DtNamen))
        {

For ($i2 = 0; $i2 < $AnzSuchStr; $i2++)     // Suchen...
            {
              $Wert     = StrToUpper($AlleDtNamen_array["name_dt"]);
              $SuchWert = StrToUpper($SuchStrTeile[$i2]);
              $Pos = StrPos($Wert, $SuchWert);

if (!($Pos === false))
                {
                  $hit_array["hits"][$i1] = $hit_array["hits"][$i1]+1;
                  echo "<BR>".$AlleDtNamen_array["name_dt"]." Hits: ".$hit_array["hits"][$i1];
                }  /* if-end */

}  /* for-end */

$i1++;

}  /* while-end */

$AlleDtNamen_array["name_dt"][0];

?>

Danke für jede Hilfe,
Grüsse,

Lynky

  1. Sorry, letzte Zeile lautet natürlich so:

    ...

    echo $AlleDtNamen_array["name_dt"][0];

    ?>

    Copy-Paste-Fehler *g*

  2. hi,

    Habe in meiner Suchroutine eine Query und lese die Werte mit "mysql_fetch_assoc" in ein Array ein. Leider kann ich die darin enthaltenen Spalten später nicht über den Index (Key) ansprechen.

    was heisst hier "später" in diesem zusammenhang?
    klappt es schon in der while-schleife nicht, oder erst nachher bei dem echo nach der while-schleife?

    Was habe ich falsch gemacht?

    ich bin mir nicht ganz sicher, aber ich denke mit

    While ($AlleDtNamen_array = mysql_fetch_assoc($res_DtNamen))

    erzeugst du eben _kein_ array, sondern belegst nur die variable $AlleDtNamen_array jedesmal _neu_ mit dem wert der aktuellen zeile aus dem mysql-ergebnis.

    Bzw. wie kann ich den Code ändern, daß ich später über den Index auf die rows zugreifen kann?

    ich denke, dazu müsstest du

    While ($AlleDtNamen_array[] = mysql_fetch_assoc($res_DtNamen))

    verwenden, damit weiss php, dass es die neuen wert jeweils als neue array-elemente hinzufügen soll.
    anmerkung: ich rede hier jetzt übrigens von der ersten dimension des arrays, nicht der zweiten. die zweite wäre dann die mit den tabellen-spaltennamen als index ["name_dt"].

    du müsstest dann allerdings auch das ansprechen des arrays innerhalb der while-schleife anpassen, so dass du den index der ersten dimension noch dazu nimmst.

    oder aber, du speicherst das ergebnis von mysql_fetch_assoc() innerhalb der while-bedingung zunächst in einer weiteren temporären variablen,
    While ($AlleDtNamen_temp = mysql_fetch_assoc($res_DtNamen))
    und erzeugst innerhalb der while-schleife dann jeweils eine neue zeile deines arrays,
    $AlleDtNamen_array[] = $AlleDtNamen_temp;
    und alle weiteren zugriffe auf $AlleDtNamen_array _innerhalb_ der while-schleife werden durch zugriffe auf $AlleDtNamen_temp ersetzt.

    _nach_ der while-schleife müsstest du dann in $AlleDtNamen_array[] ein wirkliches array zur verfügung haben.

    gruss,
    wahsaga

    1. *freu*

      Hi,

      Du hattest Recht, er hat die Variable immer wieder überschrieben mit der aktuellen Row.
      Hab das Problem jetzt etwas unelegant mit einem "array_push" innerhalb der While-Schleife gelöst. Dabei habe ich ein neues Array verwendet.

      Vielen Dank,

      Lynky