Blättern - Ein paar Fragen

Vronni

Grünschnabel
Ich habe heute dieses Tutorial in meiner Seite eingebaut, habe aber noch ein paar Fragen:

1. Wie schaffe ich es, dass bei Seite 1, statt bei Seite 0 angefangen wird?
2. Warum steht auch bei Seiten, wo es keine weitere Seite mehr gibt eine "next"?
3. Warum steht bei Seiten, wo es noch gar keine Einträge gibt (z.B. bei "Black" unten im Code) eine 0?

Hier der Code:

PHP:
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>VotP</title>
<link rel="STYLESHEET" type="text/css" href="../home.css">
</head>
<body><center><a href="type.php?coat=Bay">Bay</a> | <a href="type.php?coat=Black">Black</a> | <a href="type.php?coat=Chestnut">Chestnut</a> | <a href="type.php?coat=Gray">Gray</a> | <a href="type.php?coat=Isabella">Isabella</a> | <a href="type.php?coat=Piebald">Piebald</a> | <a href="type.php?coat=Other">Other</a> | <a href="type.php?coat=Foal">Foal</a> | <a href="taken.php">Taken Pictures</a>
<?php
  $proseite = 2;
  $coat=($_GET['coat']);
  include("config.inc.php");
  $verbindung=mysql_connect("$dbhost","$dbuser","$dbpasswd");
  mysql_select_db ($db);
  $start=$_GET['page'] * $proseite;
  $sqlbefehl="select * from picture where type='$coat' and taken='' order by no ASC LIMIT $start,$proseite";
  $result = mysql_query($sqlbefehl,$verbindung);
  $number = mysql_num_rows($result);
  $seiten=ceil($number/$proseite);
  $ende = $start + $proseite;
  if ($ende>$number) { $ende = $number; }
  $ergebnis=mysql_db_query("$db",$sqlbefehl,$verbindung);
  while ($row = mysql_fetch_assoc($ergebnis))
  {$img = $row['img'];
  $no = $row['no'];
  $copyright = $row['copyright'];
  $copyrighturl = $row['copyrighturl'];
  $type = $row['type'];
  $breed = $row['breed'];
  $taken = $row['taken'];
  echo("<br><br><table><tr><td rowspan='4'><a href='$img' target='blank'><img src='$img' width='150px' border='0'></a></td><th>No.</th><td>$no</td></tr><tr><th>&copy; by</th><td><a href='$copyrighturl'>$copyright</a></td></tr><tr><th>Type</th><td>$type</td></tr><tr><th>Breed</th><td>$breed</td></tr></table>");
  }
  if ($_GET['page']>0) {
    $i=$_GET['page']-1;
    echo "<a href=\"type.php?coat=$coat&page=$i\">previous</a> | ";
}
for($i=0; $i<=$seiten; $i++) {
    if ($i==$_GET['page']) {
        echo "<b>$i</b>&nbsp;";
    }
    else {
        echo "<a href=\"type.php?coat=$coat&page=$i\">$i</a>&nbsp;";
    }
}
if ($_GET['page']<$seiten) {
    $i=$_GET['page']+1;
    echo "| <a href=\"type.php?coat=$coat&page=$i\">next</a>";
}
  ?>
</body>
</html>
 
Zuletzt bearbeitet:
Hallo und Willkommen im Forum.

Zu deiner ersten Farge:
PHP:
if ($_GET['page']>1) {
    $i=$_GET['page']-1;
    echo "<a href=\"type.php?coat=$coat&page=$i\">previous</a> | ";
}
for($i=1; $i<=$seiten; $i++) {
    if ($i==$_GET['page']) {
        echo "<b>$i</b>&nbsp;";
    }
    else {
        echo "<a href=\"type.php?coat=$coat&page=$i\">$i</a>&nbsp;";
    }
}
if ($_GET['page']<$seiten) {
    $i=$_GET['page']+1;
    echo "| <a href=\"type.php?coat=$coat&page=$i\">next</a>";
}
Wenn du den alten Code mit diesem Codeschnipsel ersetzt, sollte es funktioneren.

Der Rest der Fragen sollten sich dann auch geklärt haben.

Achja. Bette deinen Code doch bitte in die PHP Tags ein (code=php). Dann kann man den Code besser lesen.
 
Das nächste Mal xD Habs nich gewusst ;) Bin hier noch nicht lang.

Du hast nur die 0er durch 1er ersetzt, oder? Funktioniert nicht. Darauf bin ich auch schon gekommen ^.^
 
Bei mir hat es so funktioniert.

