Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Array auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Array auslesen

    Hallo an alle,

    ich hänge seit heute morgen an einem Problem mit einem Array fest das nicht so will wie ich .

    Hier zunächst ein funktionierendes Script was ich geschrieben habe:

    PHP-Code:
    $sql "SELECT * FROM town WHERE townid = '1'";
    $result mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());

     while (
    $row mysql_fetch_object($result)) {


    $building = array(
                
    "Holz" => "$row->holz",
                
    "Lehm" => "$row->lehm",
                
    "Eisen" => "$row->eisen");

    $anzahl count $building );

    echo 
    "<table border='1'>";

    foreach (
    $building as $build => $x )
    {
        echo 
    "<tr><td>$build </td><td>$x</td></tr>";
    }
     }
    echo 
    "</table>"
    in der DB können nur folgende Werte stehen:

    -1 (soll nicht angezeigt werden)
    1 bis max (soll angezeigt werden, wobei max nach jeder beliebigen Ziffer kommen kann)

    max (soll seperat ausgegeben werden)

    in der db sind folgende werte Hinterlegt:

    holz 10
    lehm 0
    eisen 1

    Hier das script wo ich es unterscheiden möchte:


    PHP-Code:
    $sql "SELECT * FROM town WHERE townid = '1'";
    $result mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());

     while (
    $row mysql_fetch_object($result)) {


    $building = array(
                
    "Holz" => "$row->holz",
                
    "Lehm" => "$row->lehm",
                
    "Eisen" => "$row->eisen");

    $anzahl count $building );

    echo 
    "<table border='1'>";

    foreach (
    $building as $build => $x )
    if(
    $x == "max"
    {
        echo 
    "<tr><td>$build </td><td>Maximum</td></tr>";
    }
    if(
    $x != "-1" && $x != "max"
    {
        echo 
    "<tr><td>$build </td><td>$x</td></tr>";
    }

     }
    echo 
    "</table>"

    Wenn ich dieses Script starte, dann zeigt er mit nur Eisen 1

    alles andere scheint er zu ignorieren.

    ich hoffe Ihr könnt mir sagen wo mein fehler liegt.

    lg Verino


  • #2
    Wirf mal einen Blick hier drauf: Debugging:Standardfehler - PHP.de Wiki.
    http://hallophp.de

    Kommentar


    • #3
      Danke für den Hinweis, habe mir das direkt mal gespeichert um es mir öfters anzusehen.

      Denoch konnt ich so das Problem nicht lösen.

      Ich habe das script etwas geändert:

      PHP-Code:
      $sql "SELECT * FROM town WHERE townid = '1'";
      $result mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());

       while (
      $row mysql_fetch_object($result)) {


      $building = array(
                  
      "Holz" => "$row->holz",
                  
      "Lehm" => "$row->lehm",
                  
      "Eisen" => "$row->eisen");

      $anzahl count $building );

      echo 
      "<table border='1'>";

      foreach (
      $building as $build => $x )
      if(
      $x == "max"
      {
          foreach (
      $building as $build => $x )
          echo 
      "<tr><td>$build </td><td>Maximal</td></tr>";
      }
      if(
      $x != "-1" && $x != "max"
      {
          foreach (
      $building as $build => $x )
          echo 
      "<tr><td>$build </td><td>$x</td></tr>";
      }
      if(
      $x == "-1"
      {
          foreach (
      $building as $build => $x )
          echo 
      "<tr><td>$build </td><td>Maximal</td></tr>";
          }
       }
      echo 
      "</table>"
      so schien es erst zu funktionieren.

      Jedoch wenn nur ein wert im array auf max steht, dann sieht er alle als max an.
      Sind es jedoch unterschiedliche zahlen, so klappt es.

      Das Problem ist nach wie vor, das ich die wert mit -1 und max seperat auslesen möchte.

      kannst du mir da sagen, tutorial oder lösung, um das zu lösen?

      lg

      Kommentar


      • #4
        Du hast da ein paar Schleifen zu viel. Funktioniert es so?

        PHP-Code:
        $sql "SELECT * FROM town WHERE townid = '1'";
        $result mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());

        while (
        $row mysql_fetch_object($result)) {
          
          
          
        $building = array(
                  
        "Holz" => "$row->holz",
                  
        "Lehm" => "$row->lehm",
                  
        "Eisen" => "$row->eisen");
          
          
        $anzahl count $building );
          
          echo 
        "<table border='1'>";
          
          foreach (
        $building as $build => $x ) {
            if(
        $x == "max") {
              echo 
        "<tr><td>$build </td><td>Maximal</td></tr>";
            }
            if(
        $x != "-1" && $x != "max") {
              echo 
        "<tr><td>$build </td><td>$x</td></tr>";
            }
            if(
        $x == "-1") {
              echo 
        "<tr><td>$build </td><td>-1 gefunden</td></tr>";
            }
          }
          
          echo 
        "</table>"

        http://hallophp.de

        Kommentar


        • #5
          Hallo und danke,

          ja, so funktioniert es, kannst du mir evt noch sagen, wo mein fahler lag.
          in meinem ersten thread 2ter Code ist es doch eigentlich identisch.

          lg

          PS: Ich verstehe gerne meine Fehler um daraus zu lernen.

          Kommentar


          • #6
            Das Problem wurde im verlinkten Artikel behandelt. Schuld waren offenbar fehlende geschweifte Klammern, die den Block einschließen müssen, der während des Schleifendurchlaufs ausgeführt werden soll.
            http://hallophp.de

            Kommentar

            Lädt...
            X