Zum Inhalt springen

SQL Abfrage mit Limit liefert keine Daten

Erstellt am 14. August 2013 · 3 Antworten · letzte Antwort am 14. August 2013

Tags: TYPO3 6.x, Frage

trishohara ·

Hallo,
ich habe eine Extension geschrieben, die Bilder aus einer Datenbank ausliest und als Galerie ausgibt.
Das klappt auch sehr gut.
Nur wird das Scrollen bei mehreren Bildern doch etwas mühsam, so daß ich dachte, ich baue einen Pagebrowser ein.
Ich habe einige Beispiele im Internet gefunden, u.a. auch das hier http://www.typo3forum.net/forum/exte...extension.html (Pagebrowser in eigener Extension)

Aber ich habe das Problem, daß sobald ich ein Limit in meine SQL-Abfrage einfüge, diese leer bleibt und keine Daten angezeigt werden. Sobald ich Limit auskommentiere, funktioniert alles wieder super.

Es passiert immer, egal ob Limit eine Variable übergeben wird, ob ich direkt eine Zahl eingebe, ob mit Pointer oder internal['results_at_a_time'].

Wenn ich im Netbeans debugge, sehe ich, daß $limit einen Wert hat, aber $res ist leer.

Habt ihr eine Idee, woran das liegen könnte?

Danke im Vorraus für jeden Tip.

Andi

Anbei meine SQL-Abfrage

//Datenbank Abfrage
  
          $res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
            '*',   //select
            'tx_pics_pics', //from
            //$limit = $this->piVars['pointer']*10 .','.$this->internal['results_at_a_time']);
           $groupBy='',
           $orderBy='crdate  desc' //,
          //$limit='10'
                  );
 
        if($res) {
            $liste='';
            while($row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
...
jenses ·

Mach doch vor deiner Abfrage einfach mal ein debug() :

 $res=$GLOBALS['TYPO3_DB']->SELECTquery(
'*', //select
'tx_pics_pics', //from
//$limit = $this->piVars['pointer']*10 .','.$this->internal['results_at_a_time']);
$groupBy='',
$orderBy='crdate desc' //,
$limit='10'
);
debug(res,'res');

dann solltest du den Fehler erkennen können.

Außerdem sollte das auskommentierte
$limit = $this->piVars['pointer']*10 .','.$this->internal['results_at_a_time']);
dir eigentlich einen deutlichen Hinweis geben, daß $limit einen kommaseparierten String bestehend aus zwei Integerwerten erwartet...

trishohara ·

Hallo,
danke für deine Antwort.
Ich habe das auskommentierte aktiviert.
Der Debugger gibt mir dann folgende Ergebnisse aus:
limit = 0,10
res = (bool) false

Also immer noch das gleiche Problem....

trishohara · · Beste Antwort

Ich hab's!
Das Problem war, das immer sobald das Komma da irgendwie reinkam, aus dem limit ein string wurde.
Ich habe es jetzt so gelöst:

$pointer = intval($this->piVars['pointer']*10);
        $results = intval($this->internal['results_at_a_time']);
        //Datenbank Abfrage
  $res = mysql(TYPO3_db,"SELECT * FROM tx_pics_pics ORDER BY crdate DESC LIMIT $pointer,$results");

Und ganz unten nach Aufruf der pi_browseresults erhöhe ich
$this->piVars['pointer'] noch um 1

$markerArray['###BROWSERRESULTS###']=$this->pi_list_browseresults();  
         $this->piVars['pointer']++;