Problem mit sql join

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

  • Problem mit sql join

    Ich versuche mich gerade an sql join und ich werde einfach nicht einig

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /test/httpdocs/map.php on line 28

    Ok also keine daten im array.

    PHP-Code:
    $result mysql_query("
    SELECT a.hnr, a.besitzer, a.gebaeude, c.id as pid, c.status , c.name
                           FROM ttl_map a 
                           LEFT JOIN ttl_gebaeude b ON b.id = a.gebaeude
                           WHERE  a.hnr > 100 ORDER BY c.time "
    );
              while (
    $row mysql_fetch_array($result))
                    {
                    
    $zaehler++;
                    
    $array[$zaehler] = array(
                    
    $row['hnr']
                   
    // und halb noch die ganzen anderen abgefragten zellen
                                             
    );
     echo 
    $array[$zaehler]['hnr'];
                    } 
    Was ich eigentlich möchte das er aus "ttl_map" mir alle daten ausließt deren hnr wert kleiner als 100 ist.
    dann soll er mir aus "ttl_gebaeude" status und name auslesen auslesen wo gebaeude =id ist.
    Das ganze dann schön in den array Packen aber ich glaub das sollte nicht das Problem sein.


    edit in php tag geandert sry und bitte in sql verschieben
    Zuletzt geändert von Bart; 14.02.2007, 00:45.

  • #2
    1.) Lies endlich unsere Regeln! Da steht: mysql_error() benutzen!
    2.) Da steht auch: die php-tags benutzen, nicht die zitat-tags!
    3.) Falsches Forum!
    4.) Du hast keine Tabelle mit dem alias c - woher kommt c.id?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Ok mit c das ist behoben und den mysql_error auch wieder eingebaut.

      Jetzt erhalte ich folgende auf dem Monitor:

      Fehler: 0 -

      PHP-Code:
      $result mysql_query("SELECT a.hnr, a.besitzer, a.gebaeude, c.id, c.status , c.name
                             FROM ttl1_map a
                             LEFT JOIN ttl_gebaeude c ON c.id = a.gebaeude
                             WHERE  a.hnr > 100"
      );
                             echo 
      "Fehler: " mysql_errno() . " - " mysql_error() . "\n";
                while (
      $row mysql_fetch_array($result))
                      {
                      
      $zaehler++;
                      
      $array[$zaehler] = array(
                      
      $row['hnr']
                                               );
       echo 
      $array[1]['hnr'];
                      } 
      Zwar nichts mehr von array Leer oder so aber halb gar nichts an ausgabe.

      Kommentar


      • #4
        print_r($array) wird dich erhellen.

        Kommentar


        • #5
          Hättest du das error_reporting auch eingestellt, wie in den Regeln beschrieben, hättest du auch eine Meldung wegen Zugriff auf einen nicht definierten Index bekommen.
          (Aber sowas mal komplett zu lesen, übersteigt ja offenbar die Aufmerksamkeitsspanne der meisten.)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Entschuldige wahsaga das man wenn man gerade seit einem halben Jahr über echo "hallo welt"; hinaus ist nicht immer gleich an alles denkt.

            Ich hoffe aber trotzdem das noch jemand bereit ist mir zu helfen.

            PHP-Code:
            <html>
            <head>
              <title>Test</title>
            </head>
            <body>
            <?
            error_reporting(E_ALL);
            include "./connect.php";
            $array = array();
            $result = mysql_query("SELECT a.hnr, a.besitzer, a.gebaeude, c.id, c.status , c.name
                                   FROM ttl1_map a
                                   LEFT JOIN ttl_gebaeude c ON c.id = a.gebaeude
                                   WHERE  a.hnr > 100");
                                   echo  mysql_error();
                      while ($row = mysql_fetch_array($result))
                            {
                            $zaehler++;
                            $array[$zaehler] = array(
                            $row['hnr']
                                                     );
             echo $array[1]['hnr'];
                            }
              print_r($array);
            ?>
            </body>
            </html>
            Error_reporting schmeißt mir nichts aus

            Print_r($array) gibt folgende ausgabe:
            Array ( )

            Das zeigt mir höchstens das, das Array leer zu sein scheint, nur wieso ?

            Kommentar


            • #7
              was gibt dir denn ein einfaches var_dump($row); in der while schleife aus.
              Bitte Beachten.
              Foren-Regeln
              Danke

              Kommentar


              • #8
                Original geschrieben von Bart
                Entschuldige wahsaga das man wenn man gerade seit einem halben Jahr über echo "hallo welt"; hinaus ist nicht immer gleich an alles denkt.
                Wenn du aufgefordert wirst, die Regeln zu lesen - dann darf doch wohl erwartet werden, dass du das auch einmal komplett machst.

                Error_reporting schmeißt mir nichts aus

                Print_r($array) gibt folgende ausgabe:
                Array ( )
                Dann dürfte es wohl daran liegen, dass in deine While-Schleife gar nicht hineingegangen wird - sonst müsste das echo eine Fehlermeldung geben.
                Also liefert dein Select wohl gar keine Daten. (Test über mysql_num_rows)
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  var_dump gibt mir leider absolut nichts aus.
                  Irgendwo muss bei meinem versuch mit der DB abfrage aber ein fehler drinnen sein (vermute) weil wenn ich die Tabellen einzeln abfrage bekomm ich alle daten ausgelesen.

                  Kommentar


                  • #10
                    Also liefert dein Select wohl gar keine Daten. (Test über mysql_num_rows)
                    Also die Fehlermeldung besagt doch bereits, dass $result keine gültige Resultatressource ist. Der geht garantiert nicht in die Schleife rein.
                    @topicstarter
                    PHP-Code:
                    mysql_query("SELECT a.hnr, a.besitzer, a.gebaeude, c.id, c.status , c.name
                                           FROM ttl1_map a
                                           LEFT JOIN ttl_gebaeude c ON c.id = a.gebaeude
                                           WHERE  a.hnr > 100"
                    ) OR die(mysql_error());
                                           
                    //echo  mysql_error(); 
                    das müsste mehr Infos liefern.
                    Das zeigt mir höchstens das, das Array leer zu sein scheint, nur wieso ?
                    Dürfte an der Eingangs von dir geschilderten Fehlermeldung liegen.

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      Also die Fehlermeldung besagt doch bereits, dass $result keine gültige Resultatressource ist.
                      Das sollte ja inzwischen erledigt sein - mysql_error wurde eingebaut, Tippfehler behoben.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X