Abfrage-Ergebnisliste mit Blätterfunktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage-Ergebnisliste mit Blätterfunktion

    [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]
    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][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]
    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'] <= || $_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\">&laquo; Erste ...</a>\n"

    if(
    $go != 1){ 
    $prev $go-1;
    $links[] = "<a href=\"$pfad&go=$prev\" title=\"Eine Seite zurueck blaettern\"> &laquo;</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\"> &raquo; </a>\n";

     
    if(
    $seiten $go $p ){ 
    $last $seiten
    $links[] = "<a href=\"$pfad&go=$last\" title=\"Zur letzten Seite springen\">... Letzte &raquo;</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()); 
    (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!!!

  • #2
    Ich tippe mal ins Blaue hinein:

    Code:
    [FONT=Courier New][COLOR=#0000cc]$ss_von [/COLOR][COLOR=#006600]= (isset([/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_von'[/COLOR][COLOR=#006600]])) ? [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_von'[/COLOR][COLOR=#006600]] : [/COLOR][COLOR=#cc0000]""[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    [FONT=Courier New][COLOR=#0000cc]$ss_bis [/COLOR][COLOR=#006600]= (isset([/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_bis'[/COLOR][COLOR=#006600]])) ? [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_bis'[/COLOR][COLOR=#006600]] : [/COLOR][COLOR=#cc0000]""[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    [FONT=Courier New][COLOR=#0000cc]$ss_suche [/COLOR][COLOR=#006600]= (isset([/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_suche'[/COLOR][COLOR=#006600]])) ? [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_suche'[/COLOR][COLOR=#006600]] : [/COLOR][COLOR=#cc0000]""[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    [FONT=Courier New][COLOR=#0000cc]$ss_land [/COLOR][COLOR=#006600]= (isset([/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_land'[/COLOR][COLOR=#006600]])) ? [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'ss_land'[/COLOR][COLOR=#006600]] : [/COLOR][COLOR=#cc0000]""[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    [FONT=Courier New][COLOR=#0000cc]$pfad [/COLOR][COLOR=#006600]= [/COLOR][/FONT][COLOR=#cc0000][FONT=Courier New]"schnellsuche.php?ss_von=$ss_von&ss_bis=[/FONT][/COLOR][FONT=Courier New][COLOR=#cc0000]$ss_bis&ss_suche=$ss_suche"[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    Code:
    [FONT=Courier New][COLOR=#0000cc]$links[/COLOR][COLOR=#006600][] = [/COLOR][COLOR=#cc0000]"<a href=\"$pfad&go=$first\" title=\"Zur ersten Seite springen\">&laquo; Erste ...</a>\n"[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
    Du erstellst $pfad mit POST-Daten und erstellst daraus einen HREF-Link.
    Wenn Du aber auf einen HREF-Link klickst, erhält das aufgerufene Skript die Daten per GET und nicht per POST.

    cya

    Kommentar


    • #3
      Hallo sallow2001.

      Ja, da hast du eigentlich Recht. Aber wenn ich auf Seite 1 bin und auf einer der Seitenzahlen 2, 3, usw. mit meine Maus gehe (ohne zu klicken), dann sehe ich in der Statuszeile unten, dass die Werte per Link richtig gefüllt sind bzw. übergeben werden. Aber sie kommen - anscheinend - in der zweiten Seite (also nach dem Blättern von 1 auf 2) nicht dort an. Ich weiß nicht warum...

      Ich werde mal das POST gegen GET austauschen und dann prüfen was passiert.
      Danke einstweilen ...
      Zuletzt geändert von ugenmeister; 12.04.2012, 13:48.

      Kommentar


      • #4
        mysql_error() mal verwendet?

        Kommentar


        • #5
          Oh Waaaaaaahnsinn!!! Es geht!
          sallow2001, ich könnte dich küssen. Du hattest Recht - hab jetzt mit GET anstelle mit POST übertragen und genau DAS war der Fehler. Manchmal sieht man den Wald vor lauter Bäumen nicht! Hab vielen Dank für diesen Tipp!

          Auch dir vielen Dank TobiaZ. Leider hatte mysql_error keinen Fehler ausgegeben.

          Danke Euch sehr!!!

          Kommentar


          • #6
            Kein Problem. Wenn Du mir jetzt noch bei meinem Problem helfen könntest, wären wir quitt.

            http://www.php-resource.de/forum/php...sgefuehrt.html

            Kommentar

            Lädt...
            X