fehlermeldung
nixwisserin
- php
hallo!
ich komm nicht dahinter was falsch sein soll:
"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 '3' at line 1 1064 "
PHP-Quellcode:
<?php
if(!isset($page)) $page = 1;
$page = $page;
$eintraege = 3;
$start = $page * $eintraege_pro_seite - $eintraege_pro_seite;
$sql_prüfen = mysql_query("SELECT id FROM service_ansicht WHERE nutzer_id = '".$fnutzer_id."'");
$menge2 = mysql_num_rows($sql_prüfen);
$wieviel_seiten = $menge2 / $eintraege;
//FEHLER BEI DER ABFRAGE
$sql3 = "SELECT * FROM service_ansicht WHERE nutzer_id = '".$fnutzer_id."' AND service = '".$service."' LIMIT ".$_GET['start'].",$eintraege";
$result3 = mysql_query($sql3) OR die(mysql_error()." ".mysql_errno());
?>
Also der fehler liegt bei $eintraege (hat ja den wert 3).Aber ich weiß nicht, was falsch ist.
Morgen!
$sql_prüfen = mysql_query("SELECT id FROM service_ansicht WHERE nutzer_id = '".$fnutzer_id."'");
$sql3 = "SELECT * FROM service_ansicht WHERE nutzer_id = '".$fnutzer_id."' AND service = '".$service."' LIMIT ".$_GET['start'].",$eintraege";
Lass dir doch einfach mal diese beiden Statements mit echo ausgeben, so wie sie tatsächlich ausgeführt werden, dann siehst du am ehesten den Fehler. Wenn nicht, poste das Ergebnis bitte nochmal hier.
MfG
Rouven
er gibt mir folgendes bei $sql3 aus. das problem ist, das er $_GET['start'] nicht hat (was ja zu beginn Null wär)
SELECT * FROM lieferservice_ansicht WHERE nutzer_id = '519gzu67878897' AND service = '46' LIMIT ,3
Aber Warum?
Hi,
er gibt mir folgendes bei $sql3 aus. das problem ist, das er $_GET['start'] nicht hat (was ja zu beginn Null wär)
SELECT * FROM lieferservice_ansicht WHERE nutzer_id = '519gzu67878897' AND service = '46' LIMIT ,3
Aber Warum?
Vermutlich weil die seite mit:
http://www.adresse.de/seite.php
anstatt mit
http://www.adresse.de/seite.php?start=0
Aufgerufen wird, du solltest es dir allgemein angewöhenen $_GET variablen oder $_POST Variablen mit folgenden 2 funktionen zu prüfen
und dann in eine andre variable mit einem entsprechenden wert umschreiben also entweder
$start = $_GET['start'];
oder
$start = 0;
und dann start in dem sql query verwenden anstatt $_get...
MfG
er gibt mir folgendes bei $sql3 aus. das problem ist, das er $_GET['start'] nicht hat (was ja zu beginn Null wär)
SELECT * FROM lieferservice_ansicht WHERE nutzer_id = '519gzu67878897' AND service = '46' LIMIT ,3
Aber Warum?
»»
weil ich oben nur $ start definiert habe!
Allerdings hab ich nun noch ne frage:
benutze das ganze für eine Blätterfunktion. Ich lasse mir für meinen Shop Artikel auflisten, mittels 2 Abfragen.
Die erste Abfrage dient dazu, Artikel auszulesen, die zu dem Gebiet gehören, das der Kunde vorher ausgewählt hat (z.B Floristik).
Mit der anderen Abfrage werden die restlichen artikel des anbieters ausgegeben, die aber nicht zu dem gewählten gebiet gehören.
Die Ergebnisse beider Abfragen werden auf einer seite dargestellt, zu oberst die zum Gebiet gehörigen, darunter der Rest.
Ich wollte nun eigentlich, das ich nur 10 ergebnisse mir anzeigen lasse, von beiden Abfragen:
z.B
Es gibt 9 Artikel die zum Gebiet Floristik gehören und außerdem bietet det Anbieter noch 6 Artikel aus anderen bereichen an.
Nun sollen die 9 Artikel(zum gewählten Gebiet) ausgegeben werden und dann noch ein Artikel der nicht zum fachbereich gehört(also 10 artikel insgesamt auf der Seite). Auf der nächsten seite sollen dann die restlichen 5 Artikel erscheinen.
Ich hoffe ich drücke mich nicht zu kompliziert aus.
Kann man das so machen? Kann auch gern mal meinen code posten.
Bis jetzt limitiere ich alle 2 Ausgaben- also von jeder Abfrage werden 5 Ergebnisse pro Seite ausgegeben.
Sorry wegen dem Doppelposting
@wahsaga:
das mit nur einer abfrage hat ich auch schon im Sinn das geht bloß leider so nicht. Wenn man nämlich
...WHERE nutzer_id = '".$fnutzer_id."' OR service = '".$service."'";
schreibt, werden auch die Artikel von den anderen Anbieter aufgelistet. Zu jedem Gebiet (service) gibt es eine Vielzahl von Artikeln von verschieden Anbietern. Zuerst muß der Kunde wählen bei welcher firma er einkaufen will ($fnutzer_id), dann werden deren artikel wie schon beschrieben aufgelistet.
(> http://forum.de.selfhtml.org/?t=109595&m=685020)
wenn wer ne andere Idee hat, wie man meine 2 abfragen zu einer macht: Nur her damit :)
hi,
das mit nur einer abfrage hat ich auch schon im Sinn das geht bloß leider so nicht. Wenn man nämlich
...WHERE nutzer_id = '".$fnutzer_id."' OR service = '".$service."'";
schreibt, werden auch die Artikel von den anderen Anbieter aufgelistet.
hatte das eigentlich so verstanden, also ob du das wolltest.
Zu jedem Gebiet (service) gibt es eine Vielzahl von Artikeln von verschieden Anbietern. Zuerst muß der Kunde wählen bei welcher firma er einkaufen will ($fnutzer_id), dann werden deren artikel wie schon beschrieben aufgelistet.
dort schreibst du:
Die erste Abfrage dient dazu, Artikel auszulesen, die zu dem Gebiet gehören, das der Kunde vorher ausgewählt hat (z.B Floristik).
Mit der anderen Abfrage werden die restlichen artikel des anbieters ausgegeben, die aber nicht zu dem gewählten gebiet gehören.
heißt also konrekt, du willst eigentlich _alle_ artikel vom anbieter XY auslesen - und von denen dann zuerst die anzeigen, die zur kategorie ABC gehören, und anschließend die restlichen, die nicht in diese kategorie gehören?
dann ist es auf jeden fall nur _eine_ abfrage - nur bzgl. der sortierung müsstest du dir noch gedanken machen.
gruß,
wahsaga
Hi,
Die erste Abfrage dient dazu, Artikel auszulesen, die zu dem Gebiet gehören, das der Kunde vorher ausgewählt hat (z.B Floristik).
Mit der anderen Abfrage werden die restlichen artikel des anbieters ausgegeben, die aber nicht zu dem gewählten gebiet gehören.
öhm, wenn ich nach CD-Zubehör von Siemens filtere (mal als beispiel)
dann intressieren mich weder die Handys, noch die waschmaschinen, daher
empfinde ich das etwas als unötigen schmuck
MfG
die zeile
$start = $page * $eintraege_pro_seite - $eintraege_pro_seite;
heißt:
$start = $page * $eintraege - $eintraege;
Hatte mich ober verschrieben.Also daran lag der fehler nicht