#1 (permalink)  
Alt 09.01.2005, 15:46
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Daumen hoch

Hallo, liebe Leute,

bin so in den letzten Z?gen local und im Admin mal auf den Bannermanager (Vers. banner_manager.php,v 1.4 2004) gegangen und bekomme folgende Fehlermeldung:

Zitat:

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 '-20, 20' at line 1

select banners_id, banners_title, banners_image, banners_group, status, expires_date, expires_impressions, date_status_change, date_scheduled, date_added from banners order by banners_title, banners_group limit -20, 20
Da in der Datei selbst der Code mit dem select so nicht drinsteht (wie bei osc), wei? ich nicht, wo ich den Fehler anfangen soll, zu suchen.

Hab an dieser Datei bisher nichts gemacht....

Bin da f?r nen Tipp dankbar.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 09.01.2005, 15:54
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Standard

Kann das sein, dass das mit der php-Version zu tun hat?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 09.01.2005, 15:58
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Unglücklich

Nee, ist es auch nicht, mit der php-version, hab eben mal auf 4.3.10 geswitcht, es ?ndert sich nichts....
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 09.01.2005, 16:19
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Standard

Hab jetzt die Stelle gefunden, die diesen Fehler anscheinend hervorruft:
Zitat:

<?php
$banners_query_raw = "select banners_id, banners_title, banners_image, banners_group, status, expires_date, expires_impressions, date_status_change, date_scheduled, date_added from " . TABLE_BANNERS . " order by banners_title, banners_group";
$banners_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $banners_query_raw, $banners_query_numrows);
$banners_query = xtc_db_query($banners_query_raw);
while ($banners = xtc_db_fetch_array($banners_query)) {
$info_query = xtc_db_query("select sum(banners_shown) as banners_shown, sum(banners_clicked) as banners_clicked from " . TABLE_BANNERS_HISTORY . " where banners_id = '" . $banners['banners_id'] . "'");
$info = xtc_db_fetch_array($info_query);
Aber was daran falsch sein k?nnte, wei? ich wirklich nicht, da ich nicht selbst coden kann....
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 09.01.2005, 16:25
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Standard

Panikkkkkkkk!

Die gleiche Fehlermeldung kommt auch beim Aufruf der Seite Sonderangebote admin/specials.php

Ach Du meine Nase.......

HIIIIIIILLLLFFFEEE
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 09.01.2005, 16:29
HHGAG
Gast
 
Beiträge: n/a
Standard

gege, such mal nach mysql%version =)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 09.01.2005, 16:29
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Böse

Kann das sein, dass diese function in admin/split_page_results.php
Schuld ist?
Zitat:
class splitPageResults {
function splitPageResults(&$current_page_number, $max_rows_per_page, &$sql_query, &$query_num_rows) {
if (empty($current_page_number)) $current_page_number = 1;

$pos_to = strlen($sql_query);
$pos_from = strpos($sql_query, ' from', 0);

$pos_group_by = strpos($sql_query, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;

$pos_having = strpos($sql_query, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;

$pos_order_by = strpos($sql_query, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;

$reviews_count_query = xtc_db_query("select count(*) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from)));
$reviews_count = xtc_db_fetch_array($reviews_count_query);
$query_num_rows = $reviews_count['total'];

$num_pages = ceil($query_num_rows / $max_rows_per_page);
if ($current_page_number > $num_pages) {
$current_page_number = $num_pages;
}
$offset = ($max_rows_per_page * ($current_page_number - 1));
$sql_query .= " limit " . $offset . ", " . $max_rows_per_page;
}
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #8 (permalink)  
Alt 09.01.2005, 16:41
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Unglücklich

Hallo, danke f?r den tipp,

hab die ?nderung gem Thread Thread

Zitat:
?ffne die Datei admin/includes/classes/split_page_results.php
In der ersten Funktion, im Konstruktor wird in ca. Zeile 43 das limit bestimmt.


$sql_query .= " limit " . $offset . ", " . $max_rows_per_page;

F?ge vor diese Zeile ein:

if($offset<0) $offset=0;
$sql_query .= " limit " . $offset . ", " . $max_rows_per_page;
Leider ?ndert sich bei mir nichts, ich hab die mysql-Version 4.1.8

Und NUUUUUU?????
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #9 (permalink)  
Alt 09.01.2005, 17:11
Benutzerbild von gege  
Registriert seit: 22.04.2004
Beiträge: 110
Standard

Im Moment scheint mir, k?nnte das Problem nur mit der Installation einer Mysql-Version 4.0.x behoben werden, da mein Provider eine Vers. 4.0.15 hat, sodass, wenn ichs richtig verstanden habe, erstmal keine Probleme auftreten w?rden.

Nur.....

was ist denn zu tun, wenn er aufr?stet?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #10 (permalink)  
Alt 09.01.2005, 22:22
 
Registriert seit: 09.01.2005
Beiträge: 5
Standard

Nun, an MySQL, egal welche Version, liegt es _sicher_ nicht. Ein negativer 'limit' Wert ist nicht ok, und da kann MySQL nichts f?r, der wird tats?chlich von der Methode 'splitPageResults' der gleichnamigen Klasse in '/admin/includes/classes/split_page_results.php' zur?ckgegeben.

Der gepostete Workaraound:

Code:
if ($offset < 0) $offset=0;
funktioniert. Der Hund liegt allerdings schon vorher bergraben: $current_page_number wird vom aufrufenden Script (z.B. manufacturers.php) via $_GET['page'] ?bergeben.

Bei einer leeren Liste und nur einer Seite ist $_GET['page'] leer, und damit auch $current_page_number.

Unten wird dann $max_rows_page mit ($current_page_number -1) multipliziert. $current_page_number ist 'leer', also wird $max_rows_page mit (-1) multipliziert, was -20 und damit den negativen limit-Wert ergibt, den die Methode zur?ckliefert.

Die Bedingung

Code:
if (empty($current_page_number)) $current_page_number = 1;
sollte dem eigentlich abhelfen, tut es aber nicht. Es k?nnte an der Referenzierung (&)liegen, aber nach nur einem Blick auf den Code kann ich das noch nicht mit Sicherheit sagen. Das ist in jedem Fall ein Bug, hat nichts mit SQL, der Serverkonfiguration oder ?hnlichem zu tun und w?re somit ein Fall f?r die Entwickler.

Der oben vorgestellte Workaround funktioniert, ist aber eben nur ein Workaround und keine saubere Sache.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
banner, manager

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand