phpfehler bei ausgabe der seiten?

Alexander W

Aktives Mitglied
Hi an alle

ich habe schon länger ein script welches (ich kanns einfach noch ned alles) nicht selbst erstellt habe

Dieses Script gibt mir nun in einer datei die verschiedenen programme aus und listet diese auf. Sobald es mehr als die vorgegebenen Programme in der rubrik enthält sollten es eigentlich dann mehrere seiten sein aber das ist es nicht und ich finde einfach nicht den Fehler damit ich in den entsprechenden rubriken dann auf den nächsten seiten die restlichen programme sehe.

CODE $_progquery= mysql_query ("SELECT * FROM programs WHERE cat = ".$_rubrikdata['ID']." AND status = \"OK\" ORDER BY name LIMIT $limit, 10");
$_prognum = @mysql_num_rows($_progquery);
if ($_prognum%10==0 || $_prognum%10>=5)
$pages = round($_prognum/10,0);

else
$pages = round($_prognum/10,0)+1;

if ($pages>1)
{
for ($i=1; $i<=$pages; $i++)
{
if ($i == $thispage)
$navigate .= " [ ><strong> Seite $i </strong>< ] ";
elseif ($i==1)
$navigate .= " | <a href=\"".$root_url.$func->url_rewrite("rubrik.php?cat=".$func->url_safe($_catdata['name'])."&subcat=".$func->url_safe($_subcatdata['name'])."&rubrik=".$func->url_safe($_rubrikdata['name'])."&id=".$_rubrikdata['ID'],"rubrik",false,"Seite1-")."\" class=\"subcat\">Seite $i</a> | \n";
else
$navigate .= " | <a href=\"".$root_url.$func->url_rewrite("rubrik.php?cat=".$func->url_safe($_catdata['name'])."&subcat=".$func->url_safe($_subcatdata['name'])."&rubrik=".$func->url_safe($_rubrikdata['name'])."&site=$i&id=".$_rubrikdata['ID'],"rubrik",false,"Seite$i-")."\" class=\"subcat\">Seite $i</a> | \n";
}
}
else
{
$navigate = "Seite 1";
}
$limit = ($thispage-1)*10;
$_progquery= mysql_query ("SELECT * FROM programs WHERE cat = ".$_rubrikdata['ID']." AND status = \"OK\" ORDER BY name LIMIT $limit, 10");
$_titlepath = implode(" > ", $_path);


Das ist der dubiose code aus dem ich persönlich leider nicht schlau werde aber vielleicht wenn ihr so nett sein würdet mit eurer hilfe den fehler zu beseitigen.
 
auf die gefahr hin das ich mich jetzt die schnelle verschaut haben sollte , antworte ich trzdm mal ...

Also das Script holt, so wie ich das sehe,

10 Datensätze aus der Tabelle programms ...
es zählt diese 10 datensätze ...
das ergebnis wird durch 10 geteilt (weil ja immer 10 pro seite) ....
wenn dass dann größer als 1 ist gibts seitenzahlen/links zu erstellen
unsure.gif


mhhh ... 10 / 10 is immer 1
blink.gif


am besten mal das LIMIT aus der ersten SQL Abfrage entfernen, die soll ja zählen wieviele da sind.
So sind immer nur 10 da, weil $limit ist undefiniert und daher 0 ... ja und LIMIT 0,10 sind die ersten 10 der tabelle.

COUNT(*) wär natürlich besser und schneller ... aber das geht jetzt zuweit ...

Hoffe ich konnte was helfen ... schon komisch das dass hier keiner sieht
 
QUOTE (Gagget @ Do 31.8.2006, 18:32) [...] COUNT(*) wär natürlich besser und schneller ... aber das geht jetzt zuweit ... [...]

Die Ausnahmen sind auf jedenfall InnoDB-Tabellen und vermutlich andere MySQL-Engines, welche Transaktionen unterstützen.



MfG Sascha Ahlers
 
Warum sollte dies da nicht besser sein ?
huh.gif


Einfach alle Inhalte abholen und zählen kann ja wohl nicht die Lösung Deluxe sein. Soviel wie ich weiß optimiert MySQL eine COUNT(*) Abfrage von selbst, so das kein COUNT(id) oder sowas nötig ist.

Bzw. möge er mich mal aufklären wie es den besser geht. Irgendwie fehlt mir der Teil da oben.
 
Danke Gagget

Das funktioniert schonmal zur hälfte sehr gut nun wird der link zur zweiten oder dritten seite ebenfalls angezeigt aber wenn ich den link anklicke dann erscheint leider immer wieder die erste seite.

Kannst du mir dabei auch weiter helfen?
 
denke schon ... mal schauen

setz das mal an den anfang der Datei :

CODE
if( isset($_GET['site']))
$thispage = $_GET['site'];
else $thispage = 1;



dein Script geht davon aus das diese variable gesetzt ist ... oder änder den link den die funktion erzeugt ...aber solch eine oder eine ähnliche zeile bräuchtest du dann immernoch, fals register globals off ist ... also ist es auch egal.
 
Solch ein code steht dort schon in etwa

CODE $thispage = $_GET['site'];
if (!is_integer($thispage))
{
$thispage = 1;
}


Habs auch getestet diesen mit deinem zu ersetzen aber fehlanzeige gibt noch aussehensfehler dann dazu nur di inhalte bleiben immer die von seite eins
 
Zurück
Oben