Habe mir den Code etwas vereinfacht. War zu faul, jetzt eine DB zu erstellen ;)
PHP:
<?php
  $proseite = 2;
  $_GET['page'] = 5;
  $coat='test';
  $start=$_GET['page'] * $proseite;

  $number = 20;
  $seiten=ceil($number/$proseite);
  $ende = $start + $proseite;
  if ($ende>$number) { $ende = $number; }

  if ($_GET['page']>1) {
    $i=$_GET['page']-1;
    echo "<a href=\"type.php?coat=$coat&page=$i\">previous</a> | ";
}
for($i=1; $i<=$seiten; $i++) {
    if ($i==$_GET['page']) {
        echo "<b>$i</b>&nbsp;";
    }
    else {
        echo "<a href=\"type.php?coat=$coat&page=$i\">$i</a>&nbsp;";
    }
}
if ($_GET['page']<$seiten) {
    $i=$_GET['page']+1;
    echo "| <a href=\"type.php?coat=$coat&page=$i\">next</a>";
}
  ?>

Kannst du direkt aufrufen. Musst nicht mit ?page=SEITENNUMMER sein. (Testzwecke ;)).
 
Zuletzt bearbeitet:
Bei mir funktioniert das aber nicht. Und so wie du's jetzt hast, bringts mir ja auch nicht viel.
Keine Ahnung warum, aber irgendwie muss die Nummer der Zeilen falsch sein, bzw das Ergebnis bei ceil(). Anders kann ichs mir nicht erklären.
 
Was ist jetzt?
PHP:
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>VotP</title>
<link rel="STYLESHEET" type="text/css" href="../home.css">
</head>
<body><center><a href="type.php?coat=Bay">Bay</a> | <a href="type.php?coat=Black">Black</a> | <a href="type.php?coat=Chestnut">Chestnut</a> | <a href="type.php?coat=Gray">Gray</a> | <a href="type.php?coat=Isabella">Isabella</a> | <a href="type.php?coat=Piebald">Piebald</a> | <a href="type.php?coat=Other">Other</a> | <a href="type.php?coat=Foal">Foal</a> | <a href="taken.php">Taken Pictures</a>
<?php
	include("config.inc.php");
	$verbindung=mysql_connect($dbhost,$dbuser,$dbpasswd);
	mysql_select_db ($db, $verbindung);
	
	$proseite = 2;
	$coat = $_GET['coat'];
	$page = (isset($_GET['page']) && !empty($_GET['page'])?$_GET['page']:1);
	$start = ($page * $proseite) - $proseite;
	
	$sqlbefehl = "SELECT * FROM `picture` WHERE `type` = '".$coat."' AND `taken` = '' order by no ASC";
	$result = mysql_query($sqlbefehl,$verbindung);
	$number = mysql_num_rows($result);
	
	$seiten = ceil($number/$proseite);
	$ende = $start + $proseite;
	
	if ($ende>$number)
	{
		$ende = $number;
	}

    $sqlbefehl = "SELECT * FROM `picture` WHERE `type` = '".$coat."' AND `taken` = '' order by no ASC LIMIT ". $start.",".$proseite."";
	$result = mysql_query($sqlbefehl,$verbindung);
	
	while ($row = mysql_fetch_assoc($result))
	{
		$img = $row['img'];
		$no = $row['no'];
		$copyright = $row['copyright'];
		$copyrighturl = $row['copyrighturl'];
		$type = $row['type'];
		$breed = $row['breed'];
		$taken = $row['taken'];
		echo("<br><br><table><tr><td rowspan='4'><a href='".$img."' target='blank'><img src='".$img."' width='150px' border='0'></a></td><th>No.</th><td>".$no."</td></tr><tr><th>&copy; by</th><td><a href='".$copyrighturl."'>".$copyright."</a></td></tr><tr><th>Type</th><td>".$type."</td></tr><tr><th>Breed</th><td>".$breed."</td></tr></table>");
	}

	if ($page>1)
	{
		$i = $page-1;
		echo "<a href=\"type.php?coat=$coat&page=$i\">previous</a> | ";
	}

	for($i = 1; $i <= $seiten; $i++)
	{
		if ($i == $page)
		{
			echo "<b>$i</b>&nbsp;";
		}
		else
		{
			echo "<a href=\"type.php?coat=$coat&page=$i\">$i</a>&nbsp;";
		}
	}

	if ($page < $seiten)
	{
		$i = $page+1;
		echo "| <a href=\"type.php?coat=$coat&page=$i\">next</a>";
	}
?>
</body>
</html>

Zudem hattest du glaube ich noch einen kleinen Denkfehler beim auslesen der Seitenanzahl. Du hast die Seitennummern anhand der SQL Anfrage für die begrenzten Datensätze aufgebaut.
 
Zuletzt bearbeitet:
Er fängt bei Seite 1 an, zeigt aber kein "next" an, obwohl eigentlich noch 'ne Seite gibt. *seufz*
 
Zurück