Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchergebnis auf mehrern Seiten verteilen

Einklappen

Neue Werbung 2019

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

  • Suchergebnis auf mehrern Seiten verteilen

    Hallo liebe Community ,

    Ich möchte mein Suchergebnis auf mehrere Seiten verteilen jedoch missglückt mir das. Wenn ich auf die 2 Seite klicke ist das Post Array leer kann ich das Post Array nicht über die URL weitergeben und wenn ja wie ?

    Hier ist mein Skript

    PHP-Code:

    if(isset($_POST['submit'])){
        
    // Array initializieren. Falls kein argument angegeben wurde,
        // dann ist die Argumentliste ein leeres Array
        
    $wheres = array();
        
    //Jedes Feld prüfen und ggf in den Where-Array einfügen
        
    if($_POST['sex']) $wheres[] = "sex='{$_POST['sex']}'";
        if(
    $_POST['land']) $wheres[] = "land='{$_POST['land']}'";
        if(
    $_POST['username']) $wheres[] = "nickname LIKE '%{$_POST['username']}%'";
        if(
    $_POST['state']) $wheres[] = "state='{$_POST['state']}'";
        if(
    $_POST['status']) $wheres[] = "status='{$_POST['status']}'";
        if(
    $_POST['Alter_von']) $wheres[] = "age between '{$_POST['Alter_von']}'AND '{$_POST['Alter_bis']}'";
        if(
    $_POST['Alter_bis']) $wheres[] = "age between '{$_POST['Alter_von']}'AND '{$_POST['Alter_bis']}'";


        
    // WHERE-Tel des SQL-String zusammenstellen
        
    if(count($wheres)>0$wherestring "WHERE ".implode(' AND '$wheres);
        
    //SQL-String zusammensetzen
        
    $sql mysql_query("SELECT * FROM `".PREFIX."user`{$wherestring}");
        
    //TODO: Sql an die DB absetzen

    }
    // Anzahl der Mitglieder
    $user_countsafe_query("SELECT * FROM ".PREFIX."user ");
    $user_resultsmysql_num_rows($user_count);
    // Anzahl der Mitglieder

    $maxusers 60;
    $alle safe_query("SELECT * FROM `".PREFIX."user`{$wherestring}");
    $gesamt mysql_num_rows($alle);
    $pages ceil($gesamt/$maxusers);

    if(isset(
    $_GET['page'])) $page=(int)$_GET['page'];
    else 
    $page 1;
    $sort="nickname";
    if(isset(
    $_GET['sort'])){
      if((
    $_GET['sort']=='country') || ($_GET['sort']=='nickname') || ($_GET['sort']=='lastlogin') || ($_GET['sort']=='registerdate')) $sort=$_GET['sort'];
    }

    $type="ASC";
    if(isset(
    $_GET['type'])){
      if((
    $_GET['type']=='ASC') || ($_GET['type']=='DESC')) $type=$_GET['type'];
    }

    if(
    $pages>1)  $page_link makepagelink("index.php?site=registered_users&sort=$sort&type=$type"$page$pages);
    else 
    $page_link='';

    if(
    $page == "1") {
        
    $ergebnis safe_query("SELECT * FROM `".PREFIX."user`{$wherestring} ORDER BY ".$sort." ".$type." LIMIT 0,".$maxusers);
        if(
    $type=="DESC"$n=$gesam;
        else 
    $n=1;
    }
    else {
        
    $start=$page*$maxusers-$maxusers;
        
    $ergebnis safe_query("SELECT * FROM `".PREFIX."user`{$wherestring} ORDER BY ".$sort." ".$type." LIMIT ".$start.",".$maxusers);
        if(
    $type=="DESC"$n = ($gesamt)-$page*$maxusers+$maxusers;
        else 
    $n = ($gesamt+1)-$page*$maxusers+$maxusers;


    Ich hoffe mir kann weitergeholfen werden verzweifele echt nähmlich...

    mfg

    skype90

  • #2
    Öhm...wenn es schon an derartigem Grundlagenwissen scheitert solltest du dir echt überlegen, ob du schon reif für PHP bist.
    Links können (nicht ohne Weiteres) keinen POST-Request auslösen [1].
    Prüfe also auf $_REQUEST statt $_POST.

    Wie übrigens immer: denk an SQL-Injections!
    Dein Script ist offen wie ein Scheunentor, wenn dir jemand "nur" die DB löscht ist das noch gnädig.
    Stichworte für die Suche: real_escape_string

    [1] Als gefakte Submit-Buttons oder AJAX schon, das hat dann aber nichts mehr mit direkten Links zu tun.


    Übrigens hat _das_ sicher nichts mit fortgeschrittener PHP-Entwicklung zu tun - falscher Bereich.
    VokeIT GmbH & Co. KG - VokeIT-oss @ github

    Kommentar


    • #3
      Hi.

      Statt $_REQUEST bitte lieber $_GET oder $_POST verwenden (je nachdem, wie Du die Daten weitergibst) und mein Vorredner meint sicherlich mysql_real_escape_string gegen SQL-Injection.

      Warum willst Du es als Parameter über die URL weitergeben? Mach mal bitte ordneliches Debugging.

      mfg Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        dir wird wohl erstmal nichts uebrig bleiben, als mit url-parametern zu arbeiten

        Kommentar


        • #5
          Oder mit einer PageNav zu arbeiten.
          Limitiere Deine SQL Abfrage doch einfach mit "LIMIT 10" und mit dem Klick über die PageNave änderst DU lediglich den LIMIT parameter..

          "LIMIT 10,10"
          "LIMIT 20,10"

          usw..

          Kommentar


          • #6
            Suche mal nach "Paging"
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Sorry, Ich habe dann wohl den falschen Berreich getroffen.Naja ich bin.... sagen wir mal ein Php Anfänger und noch am lernen.Ich habe das Error reporting und das debug eingeschaltet und wenn ich auf die 2 Seite klicken will habe ich folgendes Resultat bekommen.

              Notice: Undefined variable: wherestring in C:\xampp\htdocs\webspell\registered_users.php on line 69

              Notice: Undefined variable: wherestring in C:\xampp\htdocs\webspell\registered_users.php on line 95


              mfg

              skype90

              Kommentar


              • #8
                Zitat von skype90 Beitrag anzeigen
                Ich habe das Error reporting und das debug eingeschaltet und wenn ich auf die 2 Seite klicken will habe ich folgendes Resultat bekommen.

                [B]Notice: Undefined variable: wherestring in C:\xampp\htdocs\webspell\registered_users.php on line 69
                ...
                Aha!

                Dann wirst Du bei den Zeilen auf $wherestring zugreifen, das es an dieser Stelle aber nicht gibt, weil du den nur unter gewissen Kriterien erstellst und die hier dann scheinbar nicht zutreffen.. Ausser dem hier hab ich nichts gefunden wo der definiert werden würde.. zB weiter oben mit $wherestring = ""; (ohne den genauen Code Inhalt angeschaut zu haben!)

                PHP-Code:
                if(count($wheres)>0$wherestring "WHERE ".implode(' AND '$wheres); 
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  $wherestring ist tatsächlich nicht definiert aber das würde mein Problem doch nicht lösen wenn ich ihn mit if(isset($wherestring)).... ist $wherestring trotzdem leer hmm...

                  Kommentar


                  • #10
                    Na, wann wird der $wherestring denn erzeugt (unter welchen Bedingungen)?
                    Und wann wird er benutzt?

                    Sinnvollerweise gehört beides Zusammen, also sollte auch beides an die gleichen Bedingungen geknüpft werden...
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Der wherestring wird erzeugt sobald eine übergabe über das Formular erfolgt sprich wenn das jeweilige Post_Array gefüllt ist.Ich denke das auf das klicken der 2 Seite das Post_Array einfach leer ist.

                      Kommentar

                      Lädt...
                      X