Seite 1 von 1

Webseitenzähler zeigt Fehler

Verfasst: Mi 16.Feb, 2022 11:13
von Icke
Hallo,

bin bei der Umstellung auf die Neue PHP Version auf Fehler gestossen. ?9

Notice: Undefined variable: page in /lexikon/index.php on line 11
Notice: Undefined variable: lines in /lexikon/index.php on line 13
Notice: Undefined offset: 0 in /lexikon/index.php on line 24

Hier mal das Script:

Code: Alles auswählen

// Seitenzähler
    $count = 0;
    $page = (int)$page;
    if ($page==0)  $page=1;
    $lines = (int)$lines;
    if ($lines==0)  $lines=25; // Zeilen pro Ausgabe
    $left_limit = ($page-1)*$lines;
    $sql = "SELECT COUNT(*) FROM lexikon WHERE wort LIKE '%$wort%' AND sus=1";
    	$result = mysqli_query($db, $sql))
	if ($sql) {  
		$hash = mysqli_fetch_assoc($result);
	  
      $total = (int)$hash[0];
    } else   $total = 0;
    $pages = (int)($total/$lines);
    if (($total % $lines)>0)
		++$pages;
Kann mir jemand dazu helfen?

Re: Webseitenzähler zeigt Fehler

Verfasst: Mi 16.Feb, 2022 17:27
von oxpus
Wenn das Script alles ist, fehlt klar die Initialisierung der beiden genannten Variablen.
Zumindest diese Zeile sollte an den Anfang:
$page = $lines = 0;

Re: Webseitenzähler zeigt Fehler

Verfasst: Do 17.Feb, 2022 07:43
von Icke
Morgen Oxpus,

Ich habe die Zeile reingesetzt, jetzt ist nur noch eine Notice

Code: Alles auswählen

Notice: Undefined offset: 0 in /htdocs/lexikon/index.php on line 22 
-> $total = (int)$hash[0];


Den Fehler kenn ich noch garnicht.

Re: Webseitenzähler zeigt Fehler

Verfasst: Do 17.Feb, 2022 17:39
von oxpus
Wenn mich nicht alles täuscht, wird in Index 0 nichts eingetragen aus der Datenbankabfrage.
Daher wäre es besser die Abfrage etwas anzupassen:

Code: Alles auswählen

$sql = "SELECT COUNT(*) FROM lexikon WHERE wort LIKE '%$wort%' AND sus=1";
    	$result = mysqli_query($db, $sql))
	if ($sql) {  
		$hash = mysqli_fetch_assoc($result);
	  
      $total = (int)$hash[0];
ändern in

Code: Alles auswählen

$sql = "SELECT COUNT(*) as total FROM lexikon WHERE wort LIKE '%$wort%' AND sus=1";
    	$result = mysqli_query($db, $sql))
	if ($sql) {  
		$hash = mysqli_fetch_assoc($result);
	  
      $total = (int)$hash['total'];
Das ist besser, insbesondere wenn man doch mal die Abfrage erweitern möchte.

Alternativ könnte man auch die Zeilen durch die Datenbank abrufen lassen.
Das wäre dann dieser Code:

Code: Alles auswählen

$sql = "SELECT * FROM lexikon WHERE wort LIKE '%$wort%' AND sus=1";
    	$result = mysqli_query($db, $sql))
	if ($sql) {  
		$total = mysqli_num_rows($result)