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.

<?php
function sajattabla_contents($which_block) {
  if ($which_block == 1) {
	$query=('SELECT elem1, elem2, elem3, FROM sajattabla ORDER BY elem1;')
	$result=db_query($query);
	while db_fetch_object($result){
	itt rajzolnám meg a táblázatot a kapott adatokkal, még nem tudom mivel(return?);
	}
    }
}
?>
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:

<?php
function get_sajattabla_datas(){
	$sajattabla_result=db_query('SELECT elem1,elem2,elem3 FROM {sajattabla} ORDER BY elem1');
	$sajattabla_rows=db_num_rows($sajattabla_result);
	for ($counter=1; $counter<=$sajattabla_rows; $counter++){ 
$sajattabla[]=db_fetch_array($sajattabla_result);
}
return $sajattabla;
}
?>
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:

<?php
function get_sajattabla_data() {
  $result = db_query('SELECT elem1,elem2,elem3 FROM {sajattabla} ORDER BY elem1');
  $rows = array();
  while ($row = db_fetch_array($result)) {
    $rows[] = $row;
  }
  return $rows;
}
?>
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:

<?php
  if ($which_block == 2) {
  	$output=theme('table',$header, $rows, $attributes=NULL);
    return t($output);
  }
}
?>
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.