mdean
|
Forenposter
|
|
registriert
|
03.01.2007
|
wohnt in
|
Schweiz
|
Beiträge
|
90
|
|
Sry Flitze, dass ich jetzt wieder mit so einem blöden Problem komme, aber ich weiss da nicht weiter. Es die letzte Hürde die ich überwinden muss, bevor ich dann endlich meine Page veröffentlichen kann.
Ich hab sowohl diesen Thread als auch das Tutorial gelesen und ich versteh immernoch Bahnhof ...
Ich brauche eine Blätterfunktion bei meiner Page, bei der man verschiedene Interpreten auswählen kann (siehe meine früheren Posts). Pro Seite sollten etwa 40 Datensätze angezeigt werden. Ich hab versucht den Code anzupassen und dann bei mir reinzukopieren, aber es erschienen einfach die Zahlen als Link ohne irgend etwas zu bewirken.
Hier nochmal alles was an code vorkommt:
Zuerst habe ich ja mit folgendem code eine Buchstabennavigation:
PHP:
<? $_GET['Interpret'] = isset($_GET['Interpret'])?$_GET['Interpret']:'A';
// Navi-Links erzeugen
$alphabet = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
foreach($alphabet as $letter)
echo "<a href=\"".$_SERVER['PHP_SELF']."?Interpret=".$letter."\">".$letter."</a> | \n";
if(isset($_GET['Interpret'])){
// auf ein Zeichen kürzen
$_GET['Interpret'] = substr($_GET['Interpret'],0,1);
$sql = "SELECT
NewName,
Interpret,
Songname,
Freigabe
FROM
notes
WHERE
Freigabe IS NOT NULL
AND Interpret LIKE '".mysql_real_escape_string($_GET['Interpret'])."%'
GROUP BY Interpret
ORDER BY Interpret ASC
";
$result = mysql_query($sql);
}
?>
So gebe ich die Interpreten dann aus:
PHP:
<?
if (mysql_num_rows($result)==0) {
echo "Keine Datensätze vorhanden";
}
while($row = mysql_fetch_assoc($result)){
echo "<a href=\"detail.php?Int=".$row['Interpret']."\">".$row['Interpret']."</a><br>\n";
}?>
Und hier wäre mein etwas angepasster Code der Blätterfunktion:
PHP:
<?php
// 1. Prüfen, ob ?seite=.. übergeben wurde, falls nein, Seite 1 laden
$_GET['seite']=isset($_GET['seite'])?(int)$_GET['seite']:1;
// 3. Durch (int) 'casten' wir $_GET['seite'] auch gleich als Zahl,
// also kann auch ein Buchstabe drin stehn, ohne das was passiert
// 2. höchste Seitenzahl ausrechnen
$sql = "SELECT
COUNT(*)
FROM
notes
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$anzahl = mysql_result($result, 0);
$seiten_gesamt = ceil($anzahl/10); // Seiten ausrechnen und aufrunden
// 2. Prüfen, ob der übergeben Wert zu groß oder zu klein ist und
// wenn das der Fall ist, den Wert anpassen
if($_GET['seite'] < 1)
$_GET['seite'] = 1;
if($_GET['seite'] > $seiten_gesamt)
$_GET['seite'] = $seiten_gesamt;
// Seitenzahlen anzeigen
for($i=1; $i<=$anzahl; $i++)
echo "<a href=\"index.php?seite=".$i."\">$i</a> \n";
// Starpunkt für das Auslesen berechnen
$seite = ($_GET['seite']-1)*10;
// Datensätze auslesen
$sql = "SELECT
NewName,
Interpret,
Songname,
Freigabe
FROM
notes
WHERE
Freigabe IS NOT NULL
AND Interpret LIKE '".mysql_real_escape_string($_GET['Interpret'])."%'
GROUP BY Interpret
ORDER BY Interpret ASC
LIMIT
".$seite.",10
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Aber wie gesagt der gibt mir einfach die so viele Zahlen aus, wie Datensätze in meiner DB sind, was ja nicht sein sollte, da es ja nur eine nächste Seitenzahl anzeigen sollte, wenn die Datensätze z.B. 40 übersteigt. Und was das ganze ja so kompliziert macht, ist das ich ja eine Buchstabennavigation habe.
Ein Beispiel wie es eigentlich funktionieren sollte:
Der User klickt auf B, alle Interpreten mit dem Buchstaben B werden angezeigt (funktioniert ja auch schon). Sollte es aber jetzt mehr als 40 Interpreten mit Anfangsbuchstabe B haben so sollte der User auf eine 2 klicken können um die Datensätze 40-80 sehen zu können.
Wäre verdammt froh wenn du mir bei dieser letzten Hürde noch helfen könntest. Ist sicher das letzte mal dass ich dich nach code fragen werde. Aber ich weiss da einfach nicht weiter....
Vielen Dank schon im voraus...
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Also ich denke mal der Hund liegt bei folgendem Codestück begraben:
PHP:
<?php
// 2. höchste Seitenzahl ausrechnen
$sql = "SELECT
COUNT(*)
FROM
notes
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$anzahl = mysql_result($result, 0);
?>
Du zählst alle Datensätze, die in notes vorhanden sind, was du ja bereits selbst bemerkt hast :
Zitat:Aber wie gesagt der gibt mir einfach die so viele Zahlen aus, wie Datensätze in meiner DB sind, was ja nicht sein sollte, [...]
Du könntest es mal hiermit versuchen:
PHP:
<?php
// 2. höchste Seitenzahl ausrechnen
$sql = "SELECT
COUNT(Interpret)
FROM
notes
WHERE
Freigabe IS NOT NULL AND
Interpret LIKE '".mysql_real_escape_string($_GET['Interpret'])."%'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$anzahl = mysql_result($result, 0);
?>
Gruß
Flitze
|