filtern und sortieren ??

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

  • filtern und sortieren ??

    Hallo
    Ich baue grad eine neue Website und hab da ein kleines Problem, und hoffe das mir jemand damit weiter helfen kann, obwohl die Seite auf niederländisch ist.
    Also auf der Seite
    || Estero || Accommodaties op Kreta habe ich ein "Produktkatalog". Ich hab ein Filter-Script und ein Sortier-Script. Das Sortieren funktionier perfekt, aber das Filteren nicht.

    hier das Script:
    PHP-Code:
    <?php $query "SELECT village, COUNT(name) AS total FROM accos WHERE streek ='Kreta' GROUP BY village";
    $result mysql_query $query ) or die ( mysql_error () );
     
    $maxRows_accos 5;
    $pageNum_accos 0;
    if (isset(
    $_GET['pageNum_accos'])) {
      
    $pageNum_accos $_GET['pageNum_accos'];
    }
    $startRow_accos $pageNum_accos $maxRows_accos;
     
    mysql_select_db($database_db$db);
    $sort_by "";
        if(isset(
    $_GET['sort'])){
            
    $sort $_GET['sort'];
            if(
    $sort == "price_from" or $sort == "name" or $sort == "village" or $sort == "regio" or $sort == "country"){
                
    $sort_by " ORDER BY `".$sort."`";
            }
        }
    $query_accos "SELECT * FROM accos WHERE streek='Kreta'".$filter.$sort_by 
    $query_limit_accos sprintf("%s LIMIT %d, %d"$query_accos$startRow_accos$maxRows_accos);
    $accos mysql_query($query_limit_accos$db) or die(mysql_error());
    $row_accos mysql_fetch_assoc($accos);
     
     
    if (isset(
    $_GET['totalRows_accos'])) {
      
    $totalRows_accos $_GET['totalRows_accos'];
    } else {
      
    $all_accos mysql_query($query_accos);
      
    $totalRows_accos mysql_num_rows($all_accos);
    }
    $totalPages_accos ceil($totalRows_accos/$maxRows_accos)-1;
     
    $queryString_accos "";
    if (!empty(
    $_SERVER['QUERY_STRING'])) {
       
    $params explode("&"$_SERVER['QUERY_STRING']);
      
    $newParams = array();
      foreach (
    $params as $param) {
        if (
    stristr($param"pageNum_accos") == false && 
            
    stristr($param"totalRows_accos") == false) {
          
    array_push($newParams$param);
        }
      }
      if (
    count($newParams) != 0) {
        
    $queryString_accos "&amp;" htmlentities(implode("&amp;"$newParams));
      }
    }
    $queryString_accos sprintf("&amp;totalRows_accos=%d%s"$totalRows_accos$queryString_accos);
     
    $sort_by "";
        if(isset(
    $_GET['sort'])){
            
    $sort $_GET['sort'];
            if(
    $sort == "price_from" or $sort == "name" or $sort == "village" or $sort == "streek" or $sort == "country"){
                
    $sort_by " ORDER BY `".$sort."`";
            }
        }
     
    $filter "";
     
    if (isset(
    $_GET["filter"]) && $_GET["filter"] == "Villa") {
        
    $filter "type = 'Villa'";;
    }
    if (isset(
    $_GET["filter"]) && $_GET["filter"] == "Hotel") {
        
    $filter "type = 'Hotel'";
    }
    if (isset(
    $_GET["filter"]) && $_GET["filter"] == "Appartement") {
        
    $filter "type = 'Appartement'";
    }
     
    $query_accos "SELECT * FROM `accos` " .$filter.$sort_by  ;
     
     
     
    ?>
    Wo ist der FEHLER ???

  • #2
    Hallo,

    bitte schildere das Problem konkret und nachvollziehbar.

    Auf den ersten Blick:

    Code:
    $query_accos = "SELECT * FROM accos WHERE streek='Kreta'".[COLOR="Red"][B]$filter[/B][/COLOR].$sort_by ;
    $filter ist nicht definiert.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo AmicaNoctis
      Danke erstmal für deine schnelle Antwort, aber du schreibst

      $filter ist nicht definiert.
      das ist es doch in
      PHP-Code:
      $filter "";
       
      if (isset(
      $_GET["filter"]) && $_GET["filter"] == "Villa") {
          
      $filter "type = 'Villa'";;
      }
      if (isset(
      $_GET["filter"]) && $_GET["filter"] == "Hotel") {
          
      $filter "type = 'Hotel'";
      }
      if (isset(
      $_GET["filter"]) && $_GET["filter"] == "Appartement") {
          
      $filter "type = 'Appartement'";

      und
      HTML-Code:
      <select name="select" onchange="filter('index.php?filter=', this)">
        <option value="" selected="selected">Filter op...</option>
        <option value="Hotel">Hotel</option>
        <option value="Appartement">Appartement</option>
        <option value="Villa">Villa</option>
      </select>
      Oder versteh ich dich nicht ???

      Mein Problem ist, das wenn ich z.B. Villa auswähle ich folgenden error bekomme
      "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 'Villa LIMIT 0, 5' at line 1"
      Zuletzt geändert von estero; 18.09.2009, 15:09.

      Kommentar


      • #4
        Ja da unten schon, aber du benutzt es schon viel früher (Zeile 19) und da ist es noch nicht definiert.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          ja ok, aber was muss ich denn jetzt hinzufügen ?? oder löschen ??
          Ich glaub ich steh auf dem Schlauch

          Kommentar


          • #6
            Ich glaube, ich hatte schon erwähnt, dass du dein Problem noch nicht ausreichend geschildert hast.

            "Funktioniert nicht" ist keine Fehlerbeschreibung! Schreib doch mal, welche Fehlermeldungen du bekommst, was passieren soll und was stattdessen passiert! Vielleicht kommen wir dann weiter.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              So wie eben schon geschrieben ist die Fehlermeldung "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 'Villa LIMIT 0, 5' at line 1"
              . Aber nun noch mal von anfang an.

              Also; Ich habe auf der Seite 2 drop down menus. eins zum sortieren und das andere zum filtern.

              das sortieren, z.B. auf den Preis, funktioniert, aber wenn ich im drop down menu z.B. Villa auswähle zum filtern, krieg ich die genannte Errormeldung !

              Kommentar


              • #8
                Vielleicht solltest du den Suchbegriff (Villa) in Anführungszeichen schreiben.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  ???
                  Vielleicht solltest du den Suchbegriff (Villa) in Anführungszeichen schreiben.
                  WO ?
                  im drop down menu steht es in Anführungszeichen
                  HTML-Code:
                  <select name="select" onchange="filter('index.php?filter=', this)">
                    <option value="" selected="selected">Filter op...</option>
                    <option value="Hotel">Hotel</option>
                    <option value="Appartement">Appartement</option>
                    <option value="Villa">Villa</option>
                  </select>
                  und in der Adresszeile vom Browser steht auch
                  Code:
                  http://www.estero-travel.com/nl/Bestemmingen/Griekenland/Kreta/index.php?filter=Villa
                  wenn ich Villa gewählt hab im menu !

                  Kommentar


                  • #10
                    Zitat von estero Beitrag anzeigen
                    So wie eben schon geschrieben ist die Fehlermeldung "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 'Villa LIMIT 0, 5' at line 1"
                    Dann betreibe Debugging.

                    Peter Kropff - Tutorials - PHP / MySQL - Fehlersuche - Die kaputte Datenbank
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von estero Beitrag anzeigen
                      WO ?
                      Natürlich im SQL Statement, das sagt doch schon die Fehlermeldung! Villa ist nunmal weder SQL-Schlüsselwort noch Spalte, sondern ein String/Varchar und der gehört nun mal in Anführungszeichen. Vielleicht solltest du dir die Statements mal ansehen, die du generierst, dann siehst du auch schneller was da nicht stimmt.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Nicht jeder hier im Forum ist ein Profie !
                        Natürlich im SQL Statement, das sagt doch schon die Fehlermeldung! Villa ist nunmal weder SQL-Schlüsselwort noch Spalte, sondern ein String/Varchar und der gehört nun mal in Anführungszeichen.
                        hier stehen doch die Schluesselwoerter in ""
                        PHP-Code:
                        $filter "";
                         
                        if (isset(
                        $_GET["filter"]) && $_GET["filter"] == "Villa") {
                            
                        $filter "type = 'Villa'";;
                        }
                        if (isset(
                        $_GET["filter"]) && $_GET["filter"] == "Hotel") {
                            
                        $filter "type = 'Hotel'";
                        }
                        if (isset(
                        $_GET["filter"]) && $_GET["filter"] == "Appartement") {
                            
                        $filter "type = 'Appartement'";

                        Kommentar


                        • #13
                          Zitat von estero Beitrag anzeigen
                          hier stehen doch die Schluesselwoerter in ""
                          PHP-Code:
                          $filter "";
                           
                          if (isset(
                          $_GET["filter"]) && $_GET["filter"] == "Villa") {
                              
                          $filter "type = 'Villa'";;
                          }
                          if (isset(
                          $_GET["filter"]) && $_GET["filter"] == "Hotel") {
                              
                          $filter "type = 'Hotel'";
                          }
                          if (isset(
                          $_GET["filter"]) && $_GET["filter"] == "Appartement") {
                              
                          $filter "type = 'Appartement'";

                          Aber sie stehen möglicherweise nicht im eigentlichen Querry in Anführungszeichen. Und das ist entscheidend. Was ergibt ein
                          PHP-Code:
                          echo $query_accos
                          Und das Ergebnis solltest du mal über ein MySQL-Frontend wie PHPMyAdmin direkt auf die Datenbank loslassen. Dann siehst du auch den Fehler.

                          Peter
                          Zuletzt geändert von Kropff; 18.09.2009, 20:21.
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Vielleicht ist es noch zu früh weil ich grad ausm Bett komme... ABER:
                            PHP-Code:
                            $query_accos "SELECT * FROM accos WHERE streek='Kreta'".$filter.$sort_by 
                            PHP-Code:
                            if (isset($_GET["filter"]) && $_GET["filter"] == "Villa") {
                                
                            $filter "type = 'Villa'";;

                            da kommt doch raus:

                            PHP-Code:
                            SELECT FROM accos WHERE streek='Kreta'type 'Villa' 
                            müsste doch aber

                            PHP-Code:
                            SELECT FROM accos WHERE streek='Kreta' AND type 'Villa' 
                            sein. Und bei:

                            PHP-Code:
                            $query_accos "SELECT * FROM `accos` " .$filter.$sort_by  
                            fehlt dann das WHERE
                            Zuletzt geändert von Caine Luveno; 19.09.2009, 13:16.

                            Kommentar


                            • #15
                              Hab es herausgefunden !!
                              Es musste so sein
                              PHP-Code:
                              $query_accos "SELECT * FROM accos WHERE streek='Kreta' AND".$filter.$sort_by 
                              PHP-Code:
                              if (isset($_GET["filter"]) && $_GET["filter"] == "Villa") {
                                  
                              $filter "type = 'Villa'";;

                              DAnke fuer eure Hilfe

                              Kommentar

                              Lädt...
                              X