Schleife beim Datenbankauslesen nutzen

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

  • Schleife beim Datenbankauslesen nutzen

    Hallo. Also ich habe folgendes Problem:
    Ich möchte auf einer Seite verschiedene Daten ausgeben lassen.
    Dazu lese ich eine Tabelle aus nach einem bestimmten String:
    $sql = mysql_query("select id from Tabelle where kategorie='$was'");
    $anzahl=mysql_num_rows($sql);
    Nun möchte ich, wenn es z.B. 2 Ergebnisse gibt, die dem entsprechen, werte aus dieser Tabelle ausgeben lassen:
    for ($x=1;$x<=$anzahl;$x++){
    $uschrift=mysql_result($sql,$x,"uschrift");
    $nname=mysql_result($sql,$x,"nname");
    $vname=mysql_result($sql,$x,"vname");
    usw.
    Und dann soll er mir das ausgeben:
    echo "<tr><td><center>$uschrift</font></td></tr>";
    echo "<tr><td>$nname</font></td></tr>";
    usw. }
    Nur tut er das nicht und ich bekomme folgende Fehlermeldungen:

    Warning: Unable to jump to row 1 on MySQL result index 2 in /homepages/6/d39910432/htdocs/eropay/lesen.php on line 15
    Warning: Unable to jump to row 1 on MySQL result index 2 in /homepages/6/d39910432/htdocs/eropay/lesen.php on line 16
    usw.
    Das sind die Zeilen ab $uschrift=my.....
    Ich hoffe Ihr könnt mir helfen. Danke im vorraus.
    No internationalisation, no fun.

  • #2
    Da du nur die id selectest, findet mySQL logischerweise die Felder uschrift, nname und vname nicht im result. Ersetze das "id" in select id from Tabelle where kategorie='$was' mal durch "*", dann sollte es funktionieren.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Das habe ich auch schon probiert. Aber das funzt leider auch net. Da habe ich immernoch die Fehlermeldungen.
      No internationalisation, no fun.

      Kommentar


      • #4
        Dein Problem liegt hier:
        for ($x=1;$x<=$anzahl;$x++){

        Mach mal folgendes:
        for ($x=0;$x<$anzahl;$x++){

        denn die Indexierung von Deinem $sql beginnt bei 0 und nicht bei 1.
        Wenn Du als $anzahl zB 10 erhälst hört die Indexierung von $sql bei 9 auf, weil von 0-9 = 10 Datensätze.
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          PHP-Code:
          <?php
          function mysql_die($msg) {
               echo 
          "<b>$msg =&gt;  mysql-error: ".mysql_errno().":".mysql_error()."</b><br>\n";
          }

          $db            "database";
          $tabelle    "tabelle";
          $verbindung mysql_connect("host","user","password") or mysql_die("Keine SQL-Verbindung");
          mysql_select_db($db$verbindung) or mysql_die("Datenbank konnte nicht ausgewählt werden");

          $query "SELECT kategorie,count(kategorie) AS records FROM $tabelle where kategorie='$was' group by kategorie";

          $result mysql_db_query($db,$query,$verbindung) or mysql_die("Fehler im 1. Select");

          echo 
          "<table>";

          while(
          $row mysql_fetch_assoc($result)) {
              if (
          $row[records] > 1) {
                  
          $queryi  "select * from $tabelle where kategorie = $row[kategorie]'";
                  
          $resulti mysql_db_query($db,$queryi,$verbindung) or mysql_die("Fehler im 2. Select");
                  while(
          $rowi mysql_fetch_assoc($resulti)) {
                      echo 
          "<tr><td>$rowi[uschrift]&nbsp;</td></tr>"
                      echo 
          "<tr><td>$rowi[nname]&nbsp;</td></tr>"
                      echo 
          "<tr><td>$rowi[vname]&nbsp;</td></tr>";
                      echo 
          "<tr><td>&nbsp;</td></tr>";
                  }
              }
          }
          echo 
          "</table>";
          ?>

          Kommentar

          Lädt...
          X