• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Blätterfunktion funktioniert nicht

Status
Für weitere Antworten geschlossen.

FleyerShaver

Neues Mitglied
Meine Blätterfunktion funktioniert nicht. Es wird keine Zahl angezeigt. Hier ist der Code:
PHP:
$sql = "SELECT COUNT(*) as anzahl FROM gc_game_games WHERE cat=".$_GET['id']."";
$result = mysql_query($sql) OR die(mysql_error());
$anzahl = mysql_result($result, 0);
$num_pages = ceil($anzahl/10);
/*
if(!$num_pages) {
$num_pages = 1;
}*/
if(!isset($_GET['page']))
{
$start = 1;
} else {
$start = $_GET['page'];
}
$offset = ($start - 1) * 10;
if($num_pages > 1) {
        echo "<p>;\n";
        for($i = 1; $i <= $num_pages; $i++) {
            if($i == $start) {
                // ich bin ja schon auf der Seite. Also
                // Seitenzahl ohne Link erzeugen
                echo $i."\n";
            } else {
                echo "<a href=\"game_cats.php?id=".$_GET['id']."&amp;page=".$i."\">\n";
                echo $i."\n";
                echo "</a>\n";
            }
        }
        echo "</p>\n";
    }
$sql = "SELECT * FROM gc_game_games WHERE cat=".$_GET['id']." ORDER BY id DESC LIMIT ".$offset.", 10";
$query = mysql_query($sql) OR die(mysql_error());
 
Wenn ich das richtig verstehe, versuchst du hiermit die anzahl der datensätzte zu bestimmen:
PHP:
$sql = "SELECT COUNT(*) as anzahl FROM gc_game_games WHERE cat=".$_GET['id']."";
$result = mysql_query($sql) OR die(mysql_error());
$anzahl = mysql_result($result, 0);

Dazu verwendest du mysql_result(). Wenn ich den Manual eintrag richtig verstehe müsstest du es so machen:
PHP:
$anzahl = mysql_result($result, 0, 'anzahl');
Weil:
PHP Manual schrieb:
mysql_result() liefert den Inhalt eines Felds aus einem Anfrageergebnis. Das Argument Feld kann der Feldname, der Feldoffset ein Bezeichner in der Form 'Tabellenname.Feldname.' sein. Wenn das Feld einen Alias besitzt ('select foo as bar from...') muss der Alias anstatt des Feldnamens verwendet werden.

Mal abgesehen davon kannst du die anzahl der einträge auch einfacher mit mysql_num_rows() bestimmen.
Da du die daten sowieso noch abfragst geht das wahrscheinlich schneller als zweimal eine anfrage an den mysql server zu schicken.

Sonst kann ich keine fehler erkennen. Vielleicht solltest du kommentare in den code schreiben. Dein code ist zwar noch gut lesbar aber du erleichterst es denn leuten dir zu helfen wenn du das machst.
 
Es funktioniert immer noch nicht an der Stelle ist irgentwo ein Fehler.
PHP:
$sql = "SELECT COUNT(*) as anzahl FROM gc_game_games WHERE cat=".$_GET['id']."";
$result = mysql_query($sql) OR die(mysql_error());
//$anzahl = mysql_result($result, 0);
//$num = mysql_num_rows($result);
$anzahl = mysql_num_rows($result);
$num_pages = ceil($anzahl/10);
echo "$anzahl";
Wenn ich das Ergebnis mit echo Abfrage kommt immer 1 raus.
 
Mal abgesehen davon kannst du die anzahl der einträge auch einfacher mit mysql_num_rows() bestimmen.
Da du die daten sowieso noch abfragst geht das wahrscheinlich schneller als zweimal eine anfrage an den mysql server zu schicken.

Ne, der MySQL Server ist in der Regel, selbst bei mehrern Abfragen mit reinen SQL Statements aka COUNT schneller als ein mysql_num_rows().

Ich beziehe mich da auf eigene performancetests, die ich mal gemacht habe ...

Nur so als einschub ;)

Gruß Sven
 
PHP:
$sql = "SELECT COUNT(*) as anzahl FROM gc_game_games WHERE cat=".$_GET['id']."";
Liegt wahrscheinlich daran das du nicht die datensätze aus der datenbank holst sondern nur die anzahl und das ist ja bekanntlich ein wert.

boehseronkel schrieb:
Ne, der MySQL Server ist in der Regel, selbst bei mehrern Abfragen mit reinen SQL Statements aka COUNT schneller als ein mysql_num_rows().
Danke, gut zu wissen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben