[gelöst]Dynamische Abfrage
am 22.08.2012 - 14:42 Uhr in
Hallo Drupalfreunde,
ich habe vor paar Tagen angefangen mich mit Modulentwicklung zu befassen. Leider hab ich jetzt ein Problem mit einem dynamic query und zwar sieh das so aus:
<?php
$staedte = db_select("wetterdaten_staedte", "u")->fields('u', array("id", "staedte"))->where(1)->range(0, 30)->execute()->fetchAssoc() ;
drupal_set_message(var_dump($staedte));
?>hier hab ich die abfrage die mir Devel anzeigt, die auf der Modulseite ausgeführt wird:
<?php
SELECT u.id AS id, u.staedte AS staedte FROM wetterdaten_staedte u WHERE (1) LIMIT 30 OFFSET 0
?>mein var_dump liefert wie gewünscht ein array mit id und staedte fehld + wert aber leider nur 1 Ergebnis obwohl 2 kommen sollten
P.S.: Ich hab mir schon die dynamic query API von drupal durchgelesen und ich habs damit versucht wie oben zu sehen ist und ich weiß nicht mehr weiter. Ich würde mcih über jeden Tipp freuen.
- Anmelden oder Registrieren um Kommentare zu schreiben

hi das ->where(1) in deiner
am 22.08.2012 - 15:51 Uhr
hi
das ->where(1) in deiner abfrage die falsch ist
und wirft dir eben nur 1nen eintrag (bzw id 1) aus
<?php
//falsch
$staedte = db_select("wetterdaten_staedte", "u")->fields('u', array("id", "staedte"))->where(1)->range(0, 30)->execute()->fetchAssoc() ;
//richtig
$staedte = db_select("wetterdaten_staedte", "u")->fields('u', array("id", "staedte"))->range(0, 30)->execute()->fetchAssoc() ;
?>
wenn du eine where kondition einbeuaen willst musst du
>condition('value', 'foo')
verwenden also
<?php
$staedte = db_select("wetterdaten_staedte", "u")->fields('u', array("id", "staedte"))->condition('value','foo')->range(0, 30)->execute()->fetchAssoc() ;
?>
grüße
Danke für die Antwort
am 23.08.2012 - 09:40 Uhr
Also so sieht jetzt die Stelle aus nach der Bearbeitung:#
<?php
$z = 1;
$sql = db_select("wetterdaten_staedte", "u")->fields('u', array("id" ,"staedte"))->condition("u.id", $z, "=")->range(0, 30)->execute()->fetchALL();
foreach($sql as $result) {
dpr($result);
$z++;
}
?>
Und ich bekomme immer noch NUR das allererste Ergebnis und ich weiß nicht wieso???
hier ist ncoh die SQL ausgabe von der oben geschriebene Abfrage:
<?php
SELECT u.id AS id, u.staedte AS staedte FROM wetterdaten_staedte u WHERE (u.id = '1') LIMIT 30 OFFSET 0
?>
vllt hilft das bisschenw eiter
hallo du hast da ja auch die
am 23.08.2012 - 09:47 Uhr
hallo
du hast da ja auch die bedingung drin
WHERE (u.id = '1')
das heisst es wird dir auch nur der eintrag mit der id = 1 ausgegeben
wenn du alle haben möchstest
die where condition weglassen
<?php
$sql = db_select("wetterdaten_staedte", "u")->fields('u', array("id" ,"staedte"))->range(0, 30)->execute()->fetchALL();
foreach($sql as $result) {
dpr($result);
$z++;
}
?>
Die u.id = 1 (die 1 ist eine
am 23.08.2012 - 09:57 Uhr
Die u.id = 1 (die 1 ist eine zählvariable aber anscheindend ging das nciht) Ok danke habs jetzt hinbekommen....hattes die ganze zeit mit der while schleife probiert :-)