Kai: 2 mySQL Abfragen in einer PHP?

Hi,

ich habe etwas in PHP gecodet was das Ergebnis einer Abfrage einer Datenbank auf mehrere Seiten verteilen soll. Dazu sind zwei Abfragen notwendig, eine mit den gesammten Einträgen und eine mit denen, die momentan angezeigt werden sollen. Anscheinend hat mein Server aber Probleme mit 2 Abfragen.

Hier der Quellcode: [CODE]

<?PHP
include ("db.php");

$Zeilen_pro_Seite = 20;

if (!isset($Anfangsposition)) {
  $Anfangsposition = 0;
}

$sql = "SELECT COUNT(*) As anzahl,stream,genre, url  FROM surfmusik GROUP BY url ORDER BY anzahl DESC WHERE LIMIT $Anfangsposition,$Zeilen_pro_Seite";
$result = mysql_query($sql);
$result1 = mysql_query("SELECT COUNT(*) As anzahl,stream,genre, url  FROM surfmusik GROUP BY url ORDER BY anzahl DESC");

$Anzahl=mysql_num_rows($result1);

while ($row=mysql_fetch_array($result)) {
    echo "Aufrufe: ".$row[anzahl]."<br>";
    echo "Sender:  ".$row[stream]."<br>";
}

if($Anfangsposition > 0) {
  echo "<a href='top2.php?Anfangsposition=0'>[erste Seite]</a>";
  $back=$Anfangsposition-$Zeilen_pro_Seite;
  if($back < 0) {
    $back = 0;
  }
  echo "<a href="top2.php?Anfangsposition=$back">[eine Seite zurück]</a>";
 }

if($Anzahl>$Zeilen_pro_Seite) {
  $Seiten=intval($Anzahl/$Zeilen_pro_Seite);
  if($Anzahl%$Zeilen_pro_Seite) {
    $Seiten++;
  }
}

for ($i=1;$i<=$Seiten;$i++) {
  $fwd=($i-1)*$Zeilen_pro_Seite;
  echo "<a href="top2.php?Anfangsposition=$fwd"> $i </a>";
}

if($Anfangsposition < $Anzahl-$Zeilen_pro_Seite) {
  $fwd=$Anfangsposition+$Zeilen_pro_Seite;
  echo "<a href="top2.php?Anfangsposition=$fwd">[eine Seite weiter]</a>";
  $fwd=$Anzahl-$Zeilen_pro_Seite;
  echo "<a href="top2.php?Anfangsposition=$fwd">[letzte Seite]</a>";
}

// mysql_free_result($ergebnis);
mysql_close();
?>

[/CODE]

Wie Ihr seht ist das Passwort in der db.php, also macht euch keine Hoffnungen.

Die Fehlermeldung könnt ihr hier einschauen: http://web5.pingino.de/surfmusik/top2.php

  1. Hallo Kai!

    Den einzigen Fehler, den ich beim schnellen Überfliegen feststellen konnte, ist:

    echo "Aufrufe: ".$row[anzahl]."<br>";
        echo "Sender:  ".$row[stream]."<br>";

    $row['anzahl'] - entweder $row['string'] oder $row[0] angeben - aber nichts "undefiniertes".

    mfg

    norbert =:-)

    1. Das ist aber kein Fehler, das hat bisher immer so gefunzt... :-(
      Entspricht vielleicht nicht der Norm oder dem Standart, wird vom Server aber gefressen...

      1. Das sind ja die Spaltenbezeichnungen, gell! Nicht das Du denkst das sind Variablen!
        Hat sich aber auch gerade erledigt, es lag am SQL Query, da war ein WHERE zu viel!

        1. Hallo Kai!

          Das sind ja die Spaltenbezeichnungen, gell! Nicht das Du denkst das sind Variablen!

          Yo.

          Hat sich aber auch gerade erledigt, es lag am SQL Query, da war ein WHERE zu viel!

          Ok. Hab meine Brille noch nicht auf ;-)

          mfg

          norbert =:-)

        2. Hi Kai,

          das ist interessant, vielleicht kann ich hier was neues lernen. Bisher nahm ich an, das mysql_fetch_array() ein assoziatives Array zurückliefert. Bei einem solchen Arrays dachte ich, daß der Zugriffsindex ein String oder ein numerischer Wert ist. In Deinem Skript:

          $row[anzahl]

          ist anzahl eine Konstante; bis zur aktuellen Version geht PHP so vor, daß bei nicht erfolgter Definition der Konstante diese in ein Stringliteral umgewandelt wird - deshalb funktioniert Dein Skript versehentlich.

          Das sind ja die Spaltenbezeichnungen, gell! Nicht das Du denkst das sind Variablen!

          Was genau lerne ich aus dieser Aussage? Daß man bei Spaltenbezeichnern keine Quotes im Arrayindex verwendet?

          Danke für die ausstehende Erleuchtung!

          Robert