ugrás a tartalomhoz

Nem megy a lekérdezés

overlord · 2004. Szep. 6. (H), 20.56
Kicsit elakadtam a lekérdezésnél, lehet, hogy teljesen rossz úton járok?. A blokk megjelenik egyszerű stringgel, de amint a lekérdezéssel próbálkozom, se kép, se hang.
  1. <?php  
  2. function sajattabla_contents($which_block) {  
  3.   if ($which_block == 1) {  
  4.     $query=('SELECT elem1, elem2, elem3, FROM sajattabla ORDER BY elem1;')  
  5.     $result=db_query($query);  
  6.     while db_fetch_object($result){  
  7.     itt rajzolnám meg a táblázatot a kapott adatokkal, még nem tudom mivel(return?);  
  8.     }  
  9.     }  
  10. }  
  11. ?>  
Példák, vagy leírás is érdekelne, hogy ne Titeket fárasszalak, de a doxygen-nél csak definíciókat találtam.
Plíz help..
 
1

zárójel???

Hojtsy Gábor · 2004. Szep. 6. (H), 21.10
Miért teszed az SQL parancs karaktersorozatát zárójelbe? Mit keres egy vessző a FROM előtt? Miért nem teszel a sorvégére pontosvesszőt? Miért nem teszed a while feltételét zárójelbe? Ellenőrizni kellene a PHP és az SQL szintaktikát, hogy legalább az jó legyen. Ebben a PHP és MySQL kézikönyvek az illetékesek.
2

Kezdő lévén..

overlord · 2004. Szep. 7. (K), 12.45
Nincs nagy tapasztalatom kódolásban, még bizonyára lesz pár ezer ilyen hibám. Leszámítva a "helyesírást" legalább jó úton járok? A db_query-nek van egy második paramétere is? Ha igen, mi az? A var_dump()-ot lehet használni a Drupalban is debugolásra? Érdemes és lehet-e először egy függvényben kibontani az adatokat valahogy így:
  1. <?php  
  2. function get_sajattabla_datas(){  
  3.     $sajattabla_result=db_query('SELECT elem1,elem2,elem3 FROM {sajattabla} ORDER BY elem1');  
  4.     $sajattabla_rows=db_num_rows($sajattabla_result);  
  5.     for ($counter=1; $counter<=$sajattabla_rows$counter++){   
  6. $sajattabla[]=db_fetch_array($sajattabla_result);  
  7. }  
  8. return $sajattabla;  
  9. }  
  10. ?>  
Ha igen, hogy "kapom vissza" és hogy tudom kiíratni pl. az elem1-et?
És végül a db_fetch_array vagy a db_fetch_object a használatosabb?

Köszi!
3

Lekérdezés

Hojtsy Gábor · 2004. Szep. 7. (K), 13.39
Van második, harmadik, negyedik, stb. paramétere a db_query()-nek, amiket akkor kell használni, ha behelyettesítendő változók vannak a lekérdezésben. A te lekérdezésed nem függ változótól, ahogy elnézem. Lássuk rövidebben:
  1. <?php  
  2. function get_sajattabla_data() {  
  3.   $result = db_query('SELECT elem1,elem2,elem3 FROM {sajattabla} ORDER BY elem1');  
  4.   $rows = array();  
  5.   while ($row = db_fetch_array($result)) {  
  6.     $rows[] = $row;  
  7.   }  
  8.   return $rows;  
  9. }  
  10. ?>  
Az, hogy tömböket, vagy objektumokat kérsz-e le, az rajtad múlik. A Drupalban szintaktikai okok miatt használnak objektumokat, de igazán sok értelmük nincs (lényegében tömböt használnak objektum szintaktikával).
4

Hogyan tovább?

overlord · 2004. Szep. 8. (Sze), 10.28
Már "csak" az maradt hátra, hogy a $rows-ból kihámozzam az adatokat egy html táblázatba. Azt miképp tudom elérni a Drupalban? Bocs, ha túl triviális a kérdés..
5

theme("table", ...)

Hojtsy Gábor · 2004. Szep. 8. (Sze), 18.01
Nézd meg, hogy a theme("table", ...) hogyan használatos máshol a kódban.
6

Van egy theme_table() függvény

overlord · 2004. Szep. 9. (Cs), 12.32
A theme_table használható erre? (Csak a blokkban szeretném a táblázatot.) Mindenesetre kísérletezek vele...

Köszönöm a segítséget.
7

Mégegyszer :)

Hojtsy Gábor · 2004. Szep. 9. (Cs), 13.51
Mégegyszer írom: a theme("table", ...) használatát nézd meg, a theme_table()-t nem hívják közvetlenül sehonnan. Bár végülis bizonyos esetekben erre fordítódik le a theme("table", ...) hívás, de nem mindig. A paraméterezésük ugyanaz.
8

Nem találok ilyet

overlord · 2004. Szep. 11. (Szo), 20.00
Csak a theme_table-ről esik szó, és hogy a theme()-et kellene egy 'table' első paraméterrel meghívni.
Ha így használom, nem ír ki semmit a blokkba, de az megjelenik üresen:
  1. <?php  
  2.   if ($which_block == 2) {  
  3.     $output=theme('table',$header$rows$attributes=NULL);  
  4.     return t($output);  
  5.   }  
  6. }  
  7. ?>  
9

Tömb

Hojtsy Gábor · 2004. Szep. 11. (Szo), 22.06
Egy kételemű tömböt kell visszaadni a blokk függvényekből és nem egy karaktersorozatot. Megint csak azt tudom mondani, hogy meglévő blokk függvényeket nézz meg. A t() hívásra szintén nincs szükség, annak teljesen más célja.