mysql_num_rows ?!

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

  • mysql_num_rows ?!

    hallo,

    brauche eure hilfe: und zwar zum thema "mysql_num_rows". ich habe
    folgende funktion programmiert und es wird folgender fehler ausgegeben:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL
    result resource in ...


    es soll ein verzeichnis werden, in das sich verschiedene geschäfte
    eintragen können. der user kann dann nach ort und category suchen. es
    wird zunächst überprüft, ob überhaupt einträge in der tabelle sind, wenn
    nicht, dann "Leider sind zu Ihrer Anfrage keine Einträge vorhanden!".
    Wenn welche vorhanden sind, dann soll überprüft werden, ob direkt
    passende (ort+cat zutreffend) oder gerade noch passende (ort oder cat
    zutreffend) in der der tabelle sind. wenn ja, dann soll dies in einer tabelle
    ausgegeben werden.

    was ist an der funktion falsch??

    danke für eure unterstützung im voraus!!

    gruß,
    alscom

    PHP-Code:
    function showAllEntrys(){
        global 
    $db;
        
    $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
    WHERE ort='
    $ort' AND cat='$cat'",$db);
        
    $ergebnis mysql_query($abfrage);
        
    $zahl mysql_num_rows($abfrage);

        if (
    $zahl 1) { $abfrage1 mysql_query("SELECT id,titel,plz,ort,cat 
    FROM _entrys WHERE ort='
    $ort' OR cat='$cat'",$db);
        
    $ergebnis1 mysql_query($abfrage1);
        
    $zahl1 mysql_num_rows($abfrage1);
        
            if (
    $zahl1 1) {
            echo 
    "<b>Leider sind zu Ihrer Anfrage keine Einträge 
    vorhanden!</b>"
    ;
            }
            else {
                echo 
    "<div align='left'><table border='0' cellpadding='0' 
    cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' 
    width='100%'><tr><td width='20%' style='border-style: solid; border-
    width: 1'><b>ID</b></td><td width='20%' style='border-style: solid; 
    border-width: 1'><b>Titel</b></td><td width='20%' style='border-style: 
    solid; border-width: 1'><b>PLZ</b></td><td width='20%' style='border-
    style: solid; border-width: 1'><b>Ort</b></td><td width='20%' 
    style='border-style: solid; border-width: 1'><b>Branche</b></td></tr>"
    ;
            while(list(
    $id,$titel,$plz,$ort,$cat) = mysql_fetch_row
    ($abfrage1)){
                echo 
    "<tr><td width='20%' style='border-style: solid; 
    border-width: 1'>
    $id</td><td width='20%' style='border-style: solid; 
    border-width: 1'><a href='showdetails.php?
    action=ShowEntry&id=
    $id'>$titel</a></td><td width='20%' style='border-
    style: solid; border-width: 1'>
    $plz</td><td width='20%' style='border-
    style: solid; border-width: 1'>
    $ort</td><td width='20%' style='border-
    style: solid; border-width: 1'>
    $cat</td></tr>";}
                echo 
    "</table></div>";
            }       
        }

        else { 
               echo 
    "<div align='left'><table border='0' cellpadding='0' 
    cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' 
    width='100%'><tr><td width='20%' style='border-style: solid; border-
    width: 1'><b>ID</b></td><td width='20%' style='border-style: solid; 
    border-width: 1'><b>Titel</b></td><td width='20%' style='border-style: 
    solid; border-width: 1'><b>PLZ</b></td><td width='20%' style='border-
    style: solid; border-width: 1'><b>Ort</b></td><td width='20%' 
    style='border-style: solid; border-width: 1'><b>Branche</b></td></tr>"
    ;
           while(list(
    $id,$titel,$plz,$ort,$cat) = mysql_fetch_row
    ($abfrage)){
               echo 
    "<tr><td width='20%' style='border-style: solid; border-width: 
    1'>
    $id</td><td width='20%' style='border-style: solid; border-width: 
    1'>
    $titel</td><td width='20%' style='border-style: solid; border-width: 
    1'>
    $plz</td><td width='20%' style='border-style: solid; border-width: 
    1'>
    $ort</td><td width='20%' style='border-style: solid; border-width: 
    1'>
    $cat</td></tr>";}
               echo 
    "</table></div>";
        }
     } 
    Zuletzt geändert von alscom; 11.08.2004, 21:52.

  • #2
    umbrich deinen verdammten Code, dann sehen wir weiter

    Kommentar


    • #3
      muß auf die resource-id angewendet werden!

      UMBRICH DEN BEITRAG!
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        sorry, ich dachte. der text wird automatisch umgebrochen. hab ich jetzt nachgeholt.

        was meinst du mit "muß auf die resource-id angewendet werden!" ???
        was muss worauf angewendet werden??

        thx,
        alscom

        Kommentar


        • #5
          lies dir mal das hier durch. dann weisst du, was du machen musst.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            sorry, aber ich weiß immer noch nicht, was ich machen muss. ich hab mir die seite übrigens schon angesehen, bevor ich hier gepostet habe.

            was muss ich also machen??

            thx,
            alscom

            Kommentar


            • #7
              Re: mysql_num_rows ?!

              Original geschrieben von alscom
              PHP-Code:
              function showAllEntrys(){
                  global 
              $db;
                  
              $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
              WHERE ort='
              $ort' AND cat='$cat'",$db);
                  
              $ergebnis mysql_query($abfrage);
                  
              $zahl mysql_num_rows($abfrage);

                  if (
              $zahl 1) { $abfrage1 mysql_query("SELECT id,titel,plz,ort,cat 
              FROM _entrys WHERE ort='
              $ort' OR cat='$cat'",$db);
                  
              $ergebnis1 mysql_query($abfrage1);
                  
              $zahl1 mysql_num_rows($abfrage1);
              }
               } 
              ändere es in
              PHP-Code:
              function showAllEntrys(){
                  global 
              $db;
                  
              $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
              WHERE ort='
              $ort' AND cat='$cat'",$db);
                  
              $ergebnis mysql_query($abfrage);
                  
              $zahl mysql_num_rows($ergebnis);

                  if (
              $zahl 1) { $abfrage1 mysql_query("SELECT id,titel,plz,ort,cat 
              FROM _entrys WHERE ort='
              $ort' OR cat='$cat'",$db);
                  
              $ergebnis1 mysql_query($abfrage1);
                  
              $zahl1 mysql_num_rows($ergebnis1);
              }
               } 

              Kommentar


              • #8
                Ich verstehe hier eine Sache nicht.

                PHP-Code:
                $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
                WHERE ort='
                $ort' AND cat='$cat'",$db);
                    
                $ergebnis mysql_query($abfrage);
                    
                $zahl mysql_num_rows($ergebnis); 
                $abfrage ist ein query
                $ergebnis auch?
                reicht nicht eines? So in etwas:
                PHP-Code:
                $abfrage = ("SELECT id,titel,plz,ort,cat FROM _entrys 
                WHERE ort='
                $ort' AND cat='$cat'",$db);
                    
                $ergebnis mysql_query($abfrage);
                    
                $zahl mysql_num_rows($ergebnis); 
                oder direkt das $ergebnis rauslassen
                PHP-Code:
                $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
                WHERE ort='
                $ort' AND cat='$cat'",$db);
                        
                $zahl mysql_num_rows($abfrage); 


                Oder bin ich auf dem falschen Dampfer?
                Ich grüsse alle notorischen Intelligenzverweigerer und Plenker.

                Kommentar


                • #9
                  KaiBone hat da ziemlichen Bockmist gebaut
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Original geschrieben von Daisy EE8
                    Ich verstehe hier eine Sache nicht.

                    PHP-Code:
                    $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entrys 
                    WHERE ort='
                    $ort' AND cat='$cat'",$db);
                        
                    $ergebnis mysql_query($abfrage);
                        
                    $zahl mysql_num_rows($ergebnis); 
                    $abfrage ist ein query
                    $ergebnis auch?
                    nein.

                    es wird zwar versucht, in $ergebnis das ergebnis einer abfrage abzulegen. aber das dürfte ziemlich sicher schief gehen, weil $abfrage schon eine ressource id ist - und diese als sql-"anweisung" an die DB zu übermitteln, dürfte ziemlicher humbug sein.
                    mysql_error() hätte das sicher auch recht schnell bestätigen können, "you have in error in your sql syntax near 'Ressource ID #3' ..." o.ä.


                    und ja, happy trifft es recht gut.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      hey,

                      mittlerweile funzt es. dafür passt die if/else-verzweigung noch nicht.

                      wenn ich nach einem eintrag suche, bei dem ort=2 und cat=5 ist, sagt er mir, dass kein eintrag vorhanden ist, obwohl einer in der db ist. ich denke, es liegt an der if/else-verzweigung. wo ist der fehler??

                      thx,
                      alscom

                      ach, übrigens: den fehler hab ich auch über mysql_error gefunden.

                      hier der aktuelle code:

                      PHP-Code:
                      function showAllEntrys(){
                          global 
                      $db;
                          
                      $abfrage mysql_query("SELECT id,titel,plz,ort,cat FROM _entry WHERE 
                      ort='
                      $ort' AND cat='$cat'",$db);
                          
                      $zahl mysql_num_rows($abfrage);
                          echo 
                      mysql_error();

                          if (
                      $zahl 1) { 
                          
                      $abfrage1 mysql_query("SELECT id,titel,plz,ort,cat FROM _entry 
                      WHERE ort='
                      $ort' OR cat='$cat'",$db);
                          
                      $zahl1 mysql_num_rows($abfrage1);
                          echo 
                      mysql_error();
                          
                             if (
                      $zahl1 >= 1) {
                                    echo 
                      "<div align='left'><table border='0' cellpadding='0' 
                      cellspacing='0' style='border-collapse: collapse' bordercolor='#111111'
                       width='100%'><tr><td width='20%' style='border-style: solid; border-
                      width: 1'><b>ID</b></td><td width='20%' style='border-style: solid; 
                      border-width: 1'><b>Titel</b></td><td width='20%' style='border-style: 
                      solid; border-width: 1'><b>PLZ</b></td><td width='20%' style='border-
                      style: solid; border-width: 1'><b>Ort</b></td><td width='20%' 
                      style='border-style: solid; border-width: 1'><b>Branche</b></td></tr>"
                      ;
                                   while(list(
                      $id,$titel,$plz,$ort,$cat) = mysql_fetch_row
                      ($abfrage1)){
                                echo 
                      "<tr><td width='20%' style='border-style: solid; border-
                      width: 1'>
                      $id</td><td width='20%' style='border-style: solid; border-
                      width: 1'><a href='showdetails.php?
                      action=ShowEntry&id=
                      $id'>$titel</a></td><td width='20%' style='border-
                      style: solid; border-width: 1'>
                      $plz</td><td width='20%' style='border-
                      style: solid; border-width: 1'>
                      $ort</td><td width='20%' style='border-
                      style: solid; border-width: 1'>
                      $cat</td></tr>";}
                                echo 
                      "</table></div>";

                              }

                              else {
                                       echo 
                      "<b>Leider sind zu Ihrer Anfrage keine Einträge 
                      vorhanden!</b>"
                      ;
                              }       
                          }

                          else { 
                                 echo 
                      "<div align='left'><table border='0' cellpadding='0' 
                      cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' 
                      width='100%'><tr><td width='20%' style='border-style: solid; border-
                      width: 1'><b>ID</b></td><td width='20%' style='border-style: solid; 
                      border-width: 1'><b>Titel</b></td><td width='20%' style='border-style: 
                      solid; border-width: 1'><b>PLZ</b></td><td width='20%' style='border-
                      style: solid; border-width: 1'><b>Ort</b></td><td width='20%' 
                      style='border-style: solid; border-width: 1'><b>Branche</b></td></tr>"
                      ;
                             while(list(
                      $id,$titel,$plz,$ort,$cat) = mysql_fetch_row
                      ($abfrage)){
                                 echo 
                      "<tr><td width='20%' style='border-style: solid; border-width: 
                      1'>
                      $id</td><td width='20%' style='border-style: solid; border-width: 
                      1'>
                      $titel</td><td width='20%' style='border-style: solid; border-width: 
                      1'>
                      $plz</td><td width='20%' style='border-style: solid; border-width: 
                      1'>
                      $ort</td><td width='20%' style='border-style: solid; border-width: 
                      1'>
                      $cat</td></tr>";}
                                 echo 
                      "</table></div>";
                          }
                       } 
                      Zuletzt geändert von alscom; 12.08.2004, 12:50.

                      Kommentar


                      • #12
                        Öhmmm...

                        register_globals = off ????


                        Woher bekommt die Funktion die Werte für $ort und $cat? Du solltest die vielleicht als Parameter übergeben:

                        function showAllEntrys($ort, $cat)

                        Sind das Parameter aus nem anderen Skript (POST, GET), dann ginge auch die Verwendung von $_GET['ort'] bzw. $_POST['ort']. Aber als Funktionsparameter ist das eindeutig sauberer.
                        Ich denke, also bin ich.
                        Manche sind trotzdem!

                        Kommentar


                        • #13
                          willst du das nicht erst mal etwas einfacher strukturieren?

                          so wie ich das sehe, sind die beiden (langen) ausgabeteile absolut gleich, sowohl was tabellenkopf als auch was ausgabe der datensätze in der schleife angeht - nur das einmal datensätze ausgegeben werden, die bei der ersten abfrage gefunden wurde, wo ort und cat passten, und einmal die aus der zweiten abfrage, wo ort oder cat passten.

                          das ist doch nonsens, den fast identischen code dafür zwei mal zu notieren.

                          warum machst du das ganze nicht nachher, und setzt nur in der while-schleife die richtige ressource-ID ein.

                          z.b. über eine referenzvariable,
                          $auszuwertende_abfrage = &$abfrage;
                          oder
                          $auszuwertende_abfrage = &$abfrage1;

                          und in der schleife dann
                          while($auszuwertende_abfrage = mysql_fetch...)



                          und mit ein bisschen mehr aufwand sollten sich auch beide abfragen an die DB gleich mit einer erschlagen lassen, die die ausliest, wo ort und cat gleich sind, oder wo ort oder cat gleich sind ... kann man dann ja entsprechend sortieren, wenn man die mit "und" als erste haben möchte.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            achso,

                            PHP-Code:
                            function showAllEntrys($ort$cat
                            jetzt funzt es!!

                            1000 thx !!

                            alscom

                            Kommentar

                            Lädt...
                            X