[COLOR=#333130][FONT=Tahoma]Hallo Zusammen.[/FONT][/COLOR]
[FONT=Tahoma][COLOR=#333130]Ich hänge jetzt schon eine Woche an einem Problem und komm einfach nicht weiter ohne jemanden um Hilfe zu bitten. Zwar bin ich kein blutiger Anfänger in PHP, bin aber noch lange nicht so weit dass ich behaupten könnte bereits alles zu können.[/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]Ich arbeite mit: [/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]- PHP 5.3.8[/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]- Dreamweaver 5.5 [/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]Ich habe in der index.php ein kleines Formular, mit dem ich einige Daten vom User abfrage. Z.B. Alter (von-bis), Land, usw. [/COLOR][/FONT]
[COLOR=#333130][FONT=Tahoma]Hier die abgespeckten Zeilen des Scriptes:[/FONT][/COLOR]
[FONT=Tahoma][COLOR=#333130][COLOR=#333130][FONT=Tahoma]Die Daten (aus einer MySQL-DB) werden per POST an "schnellsuche.php" übergeben und kommen auch dort an. Hier möchte ich die Ergebnisliste aus der vorherigen Abfrage seitenweise anzeigen lassen und die Daten mit einer "Blätterfunktion" versehen.[/FONT][/COLOR]
[FONT=Tahoma][COLOR=#333130]Die Ergebnismenge/-Liste ist korrekt und wird richtig ausgegeben (ohne Blätterfunktion). MIT Blätterfunktion ist es so, dass nur die ERSTE SEITE richtig angezeigt wird. Klicke ich auf 2, 3, 4, usw. (Blätter-Links) erscheint dieser Fehler:[/COLOR][/FONT]
[COLOR=#943634][FONT=Tahoma]Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\singleboerse\schnellsuche.php on line 74[/FONT][/COLOR]
[FONT=Tahoma][COLOR=#943634]Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ) AND (adressen.aktiv = 'Aktiviert') AND (adressen.i' at line 3[/COLOR][/FONT]
(Zeile 74 = [COLOR=black]$total = mysql_num_rows($query);)[/COLOR]
[COLOR=#333130][FONT=Tahoma]Komisch bei diesem Fehler ist auch, dass "(adressen.i' nirgens weder im Script noch in der DB vorhanden ist bzw. irgendwo angesprochen wird![/FONT][/COLOR]
[FONT=Tahoma][COLOR=#333130]Hier der (abgespeckte) Code von der "schnellsuche.php":[/COLOR][/FONT][/COLOR][/FONT]
(Normalerweise ist das Script sauber eingerückt und dokumentiert. Hab das nur wegen der Anzahl Zeichen hier im Forum gekürzt.)
Ich weiß dass noch Angriffsflächen im Script sind, darum kümmere ich mich allerdings erst später, sobald die eigentliche Funktion des Scripts läuft.
Wie gesagt, die erste Seite der Abfrage-Ergebnisliste wird korrekt angezeigt - ebenso die Anzahl der Seiten und die Ergebnismenge ($total). Klicke ich allerdings auf Seite 2, 3, usw. bekomm ich nichts mehr. Ich denke dass das Problem daher führt, dass beim Aufruf der zweiten Seite die Variablen (z.B. $total, ss_suche, usw.) leer sind.
Könnte ich die irgendwie vor dem Aufruf der zweiten Seite wieder auffüllen, denke ich dass es funktionieren müßte. Aber ich weiß nicht wie ich das machen soll.
Ich bin mehrere Stunden täglich am PHP lernen, neben mir liegen einige dicke, gute PHP Bücher und ich google mir die Finger wund. Aber leider kam ich bisher zu keinem Ziel und möchte nun EUCH, die erfahreneren User um Hilfe bitten.
Vielen Dank im Voraus!!!
[FONT=Tahoma][COLOR=#333130]Ich hänge jetzt schon eine Woche an einem Problem und komm einfach nicht weiter ohne jemanden um Hilfe zu bitten. Zwar bin ich kein blutiger Anfänger in PHP, bin aber noch lange nicht so weit dass ich behaupten könnte bereits alles zu können.[/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]Ich arbeite mit: [/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]- PHP 5.3.8[/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]- Dreamweaver 5.5 [/COLOR][/FONT]
[FONT=Tahoma][COLOR=#333130]Ich habe in der index.php ein kleines Formular, mit dem ich einige Daten vom User abfrage. Z.B. Alter (von-bis), Land, usw. [/COLOR][/FONT]
[COLOR=#333130][FONT=Tahoma]Hier die abgespeckten Zeilen des Scriptes:[/FONT][/COLOR]
HTML-Code:
form action="schnellsuche.php" method="Post" name="suche" id="suche">[ td height="40" align="left" valign="middle">Suche< <label for="ss_suche"></label> <select name="ss_suche" id="ss_suche"> <option value="Schwarz">Schwarz</option> <option value="Blau">Blau</option> </select> <td height="40" align="left" valign="middle">zwischen <label for="ss_von"></label> <select name="ss_von" id="ss_von"> <option value="10">10</option> <option value="11">11</option> ... ... und <label for="ss_bis"></label> <select name="ss_bis" id="ss_bis"> <option value="10">10</option> <option value="11">11</option> ... ... <label for="ss_land"></label> <select name="ss_land" id="ss_land"> [<option value="Deutschland">Deutschland</option> <option value="Österreich">Österreich</option> </select></td>
[FONT=Tahoma][COLOR=#333130]Die Ergebnismenge/-Liste ist korrekt und wird richtig ausgegeben (ohne Blätterfunktion). MIT Blätterfunktion ist es so, dass nur die ERSTE SEITE richtig angezeigt wird. Klicke ich auf 2, 3, 4, usw. (Blätter-Links) erscheint dieser Fehler:[/COLOR][/FONT]
[COLOR=#943634][FONT=Tahoma]Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\singleboerse\schnellsuche.php on line 74[/FONT][/COLOR]
[FONT=Tahoma][COLOR=#943634]Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ) AND (adressen.aktiv = 'Aktiviert') AND (adressen.i' at line 3[/COLOR][/FONT]
(Zeile 74 = [COLOR=black]$total = mysql_num_rows($query);)[/COLOR]
[COLOR=#333130][FONT=Tahoma]Komisch bei diesem Fehler ist auch, dass "(adressen.i' nirgens weder im Script noch in der DB vorhanden ist bzw. irgendwo angesprochen wird![/FONT][/COLOR]
[FONT=Tahoma][COLOR=#333130]Hier der (abgespeckte) Code von der "schnellsuche.php":[/COLOR][/FONT][/COLOR][/FONT]
PHP-Code:
include "dbconnect.php";
$ss_von = (isset($_POST['ss_von'])) ? $_POST['ss_von'] : "";
$ss_bis = (isset($_POST['ss_bis'])) ? $_POST['ss_bis'] : "";
$ss_suche = (isset($_POST['ss_suche'])) ? $_POST['ss_suche'] : "";
$ss_land = (isset($_POST['ss_land'])) ? $_POST['ss_land'] : "";
$pfad = "schnellsuche.php?ss_von=$ss_von&ss_bis=
$ss_bis&ss_suche=$ss_suche";
$query = mysql_query("SELECT id, name, emailadresse, land, pic_1,
feld1, feld2, wiealt, aktiv
FROM adressen
WHERE (adressen.wiealt BETWEEN $ss_von AND $ss_bis)
AND (adressen.aktiv = 'Aktiviert')
AND (adressen.ichbin = '$ss_suche')
AND (adressen.land = '$ss_land') ");
$datensaetze_pro_seite = "3";
$p = "5";
$total = mysql_num_rows($query);
$seiten = ceil($total / $datensaetze_pro_seite);
if(empty($_GET['go'])){
$go = 1;
}elseif($_GET['go'] <= 0 || $_GET['go'] > $seiten){
$go = 1;
}else{
$go = mysql_real_escape_string($_GET['go']);}
$links = array();
if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; }
if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{
$danach = $p; }
$off = ($go - $davor);
if ($go- $davor > 1){
$first = 1;
$links[] = "<a href=\"$pfad&go=$first\" title=\"Zur ersten Seite springen\">« Erste ...</a>\n";
}
if($go != 1){
$prev = $go-1;
$links[] = "<a href=\"$pfad&go=$prev\" title=\"Eine Seite zurueck blaettern\"> «</a>\n";
}
for($i = $off; $i <= ($go + $danach); $i++){
if ($i != $go){
$links[] = "<a href=\"$pfad&go=$i\">$i</a>\n";
}elseif($i == $seiten) {
$links[] = "<span class=\"current\">[ $i ]</span>\n";
}elseif($i == $go){
$links[] = "<span class=\"current\">[ $i ]</span>\n";
} // close if $i
}
if($go != $seiten){
$next = $go+1;
$links[] = "<a href=\"$pfad&go=$next\" title=\"Eine Seite weiter blaettern\"> » </a>\n";
}
if($seiten - $go - $p > 0 ){
$last = $seiten;
$links[] = "<a href=\"$pfad&go=$last\" title=\"Zur letzten Seite springen\">... Letzte »</a>\n";
}
$start = ($go-1) * $datensaetze_pro_seite;
$link_string = implode(" ", $links);
$ss_vonalter = (isset($_POST['ss_von'])) ? $_POST['ss_von'] : "";
$ss_bisalter = (isset($_POST['ss_bis'])) ? $_POST['ss_bis'] : "";
$ss_ichsuche = (isset($_POST['ss_suche'])) ? $_POST['ss_suche'] : "";
$ss_land = (isset($_POST['ss_land'])) ? $_POST['ss_land'] : "";
$abfrage = mysql_query("SELECT id, name, emailadresse, land, pic_1,
feld1, feld2, wiealt, aktiv
FROM adressen
WHERE (adressen.wiealt BETWEEN $ss_von AND $ss_bis)
AND (adressen.aktiv = 'Aktiviert')
AND (adressen.ichbin = '$ss_suche')
AND (adressen.land = '$ss_land')
LIMIT $start,$datensaetze_pro_seite ")
OR die("Error: $abfrage".mysql_error());
Ich weiß dass noch Angriffsflächen im Script sind, darum kümmere ich mich allerdings erst später, sobald die eigentliche Funktion des Scripts läuft.
Wie gesagt, die erste Seite der Abfrage-Ergebnisliste wird korrekt angezeigt - ebenso die Anzahl der Seiten und die Ergebnismenge ($total). Klicke ich allerdings auf Seite 2, 3, usw. bekomm ich nichts mehr. Ich denke dass das Problem daher führt, dass beim Aufruf der zweiten Seite die Variablen (z.B. $total, ss_suche, usw.) leer sind.
Könnte ich die irgendwie vor dem Aufruf der zweiten Seite wieder auffüllen, denke ich dass es funktionieren müßte. Aber ich weiß nicht wie ich das machen soll.
Ich bin mehrere Stunden täglich am PHP lernen, neben mir liegen einige dicke, gute PHP Bücher und ich google mir die Finger wund. Aber leider kam ich bisher zu keinem Ziel und möchte nun EUCH, die erfahreneren User um Hilfe bitten.
Vielen Dank im Voraus!!!
Kommentar