| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

18-09-2009, 14:53
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
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 = "&" . htmlentities(implode("&", $newParams)); } } $queryString_accos = sprintf("&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 ???
|

18-09-2009, 15:03
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
bitte schildere das Problem konkret und nachvollziehbar.
Auf den ersten Blick:
Code:
$query_accos = "SELECT * FROM accos WHERE streek='Kreta'".$filter.$sort_by ;
$filter ist nicht definiert.
Gruß,
Amica
|

18-09-2009, 15:07
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
Hallo AmicaNoctis
Danke erstmal für deine schnelle Antwort, aber du schreibst
Zitat:
|
$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"
Geändert von estero (18-09-2009 um 15:09 Uhr)
|

18-09-2009, 15:09
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Ja da unten schon, aber du benutzt es schon viel früher (Zeile 19) und da ist es noch nicht definiert.
|

18-09-2009, 15:24
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
ja ok, aber was muss ich denn jetzt hinzufügen ?? oder löschen ??
Ich glaub ich steh auf dem Schlauch
|

18-09-2009, 15:27
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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.
|

18-09-2009, 15:32
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 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 !
|

18-09-2009, 15:34
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Vielleicht solltest du den Suchbegriff (Villa) in Anführungszeichen schreiben.
|

18-09-2009, 15:38
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
???
Zitat:
|
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 !
|

18-09-2009, 15:39
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von estero
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.
|

18-09-2009, 16:52
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von estero
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.
|

18-09-2009, 20:02
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
Nicht jeder hier im Forum ist ein Profie !
Zitat:
|
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'"; }
|

18-09-2009, 20:18
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von estero
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
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Geändert von Kropff (18-09-2009 um 20:21 Uhr)
|

19-09-2009, 13:12
|
|
Caine Luveno
Registrierter Benutzer
|
|
Registriert seit: May 2004
Beiträge: 40
|
|
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
Geändert von Caine Luveno (19-09-2009 um 13:16 Uhr)
|

19-09-2009, 21:31
|
|
estero
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 7
|
|
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
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|