Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysql_fetch_array stimmt mit mysql_num_rows nichtüberein

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

  • [Erledigt] mysql_fetch_array stimmt mit mysql_num_rows nichtüberein

    Hallo,

    ich habe eine Abfrage, die ihr Ergebnis in eine Selectbox füllt. Leider stimmen die dort übertragenen Datensätze mit der tatsächlichen Anzahl der Datensätze nicht überein.

    Hier mal der Code:

    PHP-Code:
    $sql_statement="SELECT * FROM tbl_XXX ORDER BY XXX_ID desc";
    $result=safe_mysql_query($sql_statement);
    $anzahl mysql_num_rows($result); 
    mysql_num_rows bringt dann als Ergebnis "6", was völlig korrekt ist.

    Die Selectbox sieht folgendermaßen aus:

    PHP-Code:
    echo "<select name=\"selectbox\" size=\"1\" onchange='splitAndFillInputFields(this);'\n";
    while (
    $selectbox mysql_fetch_array($result))
    {
    $option "<option>".$selectbox[XXX_ID]." - ".$selectbox[XXX_datum1]." - " $selectbox[XXX_aktuell] ." - " $selectbox[XXX_Objekt_klar] ." </option>";
    echo 
    $option;
    }
    echo 
    "</select>\n"
    Hier werden leider nur 5 Datensätze angezeigt ... der erste DS fehlt.

    Wenn ich die Abfrage umstelle:

    PHP-Code:
    $sql_statement="SELECT * FROM tbl_XXX ORDER BY XXX_ID asc";
    $result=safe_mysql_query($sql_statement);
    $anzahl mysql_num_rows($result); 
    auf ASC, dann fehlt der letzte (aktuellste Eintrag) ...

    Hat jemand eine Idee, wo mein fehlender Datensatz bleibt????

    Vielen Dank für Eure Lösungen.


  • #2
    Hi.

    Was passiert in der Funktion safe_mysql_query() genau? Und was hinter dem onchange splitAndFillInputFields(this);?

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      In safe_mysql_query steht folgender Code:

      PHP-Code:
      <?php
      // function definitions

      // int safe_mysql_query([string query])

      function safe_mysql_query ($query='')
      {
          if (empty(
      $query))
          {
              return 
      FALSE;
          }

          
      $result = @mysql_query($query);

          if (
      $result === FALSE)
          {
              
      // Ausgabe, falls ein Fehler in der Abfrage aufgetreten ist
           
              
      $private_error 'ACHTUNG! Verbindung ist fehlgeschlagen: '
                  
      .'<li>errorno='.mysql_errno()
                  .
      '<li>error='.mysql_error()
                  .
      '<li>query='.$query
              
      ;
              
      error_log($private_error1);
              include(
      'include/sql_fehler_log.php');
              
      // send a generic error message to the user

              
      die
              (
      '<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Es trat ein Fehler während des Zugriffs auf die MySQL Datenbank auf.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Der Administrator erhält hierüber automatisch eine EMail mit dem Inhalt der SQL-Fehlermeldung.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sollte der Fehler weiterhin bestehen, so senden Sie eine kurze Nachricht an den Admin mit den Angaben Ihrer letzten Tätigkeiten vor dem Fehlerauftritt.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vielen Dank</b>');

          }

          return 
      $result;  
      }
      ?>
      und in der JS Funktion:

      Code:
      <script type="text/javascript">
      function splitAndFillInputFields(selBox)
          {        var text = selBox[selBox.selectedIndex].innerHTML;
                  var data = text.split(" - ");
           document.getElementById("mutter").value = data[0];
           }
      </script>
      Dort wird das erste Element in ein Inputfeld der Form übertragen ... passiert aber erst nach onchange ...

      Wenn ich mir die Liste aber bereits ansehe, dann fehlt der DS bereits.

      Kommentar


      • #4
        nur zu meinen Verständnis

        Zitat von drzwockel Beitrag anzeigen
        PHP-Code:
        $sql_statement="SELECT * FROM tbl_XXX ORDER BY XXX_ID desc";
        $result=safe_mysql_query($sql_statement);
        $anzahl mysql_num_rows($result); 
        In der SQL-Console (oder SQLMyAdmin) liefert die SQL-Abfrage

        Code:
        SELECT COUNT(*) FROM tbl_XXX ORDER BY XXX_ID desc
        liefert das gleiche Ergebnis wie

        Code:
        SELECT COUNT(*) FROM tbl_XXX ORDER BY XXX_ID asc
        Dann wäre mal ein Fehler der MySQL-DB auszuschließen.

        Grüße
        Thomas

        Kommentar


        • #5
          ... habe ich getestet und bei beiden Varianten kommt "6" raus, was der korrekten Anzahl der DS entspricht ...

          Kommentar


          • #6
            Anbei: Du vergisst die Zeile hier korrekt zu schließen:

            PHP-Code:
            echo "<select name=\"selectbox\" size=\"1\" onchange='splitAndFillInputFields(this);'\n"
            da fehlt ein ">" am Ende!

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Zitat von wolf29 Beitrag anzeigen
              Anbei: Du vergisst die Zeile hier korrekt zu schließen:

              PHP-Code:
              echo "<select name=\"selectbox\" size=\"1\" onchange='splitAndFillInputFields(this);'\n"
              da fehlt ein ">" am Ende!

              Wolf29
              ... na Respekt ... das war er, der Fehler ... eine ">" gesetzt und alle DS sind wieder da ... böser Fehler ...

              Vielen Dank Wolf29 für die schnelle Hilfe

              Kommentar

              Lädt...
              X