Seitenwechsel

Godstyle

Erfahrenes Mitglied
Hi leute,

habe ein kleines roßes scriptproblem. ich möchte das bei einer mysql abfrage auf der seite nur 5 beiträge angezeigt werden.
Untenn soll man wenn es mehr als 5 Beiträge gibt auf die nächste Seite wechseln können. Bin noch recht neu in der Programmierung von PHP/mysql abfragen. Daher bitte nicht alles korriegieren wollen sondern mir bitte den Fehler mackieren. Wenn ich die Seite aufrufe kommt:

Parse error: syntax error, unexpected T_STRING, expecting on line 89.

wäre folgende:

PHP:
echo "<a href="seite?start=$zurueck"><< Zurück</a>";



so nun mal das ganze script:

PHP:
<?php

  $select = mysql_query("SELECT * FROM firma $start,5");
  
      $reihen = mysql_num_rows($select); 
     
    $zeigen = floor($reihen / 5); 
     
    if(!$start) { $start = 0.1; } 
    
    $result = "SELECT * FROM firma";
  echo "<table border='0' bgcolor='#FEF08D' >";
  while($row = mysql_fetch_object($result))
    {
	echo "<tr>";
	echo "<td>";
    echo $row->firmenname;
    echo "</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>";
    echo $row->straße;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->beschreibung;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->plz;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->ort;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->vorwahl;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->durchwahl;
	echo "</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "</tr>";
    }
	echo "</table>";
	
    if($start > 0.1) { 
            $zurueck = $start - 5; 
            echo "<a href="seite?start=$zurueck"><< Zurück</a>"; 
    } 
    for($i = 0; $i <= $zeigen; $i++) { 
        echo " <a href="seite?start=$n">$i</a> "; 
    $n += 5; 
    } 
    $weiter = $start + 5; 
    if($reihen > $weiter) { 
            echo "<a href="seite?start=$weiter">Weiter >></a>"; 
    } 


  ?>


ps: die verbindung zur DB besteht und funktionierte auch bis ich das sript erweitert habe daran liegt es also nicht wird durch:

PHP:
<?php
  include("../../../../../include/db.php");
  ?>

eingebunden.

Hoffe Ihr könnt mir helfen, so das ich es auch verstehe würde mir wünschen das ihr die falsche zeile kopiert und mir drunter die Richtige setzt.

mfg Godstyle
 
Wenn Du Quellcode postest bitte mit PHP Knopf des Forums....sonst kriegt man echt Augenkrebs :)


Ich würde den SQL Befehl einfach limitieren und per GET Variable die Anzahl steuern.

Also mal sehr vereinfacht:
PHP:
$query = "SELECT * FROM meinenews LIMIT ".$_GET["limit"].";";
und so würde dann ein Link aussehen.
Code:
<a href="start.php?limit=5">News</a>
und so für die "mehr" Seite

Code:
<a href="start.php?limit=20">mehr News</a>



Kleiner Tipp zu PHP Fehlermeldungen. Meistens ist der Fehler 1 Zeile über der angegebenen und PHP läuft erst in der folgenden auf Fehler.



Nachtrag:
Hab mir grad mal bissl den Code angeschaut. Folgendes kann nicht funktionieren.

PHP:
$result = "SELECT * FROM firma";
echo "<table border='0' bgcolor='#FEF08D' >";
while($row = mysql_fetch_object($result)){

}

Du definierst hier eine Query...schickst Diese aber nicht ab. Spätestens hier wird PHP abbrechen bzw. nichts ausgeben.

Richtig wäre:
PHP:
$query = "SELECT * FROM firma";
$result = mysql_query($query);
while($row = mysql_fetch_object($result)){  

}



Am besten schaust Du Dir diese Doku zu PHP noch mal an.
http://tut.php-q.net/index.html

und diese zum Thema Rechtschreibung und Zeichensetzung :rolleyes::D
http://www.duden.de/
 
Zuletzt bearbeitet:
Ok habe die untere änderung vorgenommen und hat soweit geklappt nun ist eine fehler meldung:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' on line 91

ist folgende:

PHP:
echo "<a href="seite?start=$zurueck"><< Zurück</a>";


das hat eben noch geklappt also muss es eigentlich soweit richtig sein aber das isst ihr wohl besser.




habe aber nun durch:

PHP:
$query = "SELECT * FROM firma";
$result = mysql_query($query);
while($row = mysql_fetch_object($result)){  

}


das echo table gelöscht wo soll das nun hin?
 
Zuletzt bearbeitet:
Holla Godstyle

Du musst in dem einen String die " escapen, da PHP sonst den Ausgabenstring durchtrennt und als 2 getrennte sieht.
Und ich würde die Variable durch den PunktParameter (.) abtrennen um die Übersichtlichkeit zu wahren.
Also so:

PHP:
echo "<a href=\"seite?start=". $zurueck ."\"><< Zurück</a>";


Gruß SimonErich
 
mach mal aus

PHP:
echo "<a href="seite?start=$zurueck"><< Zurück</a>";

PHP:
echo "<a href=\"seite?start=$zurueck\"><< Zurück</a>";

dann müßte es auch klappen.
 
ok habe eine 50%ige lösung ;)

im ernst habe das script geändert und zwar so:

PHP:
  <?php
  $select = mysql_query("SELECT * FROM firma");
  $reihen = mysql_num_rows($select); 
  $zeigen = floor($reihen / 5); 
  if(!$start) { $start = 0.1; } 
    
	
    $result = mysql_query("select * from firma limit$start,5"); 	
	   echo "<table>"; 

while($row = mysql_fetch_object($result)){  
 

	echo "<tr>";
	echo "<td>";
    echo $row->firmenname;
    echo "</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>";
    echo $row->straße;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->beschreibung;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->plz;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->ort;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->vorwahl;
	echo "</td>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "<td>";
    echo $row->durchwahl;
	echo "</td>";
	echo "</tr>";
	echo "<tr>";
	echo "<td>";
	echo "&nbsp;";
	echo "</td>";
	echo "</tr>";
}
	echo "</table>";

	
    if($start > 0.1) {
            $zurueck = $start - 5; 
            echo "<a href=\"$PHP_SELF?start=$zurueck\"><< Zurück</a>"; 
    }
    for($i = 0; $i <= $zeigen; $i++) {
        echo " <a href=\"$PHP_SELF?start=$n\">$i</a> ";
    $n += 5;
    }
    $weiter = $start + 5;
    if($reihen > $weiter) {
            echo "<a href=\"$PHP_SELF?start=$weiter\">Weiter >></a>"; 
    }
?>

nun erkennt er unten die anzahl der seiten und das auch richtig.

nun bekomme ich folgnde fehlermeldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

ist folgende zeile:

$result = mysql_query("select * from firma limit $start,5");

wenn ich in dieser zeile folgendes lösche:

limit $start,5

zeigt er mir unten die zahlen an und alle einträge untereinander also er begrenzt nicht mehr.

hoffe ihr könnt mit der sache was anfangen ansonsten:

http://www.vincita.de/stadt/weltweit/europa/deutschland/niedersachsen/goettingen/index.php?start=5.1
 
Versuch doch mal ein bisschen die Fehler zu finden.
Villeicht könnte es daran liegen, dass $start keinen Wert hat. Aus irgendeinem Grund ?
Gib den Wert von Start mal aus.
Häng ans mysql query ein or die(mysql_error()); dran, dann bekommst auch schon mehr Infos.
 
Ist der Quellcode, den du gepostet hast so rauskopiert aus deiner Datei? Da sind nämlich die Wörter zusammengeschrieben "limit$start,5", also da fehlt die Lücke zwischen Limit und der Variable. Bei deiner Fehlermeldung hast du dann allerdings eine Lücke.
Entweder das ist der Fehler oder, wie SimonErich schon geschrieben hat, $start ist nicht richtig.
 
Stimmt das hab ich im schnellen drüber schauen gar nicht gesehen.
Das könnte gut sein, dass dies den Fehler verursacht, aber auch hier würde ein mysql_error auskunft darüber geben.
Deshalb bau am besten einfach so lange du daran arbeitest das mysql error ein, dann bekommst du schneller raus warum etwas nicht funktioniert
 
so ihr hattet recht start war nicht richtig deklariert. danke. zum anderen es waren leerzeichen dazwischen zwischen.

jetzt nur noch nee kleinigkeit wenn ich auf der leist unten auf weiter klicke ändert er die daten nicht habe 75 einträge drinnen aber er bleibt immer bei den ersten 5.
 
Zurück