andi: kann auf accoc Array nicht zugreifen

Hi,

in meinem Codeschnippsel kann ich in der foreach Schleife nicht auf das $array zugreifen.
Kann mir jemand sagen warum???

$anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
$ergebnis2 = mysql_query($anfrage2);

while($zeile2 = mysql_fetch_assoc($ergebnis2)) {
$array[$zeile2[TestB_AID]] = $zeile2[Wert];
}

foreach($_POST as $key => $value) {
if($key == "TestBDat_ID") {
$TestBDat_ID = $value;
}
print_r($array);
elseif($key != "go" && $key != "write") {
if($value != "" && $array[$key] != $value) {
$anfrage = "INSERT INTO WEB__TESTBoeGEN_Dat__Antworten VALUES ('','$TestBDat_ID','$key','$value','1')";
$ergebnis = mysql_query($anfrage);
}
else {
$anfrage = "UPDATE WEB__TESTBoeGEN_Dat__Antworten SET Wert='$value', DSAend='1' where TestB_AID like '$key'";
$ergebnis = mysql_query($anfrage) or die(mysql_error());
}
}
}

  1. Hello,

    in meinem Codeschnippsel kann ich in der foreach Schleife nicht auf das $array zugreifen.
    Kann mir jemand sagen warum???

    $anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
    $ergebnis2 = mysql_query($anfrage2);

    while($zeile2 = mysql_fetch_assoc($ergebnis2))

    Was bedeutet "... kann ... nicht ... zugreifen" ?

    Ist denn überhaupt ein Ergebnis da?

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      in meinem Codeschnippsel kann ich in der foreach Schleife nicht auf das $array zugreifen.
      Kann mir jemand sagen warum???

      $anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
      $ergebnis2 = mysql_query($anfrage2);

      while($zeile2 = mysql_fetch_assoc($ergebnis2))

      Was bedeutet "... kann ... nicht ... zugreifen" ?

      Ist denn überhaupt ein Ergebnis da?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      das array ist definitiv befüllt das hab ich mit print_r schon überprüft

      Gruß
      Andi

      1. Hello,

        $ergebnis2 = mysql_query($anfrage2);

        while($zeile2 = mysql_fetch_assoc($ergebnis2))

        Was bedeutet "... kann ... nicht ... zugreifen" ?

        Ist denn überhaupt ein Ergebnis da?

        das array ist definitiv befüllt das hab ich mit print_r schon überprüft

        Also es ist sowohl ein Egebnis in $ergebnis als dann auch Werte in $zeile2?

        Und Du möchtest jetzt sicher die Daten aus dem Resultset $ergebnis2 in ein Array überführen, das dann $zeile heißt und nicht nur eine Zeile, sondern alle Zeilen aus $ergebnis2 enthält?

        Und warum machst Du das dann nicht?

        $_daten = array();

        while($_zeile = mysql_fetch_assoc($ergebnis2))
          {
            $_daten[] = $_zeile;
          }

        Man kann das auch in einer Programmzeile machen, hat dann aber als letztes Array-Element in $_daten anstelle eines Zeilenarrays nur false drinstehen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. mein Problem liegt nicht darin die Resultate in das array zu überführen sondern in der foreach Schleife darauf zu zugreifen...

          Gruß
          Andi

  2. $anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
    $ergebnis2 = mysql_query($anfrage2);

    Variablen müssen zwar in PHP nicht initialisiert werden, besser ist das aber:

    $array = array();

    damit ist das $array auf jeden Fall da, auch wenn die Abfrage kein Ergebnis liefert.

    while($zeile2 = mysql_fetch_assoc($ergebnis2)) {
    $array[$zeile2[TestB_AID]] = $zeile2[Wert];
    }

    Sind TestB_AID und Wert Konstanten? siehe http://de3.php.net/manual/de/language.types.array.php#language.types.array.donts

    print_r($array);

    es gibt da auch noch var_dump() das zeigt dir auch noch den Typ und andere wichtige Hinweise an.

    Außerdem ist es beim PHP-Programmieren immer sinnvoll, error_reporting(E_ALL) zu setzen.

    1. $anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
      $ergebnis2 = mysql_query($anfrage2);

      Variablen müssen zwar in PHP nicht initialisiert werden, besser ist das aber:

      $array = array();

      mein Problem liegt nicht darin, dass das array nicht da ist, sondern dass ich in der foreach Schleife nicht darauf zugreifen kann...
      das array ist definitiv da und befüllt

      damit ist das $array auf jeden Fall da, auch wenn die Abfrage kein Ergebnis liefert.

      while($zeile2 = mysql_fetch_assoc($ergebnis2)) {
      $array[$zeile2[TestB_AID]] = $zeile2[Wert];
      }

      Sind TestB_AID und Wert Konstanten? siehe http://de3.php.net/manual/de/language.types.array.php#language.types.array.donts

      print_r($array);

      es gibt da auch noch var_dump() das zeigt dir auch noch den Typ und andere wichtige Hinweise an.

      Außerdem ist es beim PHP-Programmieren immer sinnvoll, error_reporting(E_ALL) zu setzen.

      1. mein Problem liegt nicht darin, dass das array nicht da ist, sondern dass ich in der foreach Schleife nicht darauf zugreifen kann...
        das array ist definitiv da und befüllt

        print_r($array);

        Schau doch noch mal genau hin, wo das print_r steht. zwischen 'if() {}' und 'elseif()' hat das nichts zu suchen. Das wird dir doch sicher auch von einer Fehlermeldung so gesagt.

        Außerdem ist es beim PHP-Programmieren immer sinnvoll, error_reporting(E_ALL) zu setzen.

        Schalte das doch mal ein (setze es als erste Zeile in dein Programm)!

        1. oh man, das war ein Kapitaler....
          ich sollte in der php.ini die Fehlermelung aktivieren...

          Danke
          Andi

          1. Hello,

            ich sollte in der php.ini die Fehlermelung aktivieren...

            Die kannst Du auch in der httpd.conf, den vHosts oder in einer .htaccess verändern.
            Du könntest also Für dein Testverezeichnis alles einschalten, was sinnvoll ist und im Produktivbereich nur in einer Datei loggen lassen.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
    2. Hello,

      while($zeile2 = mysql_fetch_assoc($ergebnis2)) {
      $array[$zeile2[TestB_AID]] = $zeile2[Wert];
      }

      ...außerdem sollten die Derefernzierungs-Bezeicher (bzw. Elementenamen) des Arrays immer in Häkchen stehen, wenn es nicht wirklich Konstanten oder Variablennamen sind.

      $array[$zeile2['TestB_AID']] = $zeile2['Wert'];

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  3. Hello,

    Hi,

    in meinem Codeschnippsel kann ich in der foreach Schleife nicht auf das $array zugreifen.
    Kann mir jemand sagen warum???

    $anfrage2 = "SELECT * FROM WEB__TESTBoeGEN_Dat__Antworten where TestBDat_ID like '$TestBDat_ID'";
    $ergebnis2 = mysql_query($anfrage2);

    while($zeile2 = mysql_fetch_assoc($ergebnis2))

    {

    $array[$zeile2[TestB_AID]] = $zeile2[Wert];
    }

    foreach($_POST as $key => $value)

    {

    if($key == "TestBDat_ID")

    {

    $TestBDat_ID = $value;
      }

    print_r($array);

    hier fehlt was.

    elseif($key != "go" && $key != "write")

    {
          if($value != "" && $array[$key] != $value)
          {
            $anfrage = "INSERT INTO WEB__TESTBoeGEN_Dat__Antworten VALUES ('','$TestBDat_ID','$key','$value','1')";
            $ergebnis = mysql_query($anfrage);
          }
          else
          {
            $anfrage = "UPDATE WEB__TESTBoeGEN_Dat__Antworten SET Wert='$value', DSAend='1' where TestB_AID like '$key'";
            $ergebnis = mysql_query($anfrage) or die(mysql_error());
          }
        }
      }
    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau