PDA

Shop Support News Archive - Shopbetreiber News -> Forum : Sql Fehlermeldung Beim Aufrufen Der Sonderangebote (specials.php)


imola
09.05.2007, 13:07
Hallo,

in meinem Shop habe ich einen direkten Link zu der Seite mit den Sonderangeboten eingernichtet.
Jetzt sind aktuall aber keine Sonderangebote im Shop eingetragen. Klicke ich jetzt auf meinen Link erscheint diese Fehlermeldung beim Aufrufen der specials.php:



1064 - 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 '-9, 9' at line 13

select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from products p, products_description pd, specials s where p.products_status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and pd.language_id = '2' and s.status = '1' order by s.specials_date_added DESC LIMIT -9, 9

[XT SQL Error]



Die Ursache scheint eben zu sein, dass keine Sonderangebote zu finden sind. Kennt jemand eine Lösung diesen Fehler zu unterdrücken oder im Idealfall eine Seite mit dem Hinweis auszugeben, dass zur Zeit keine Sonderangebote vorhanden sind?

Viele Grüße
Andreas

lockdron
09.05.2007, 13:17
Versuch mal die Stelle mit der SQL zu finden.
Da wird am Ende scheinbar eine Variable angefügt, die für die "-9" beim Limit sorgt.
Da setzt du vorher eine Abfrage nach dem Schema:
if($VARIABLE < 0)
$VARIABLE = 0;
dann sollte es eigentlich ohne Fehlermeldung gehen. Nur weiß ich nicht, was dann überhaupt für ein Ergebnis kommt.

by lockdron

fiese möpp
09.05.2007, 13:27
Kannst auch ein Artikel etwas teuerer machen und den eigentlichen Preis als Sonderangebot.

emet
10.05.2007, 11:18
Noch besser ist es, daß der Kunde beim anklicken der Seite etwas sieht.

Leg einen Artikel mit Bild an (den kannst Du ja bei Bedarf immer aktivieren oder deaktivieren.

Schönes Bild und Text mit Preis 0 - Zur Zeit sind keine besondern Angebote vorhanden, aber demnächst warten wieder unglaubliche Schnäppchen auf Sie. Vergessen Sie also nicht unsere Angebotsseite immer wieder einmal zu besuchen.

Dann ist die Seite nicht leer und der Kunhde erhält eine Info.

Gruß
Ernst

lockdron
10.05.2007, 11:25
''>ZITAT(emet @ May 10 2007, 11:18) 26070
Noch besser ist es, daß der Kunde beim anklicken der Seite etwas sieht.

Leg einen Artikel mit Bild an (den kannst Du ja bei Bedarf immer aktivieren oder deaktivieren.

Schönes Bild und Text mit Preis 0 - Zur Zeit sind keine besondern Angebote vorhanden, aber demnächst warten wieder unglaubliche Schnäppchen auf Sie. Vergessen Sie also nicht unsere Angebotsseite immer wieder einmal zu besuchen.

Dann ist die Seite nicht leer und der Kunhde erhält eine Info.

Gruß
Ernst
[/b]
Würde ich eher mit einer Abfrage im Template machen. Ich kenn zwar die Seite nicht, weil ich keine Sonderangebote habe, aber wenn meine Vermutung mit dieser Variable wirklich stimmt, kann man die danach auch an das Template übergeben und dann per IF überprüfen, ob sie 0 ist und entsprechend einen Alternativtext anzeigen.
Ist evtl. bischen einfacher zu handhaben, statt immer einen Artikel zu aktivieren/deaktivieren, wenn Sonderangebote da sind, oder nicht.

by lockdron

emet
10.05.2007, 17:30
Ja, eben nur wo.

Da ich auch kein PHP-Experte bin hab ich halt diesen Vorschlag gemacht.

Wenn ich als Shopbeistzer die Angebote rausnehme, ist es doch kein Problem, die Leerseite aktiv anzuklicken.

Stell ich was rein, dann klick ich und deaktiviere sie.

Viel Arbeit ist das nicht und man kann es swelbst machen - egal wie gut man proggen kann.

Evtl. hat ja hier jemand einen Lösungsansatz dazu.

Viele Grüße
Ernst

imola
10.05.2007, 18:09
Vielen Dank für Eure Hilfe.

Beide Lösungsansätze funktionieren tadellos, DANKE!

ewo
09.03.2008, 00:26
hallo,

hatte bis eben die gleiche fehlermeldung beim happy_hour modul gehabt.

habe jetzt endlich die lösung im oscommerce forum gefunden!!!

es muss folgende datei geändert werden:
/includes/classes/split_page_results.php

folgende zeile suchen,

$offset = ($this->number_of_rows_per_page ($this->current_page_number - 1));
$this->sql_query .= " LIMIT " . $offset . ", " . $this->number_of_rows_per_page;

und dazwischen folgendes einfügen

$offset = ($this->number_of_rows_per_page ($this->current_page_number - 1));
if ($offset < 0) $offset=0;
$this->sql_query .= " LIMIT " . $offset . ", " . $this->number_of_rows_per_page;

und der fehler ist geschnichte!


gruß
ewo