Problem mit mysqli und count()

Loddar1

Erfahrenes Mitglied
Hallo Frühaufsteher...

Ich bekomme das mit dem zählen mit mysqli einfach nicht gebacken!

mein alter Code:
PHP:
$number = mysql_result(mysql_query("select count(*) FROM gbook"),0);
    $seiten=ceil($number/$basic['pseite']);
       $start=$_GET['np'] * $basic['pseite'];
$result = mysql_query("SELECT * FROM gbook ORDER BY datum DESC LIMIT $start,$basic[pseite]");
     while ($l = mysql_fetch_array($result)){
Funktionierte gut.
Der neue Code:
PHP:
$db = mysqli_connect("localhost", "root", "", "alladls");
if(!$db)
{
  exit("Verbindungsfehler: ".mysqli_connect_error());
}

  $number = mysql_result(mysqli_query($db,"select count(*) FROM gbook"),0);
       $seiten=ceil($number/$basic['pseite']);
           $start=$_GET['np'] * $basic['pseite'];
$result = mysqli_query($db,"SELECT * FROM gbook ORDER BY datum DESC LIMIT $start,$basic[pseite]");
     while ($l = mysqli_fetch_array($result)){

Ich nehme an, das diese Zeile 7:
Code:
$number = mysql_result(mysqli_query("select count(*) FROM gbook"),0);
das Problem ist und ich stelle mich wohl zu puckelig an.

Habe die Fehlercodes vergessen:
Code:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\html\a_alladls\sites\gbuch.php on line 7

Warning: Division by zero in C:\xampp\htdocs\html\a_alladls\sites\gbuch.php on line 8

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\html\a_alladls\sites\gbuch.php on line 11

Kann mir einer helfen und mir zeigen wie diese Zeile richtig geschrieben wird?
 
Zuletzt bearbeitet:
Hi

Falsch:
Code:
mysqli_query("select bla", 0);
Richtig:
Code:
mysqli_query($db,"select bla");

Außerdem mehr Fehlerbehandlung einbauen. Die meisten mysqli-Funktionen haben keine Garantie, ohne Probleme durchzulaufen, und davon die meisten geben im Fehlerfall false zurück. Prüfen und ggf. nicht einfach normal weitermachen.
 
Zuletzt bearbeitet:
Wenn du die Fehlerbehandlung nur beim Kopieren vergessen hast :rolleyes: weißt du ja auch sicher, welchen Fehler die die DB mitteilen will. Uns die Meldung zu sagen würde sehr helfen.
 
Nein, das meine ich nicht.

Ich meine, dass du dein PHP-Programm bei Fehlern nicht "abstürzen" lassen sollst, sondern die Returnwerte der Funktionen prüfen sollst, und bei Fehlern a) nicht einfach weitermachen (wie schon geschrieben), sondern zB. dem Benutzer sagen dass etwas nicht funktioniert hat, und b) den Datenbank-Fehler abfragen (auch wie schon geschrieben), zB. mit http://www.w3schools.com/php/func_mysqli_error.asp

Am derzeitigen Stand ist das Problem einfach dein PHP-Code, hat nichts mit der DB zu tun.
 
Hallo ich bin es nochmal, habe die Fehler gefunden und entfernt,
aber irgendwas fehlt!

Datenbank anbindung ok
mein alter Code:
PHP:
$number = mysql_result(mysql_query("select count(*) FROM gbook"),0);
$seiten=ceil($number/$basic['pseite']);
  $start=$_GET['np'] * $basic['pseite'];
$result = mysql_query("SELECT * FROM gbook ORDER BY id DESC LIMIT $start,$basic[pseite]");
while ($l = mysql_fetch_array($result))
    {
        ......
    }
$now=$_GET['np']+1;
for($i=0; $i<$seiten; $i++)
$number ="SELECT COUNT(*) FROM gbook";
$results = mysqli_query($db, $number);
  $seiten = mysqli_fetch_assoc($results);
   $seiten=ceil($number/$basic['pseite']);
    $start=$_GET['np'] * $basic['pseite'];
$result = mysqli_query($db,"SELECT * FROM gbook ORDER BY id DESC LIMIT $start,$basic[pseite]");
  while ($l = mysqli_fetch_array($result))
    {
            ........
    }
$now=$_GET['np']+1;
  for($i=0; $i<$seiten; $i++)
  {
        $now2=$i+1;
    if ($i==$_GET['np']) {$leiste.="[$now2]&nbsp;";
    }
        else
    {
    $leiste.='<a href="index.php?jump=gbuch&amp;np='.$i.'">'.$now2.'</a>&nbsp;';
    }
echo'Seite:&nbsp;'.$leiste;

Zeigt bei unter 10 Einträgen das an: Seiten [1]
Bei über 10 (15) Einträgen das an: Seiten [1] 2
So funktioniert das auch!

Bei Mysqli geht das nicht
mein neuer Code:
PHP:
$number ="SELECT COUNT(*) FROM gbook";
$results = mysqli_query($db, $number);
  $seiten = mysqli_fetch_assoc($results);
   $seiten=ceil($number/$basic['pseite']);
    $start=$_GET['np'] * $basic['pseite'];
$result = mysqli_query($db,"SELECT * FROM gbook ORDER BY id DESC LIMIT $start,$basic[pseite]");
  while ($l = mysqli_fetch_array($result))
    {
            ........
    }
$now=$_GET['np']+1;
  for($i=0; $i<$seiten; $i++)
  {
        $now2=$i+1;
    if ($i==$_GET['np']) {$leiste.="[$now2]&nbsp;";
    }
        else
    {
    $leiste.='<a href="index.php?jump=gbuch&amp;np='.$i.'">'.$now2.'</a>&nbsp;';
    }
echo'Seite:&nbsp;'.$leiste;

Zeigt nur das an: Seiten

Sieht einer von euch einen Fehler, warum die Zahl hinter Seiten nicht angezeigt wird?

Danke im vorraus Loddar1
 

Neue Beiträge

Zurück