[gelöst] mysql fetch row Fehler

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

  • [gelöst] mysql fetch row Fehler

    Ich hab hier ein sehr komisches Problem mit PHP / MySQL. Irgendwie will das angehängte Script nicht funktionieren, obwohl es bei einem anderen Projekt einwandrei funktionierte.

    Der Fehler besteht darin, dass er mir als Fehlermeldung folgendes sagt:

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in E:\xampplite\htdocs\it-haus24\it-haus24\admin\admin.php on line 26


    Wäre nett, wenn ihr mir helfen könntet.
    Angehängte Dateien

  • #2
    Aus
    PHP-Code:
    $result mysql_query('SELECT ...'); 
    mach
    PHP-Code:
    $sql 'SELECT ...';
    $result mysql_query($sql) or die(mysql_error() . $sql); 
    Lies mal unsere sticky Threads (Regeln etc.), da steht noch mehr nützliches Zeug drin.

    Kommentar


    • #3
      Ich verstehe nicht warum Du das so kompliziert machst, die ganze Geschichte könntest Du zusammenfassen !?
      Ich würde es zwar selbst ganz anders machen, aber als Anfänger würde ich wenigstens noch so an die Sache gehen !

      PHP-Code:
       
      <table border="1" valign="top">
        <tr>
          <td><b>Kundenart</b></td>
          <td><b>Firma</b></td>
          <td><b>Anrede</b></td>
          <td><b>Vorname</b></td>
          <td><b>Name</b></td>
          <td><b>Strasse</b></td>
          <td><b>........</b></td>
          <td><b>........</b></td>
           USW....
      <?php
       
      mysql_connect 
      ("localhost""USER""PASSWORT"); 
      mysql_select_db ("DATENBANK"); 
      $abfrage "SELECT * FROM  register WHERE ................";
        
      $ergebnis mysql_query($abfrage);
        while(
      $row mysql_fetch_object($ergebnis))
          {
       
      echo
      "
          </tr>
        <tr>
          <td>
      $row->kundenart</td>
          <td>
      $row->firma</td>
          <td>
      $row->anrede</td>
          <td>
      $row->vorname</td>
          <td>
      $row->vorname</td>
          <td>
      $row->name</td>
          <td>
      $row->strasse</td>
          <td>
      $row->.......</td>
          <td>
      $row->.......</td>
           USW....
       </tr>
      "
      ;
           }
      ?>
       
      </table>
      Auch das hier :

      PHP-Code:
       $result mysql_query("SELECT kundenart, firma, anrede, vorname, name, strasse, hausnr, plz, stadt, privattelefon, geschaeftlichtelefon, fax, mobil, email, registrierung FROM register"); 

      warum nicht gleich :

      PHP-Code:
      $result mysql_query("SELECT * FROM register"); 
      Zuletzt geändert von Scriptfarm; 27.10.2009, 18:16.

      Kommentar


      • #4
        Sorry, Doppelpost !

        Kommentar


        • #5
          @Scriptfarm

          Man sollte kein SELECT * verwenden, sondern genau die Spalten selektieren, die man haben will.

          Kommentar


          • #6
            Ich schätze mal das er alles aus der Tabelle einlesen möchte und daher ich kann er auch ein Wildcard verweden.

            Kommentar


            • #7
              Zitat von Scriptfarm Beitrag anzeigen
              Ich schätze mal das er alles aus der Tabelle einlesen möchte und daher ich kann er auch ein Wildcard verweden.
              Trotzdem ist es sicherer, wenn man alle Spalten angibt.

              Was ist, wenn eine Spalte fehlt? Wenn du SELECT * verwendest, wirst du das nicht so schnell bemerken. Wenn du allerdings eine Spalte selektierst, die es nicht gibt, bekommst du sofort eine MySQL Fehlermeldung zurück.

              Kommentar


              • #8
                Das kann man sehen wie man will, durch die Angabe der vielen Spalten kann es auch gerade erst zu unnötigen Fehlern kommen.

                Ausserdem wenn es darum geht, würde ich bei seinem Stil erst einmal ganz woanders ansetzen.

                Kommentar


                • #9
                  Zitat von Scriptfarm Beitrag anzeigen
                  Ich schätze mal das er alles aus der Tabelle einlesen möchte und daher ich kann er auch ein Wildcard verweden.
                  Selbst wenn er aktuell alles haben will, wer schützt ihn vor einer Erweiterung der Tabelle wodurch er auf einmal nicht mehr alles haben will?

                  Also: Finger Weg von SELECT * all

                  Ausserdem wenn es darum geht, würde ich bei seinem Stil erst einmal ganz woanders ansetzen.
                  H3ll hat aber (imho zurecht) deinen Stil "bemängelt", nicht den des TO.

                  Kommentar


                  • #10
                    Wenn ich als Beispiel die komplette Tabelle einlesen will, nehme ich ein Wildcard und schreibe mir nicht 15 Spaltenamen unnötigerweise rein, denn dafür ist es da.
                    Selbst wenn er eine Spalte eingefügt wird, geht die Welt auch nicht zu Grunde.
                    Die Quote das ein Fehler passiert, oder das später was vergessen wird, ist so viel höher.


                    EDIT :
                    Und zum Stil, ich habe ich lediglich auf seinem programmiertechnischen Level versucht alles etwas übersichtlicher zu gestalten.
                    Zuletzt geändert von Scriptfarm; 27.10.2009, 19:50.

                    Kommentar


                    • #11
                      OffTopic:
                      Quote gut und schön. Aber was ist deiner Meinung nach Bedeutender, einen fehler einmalig zu beheben, oder bei jeder Abfrage zusätzliche Performance zum Fenster rauszuschmeißen?

                      Kommentar


                      • #12
                        SELECT * kann man sich evtl. noch in einem Prototypen erlauben.
                        Aber in einem Forum, wo es alle lesen, zu sagen es wäre gut und richtig so, da muss ein P vor.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Zitat von Scriptfarm Beitrag anzeigen
                          Selbst wenn er eine Spalte eingefügt wird, geht die Welt auch nicht zu Grunde.
                          [ ] Du weisst, wie sich das bei BLOBs auswirken würde.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            erstmal vielen Dank. Lösung Nr.1 von onemorenerd hat geholfen.

                            Jetzt habe ich aber ein anderes Problem. Ich wollte in der Tabelle nur Anrede, Vorname, Nachname, Firma, Kundenart und Registrierungsdatum anzeigen lassen. Daneben erscheint auf +. Sobald man da draufdrückt erscheinen die restlichen Informationen zum Kunden dadrunter. Das ganze habe ich mit JavaScript lösen können, aber nur bei einem Datensatz.

                            Als ich einen zweiten Datensatz in die MySQL Tabelle hinzufügte war Schicht im Schacht. Ich habe bereits ein paar Alternativen getestet, aber irgendwie will das ganze nicht. Wäre nett, wenn jemand drüber schauen könnte und eventuell berichtigen könnte.


                            PHP-Code:
                            <html>

                            <body>

                            <script type="text/javascript" language="JavaScript1.2">
                            var angezeigt = false;

                            function versteckt() 

                                if (angezeigt)
                                {
                                    document.getElementById('ghost').style.display = 'none';
                                    angezeigt = false;
                                }
                                else
                                {
                                    document.getElementById('ghost').style.display = 'block';
                                    angezeigt = true;
                                }

                            </script> 

                            <style type="text/css">

                            table {
                            width: 1000px;
                            border: 1px solid #000;
                            }

                            .headliner {
                            background-color: #900;
                            color: #FFF;
                            width: 200px;
                            font-weight: bold;
                            text-align: center;
                            }

                            .inhalt1 {
                            font-weight: bold;
                            text-align: center;
                            }

                            .inhalt2 {
                            padding-top: 10px;
                            padding-left: 10px;
                            font: 10px Verdana;
                            }

                            </style>

                            </body>

                            <head>

                            <?php
                                error_reporting
                            (E_ALL);
                                
                            $connID = @mysql_connect('localhost''root''');  
                                
                            mysql_select_db('kunden'$connID);
                                
                            $sql 'SELECT kundenart, firma, anrede, vorname, nachname, adresse1, adresse2, privattelefon, geschaeftlichtelefon, fax, mobil, email, registrierung FROM register';
                                
                            $result mysql_query($sql) or die(mysql_error() . $sql);

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

                                echo 
                            '<tr>';
                                echo 
                            '<td class="headliner">Anrede</td>';
                                echo 
                            '<td class="headliner">Vorname</td>';
                                echo 
                            '<td class="headliner">Name</td>';
                                echo 
                            '<td class="headliner">Firma</td>';
                                echo 
                            '<td class="headliner">Kundenart</td>';
                                echo 
                            '<td class="headliner">Registriert</td>';
                                echo 
                            '<td class="headliner">Details</td>';
                                echo 
                            '</tr>';
                                
                            while (list(
                            $kundenart$firma$anrede$vorname$name$adresse1$adresse2$privattelefon$geschaefttelefon$fax$mobil$email$registrierung) = mysql_fetch_row($result)) 
                            {
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $anrede;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $vorname;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $name;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $firma;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $kundenart;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            $registrierung;
                                echo 
                            '</td>';
                                echo 
                            '<td class="inhalt1">';
                                echo 
                            '<a href="#" onclick="versteckt()">+';
                                echo 
                            '</td>';
                                echo 
                            '</tr>';

                                echo 
                            '<table style="display: none" id="ghost">';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">Strasse / Hausnr. :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $adresse1;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">PLZ / Ort :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $adresse2;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">Telefon (Privat) :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $privattelefon;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">Telefon (geschäftlich) :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $geschaefttelefon;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">Fax :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $fax;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">Mobil :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $mobil;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                echo 
                            '<tr>';
                                echo 
                            '<td class="inhalt2">E-Mail :</td>';
                                echo 
                            '<td class="inhalt2">';
                                echo 
                            $email;
                                echo 
                            '</td>';
                                echo 
                            '</tr>';
                                }
                                echo 
                            '</table>';
                            ?>
                            </head>

                            </html>

                            Kommentar


                            • #15
                              Prima.

                              Dein neues Problem postest du aber bitte am Besten noch einmal konkret im JavaScript Forum.

                              Dort ist dann nämlich der HTML-Code relevant. PHP ist an dieser Stelle schon längst abgearbeitet...

                              Und vorher behebst du noch schnell den Fehler mit den doppelten IDs. Merke IDs im HTML-Quelltext sind immer einmalig! (wie jede andere ID übrigens auch).

                              Das hätte dir auch der HTML-Validator gemeldet, wenn er denn genutzt worden wäre.

                              Kommentar

                              Lädt...
                              X