SQL Abfrage -> Warning: mysql_data_seek() [function.mysql-data-seek]: ...

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

  • SQL Abfrage -> Warning: mysql_data_seek() [function.mysql-data-seek]: ...

    Huhu, habe ein kleinen Problem mit einer DB Abfrage :/

    Ich speicher vor diesem code den namen einer Klasse in einer Variablen (wenn ich die Variable per echo ausgebe wird der Name auch richtig angezeigt)...So, bau ich die Variable jetzt aber in die Abfrage ein und öffne meine Seite bekomme ich folgenden Fehler:

    Code:
    [B]Warning[/B]:  mysql_data_seek() [[URL="http://localhost/eclass/function.mysql-data-seek"]function.mysql-data-seek[/URL]]: Offset 0 is invalid for MySQL result index 10 (or the query data is unbuffered) in [B]E:\xampp\htdocs\eClass\index.php[/B] on line [B]152[/B]
    wenn ich die Variable mit einem Namen einer Klasse die in der DB steht ersetze, bekomm ich alle Schüler dieser Klasse ganz normal ausgegeben.

    Was mach ich falsch? oO

    PS: Bitte keine Predigt wegen meiner Statements usw, wird alles noch abgesichert..Ist nur zum testen zz.

    Hier der Code:

    Code:
    <?
      $schueler = "SELECT * FROM t_schueler s INNER JOIN t_klassen k
    ON s.id_klasse=k.id_klasse WHERE k.klasse like '$schueler_kl';";
    
      $ergebnis_schueler = mysql_query($schueler);  
      mysql_data_seek($ergebnis_schueler,0);  
    
    /* Funktion um nur eine bestimmte Anzahl von Schuelern pro Spale anzuzeigen */
    $i=0;
    $blockgroesse=5;
    echo "<table border=0>";
    echo "<tr align='top'><td align='top'>";
    echo "<table border=0 id=ausgabe_sch>";
    
      
      while($schueler2 = mysql_fetch_assoc($ergebnis_schueler)) {
        
    
    echo "<tr><td>";
    
    
        echo "<input type=checkbox value=".$schueler2['id_schueler'].">";
        echo "".$schueler2['zuname']." "." ".$schueler2['vorname']."";
    
      echo "</td></tr>";
      $i++;
      
    if ($i % $blockgroesse == 0) {
      echo "</table></td><td align='top'><table id=ausgabe_sch border=0 align='top''>";
    }
    
    }
    //letzten Block mit Leerzellen auf Blockgroesse auffuellen
    for ($j=1;$j<=($blockgroesse - ($i % $blockgroesse));$j++) {
      echo  "<tr><td>&nbsp;</td></tr>";
    }
    
    echo "</table>";
    echo "</td></tr></table>";
    
    
    ?>

  • #2
    Sieht für mich so aus, als wär die Variable gar nicht gefüllt.

    Aber das hättest du schon lange überprüfen können/sollen.

    Kommentar


    • #3
      wie gesagt, die variable IST befüllt, geteste mit ner echo Ausgabe..Gibt genau das aus, was durch die Variable ausgegeben werden soll.

      Mfg

      Kommentar


      • #4
        Sicher? Was sagt echo $schueler; ?

        Kommentar


        • #5
          gibt genau das aus, was es auch ausgeben soll:

          SELECT * FROM t_schueler s INNER JOIN t_klassen k ON s.id_klasse=k.id_klasse WHERE k.klasse like ' 8t ';

          Ich bin etwas ratlos ^^

          Kommentar


          • #6
            Füge bitte nach diesem Code
            PHP-Code:
              $ergebnis_schueler mysql_query($schueler); 
            das hier ein ...

            PHP-Code:
            echo '<p>Anzahl Datensatze: '.mysql_num_rows($ergebnis_schueler) . '</p>'
            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


            • #7
              Zitat von moepmann123 Beitrag anzeigen
              gibt genau das aus, was es auch ausgeben soll:

              SELECT * FROM t_schueler s INNER JOIN t_klassen k ON s.id_klasse=k.id_klasse WHERE k.klasse like ' 8t ';

              Ich bin etwas ratlos ^^
              Und die Leerzeichen vor und nach "8t" stehen auch genauso in der Datenbank???

              Kommentar


              • #8
                Manual

                PHP: mysql_data_seek - Manual

                Hier den Hinweis zu ORDER BY beachten
                -------------------------------------

                Es muss die Datensatznummer verwendet werden, es ist kein normales Array das mit index 0 anfängt - das ist der Fehler.

                Kommentar


                • #9
                  Zitat von piratos Beitrag anzeigen
                  s muss die Datensatznummer verwendet werden, es ist kein normales Array das mit index 0 anfängt - das ist der Fehler.
                  Die Aussage zum Array passt, aber das mit der 0 nicht so ganz. ;-)
                  Denn der erste Datensatz hat die Nummer 0.

                  Die Datensatznummer beginnt bei 0. Die Datensatznummer sollte ein Wert im Bereich zwischen 0 und mysql_num_rows - 1 sein. Falls die Ergebnismenge jedoch Null sein sollte (mysql_num_rows == 0) wird eine Suche nach Datensatznummer 0 mit einem E_WARNING fehlschlagen und mysql_data_seek() gibt FALSE zurück.
                  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


                  • #10
                    Das mysql_data_seek() ist an der Stelle völlig überflüssig. Weg damit!

                    Kommentar


                    • #11
                      ich bin ein Idiot :P

                      Es warn in der Tat die Leerzeichen, hatte die beim Definieren der Variable drin :/

                      Danke für eure schnelle Hilfe, ich glaube hier bleib ich

                      Mfg

                      Kommentar


                      • #12
                        Dann lies dir sicherheitshalber mal die Regeln durch, das erspart uns und dir einigen Aufwand und Ärger.

                        http://www.php-resource.de/forum/mod...re-regeln.html

                        Kommentar

                        Lädt...
                        X