Efektivní vypsání tabulky při dibi::query
- symmetry
- Člen | 71
Zdravím,
mám jeden dotaz,
pokud si pomocí dibi fetchnu result do pole
<?php
$result = dibi::query('SELECT * FROM [tbl_seminars]');
$all = $result->fetchAll();
?>
Jakým elegantním způsobem bych jej v Nette mohl vypsat do tabulky?
dříve jsem to dělal níže uvedeným způsobem a toho bych se právě díky Nette chtěl zbavit:)
Díky za každou radu.
<?php
while(is_array($data = mysql_fetch_array($dotaz)))
{
$id = $data['id_uzivatele'];
$nick = $data['nick'];
$mail = $data['mail'];
echo "<tr>";
echo "<td>$nick</td>";// \n for new line in html code
echo "<td>$mail</td>";
echo "<td><a href=\"user_details.php?id=$id\" title=\"zobrazi detail\" ><img src=\"./img/b_edit.png\" alt=\"edit\" /></a></td>";
echo "<td><input type=\"checkbox\" name=\"action[]\" value=\"$id\"></td>\n";
echo "</tr>";
}
echo "</table>\n";
mysql_free_result($dotaz);
mysql_close($spojeni);
}
?>
- stpnkcrk
- Generous Backer | 190
V presenteru (to, že by komunikace s DB měla být v aplikaci odsunuta do modelu teď neřešíme)
<?php
// uvnitř nějaké render metody, pravděpodobně
$this->template->data = dibi::fetchAll('SELECT * FROM [tbl_seminars]');
?>
…a následně potom v šabloně
<table>
<tr n:foreach="$data as $row">
<td>{$row->nick}</td>
<td>{$row->mail}</td>
<td><a href="user_details.php?id={$row->id}" title="zobrazi detail" ><img src="./img/b_edit.png" alt="edit" /></a></td>
<td><input type="checkbox" name="action[]" value="{$row->id}"></td>
</tr>
</table>
Takhle nějak jsi to myslel? Příklad používá i relativně nové
vlastnsti přes n:... atributy
.
- redhead
- Člen | 1313
co sem si všim, tak symmetry nepoužívá nette aplikaci, takže na bastlení nějak takhle:
$result = dibi::query('SELECT * FROM [tbl_seminars]');
$all = $result->fetchAll();
foreach($all as $row)
{
echo "<tr>";
echo "<td>".$row->nick."</td>";// \n for new line in html code
echo "<td>".$row->mail."</td>";
echo "<td><a href=\"user_details.php?id=".$row->id."\" title=\"zobrazi detail\" ><img src=\"./img /b_edit.png\" alt=\"edit\" /></a></td>";
echo "<td><input type=\"checkbox\" name=\"action[]\" value=\"".$row->id."\"></td>\n";
echo "</tr>";
}
Pokud ti něco nebrání využívat celé nette, doporučuji se na to podívat. Ulehčí ti to strašně moc práce a nervů.
- symmetry
- Člen | 71
redhead
Diky, to je presne co jsem myslel, jinak nette bych vazne moc rad vyuzival cele,
jen chvili bude trvat, nez prostuduji MVC a dalsi veci.
Kazdopadne takto mi nette take pomaha..
Jinak co se tyce datagrid, tak to by to bylo urcite nejlepsi, bohuzel s ni
nemam v nette zkusenost(mozna tak v C#:), takze pokud by nekdo poradil, kde to
pekne nastudovat, budu rad.
- Ondřej Mirtes
- Člen | 1536
symmetry napsal(a):
redhead
Diky, to je presne co jsem myslel, jinak nette bych vazne moc rad vyuzival cele, jen chvili bude trvat, nez prostuduji MVC a dalsi veci.
Kazdopadne takto mi nette take pomaha..
Jinak co se tyce datagrid, tak to by to bylo urcite nejlepsi, bohuzel s ni nemam v nette zkusenost(mozna tak v C#:), takze pokud by nekdo poradil, kde to pekne nastudovat, budu rad.
- symmetry
- Člen | 71
Primo na tu komponentu jsem koukal, jenze problem bude nejspise v tom, ze
prozatim pri vytvareni nepouzivam navrhove vzory. Moje jednoducha aplikace neni
vytvarena jako ciste NETTE app.
Proto jsem treba nepouzil veci jako „tovarna na objekty“ ani presenter,
ktere jsou zminovany prave na vyse uvedenem odkazu.
Z tohoti bych pochopil to, ze zavolam metodu
createComponent(‚grid‘);
ale co pak s ni dale?
Omlouvam se, pokud vam moje otazky pripadaji trivialni, NETTE je ale opravdu muj prvni framework.
<?php
protected function createComponent($name)
{
switch ($name) {
case 'grid':
$grid = new DataGrid;
$model = new Model;
$grid->bindDataTable($model->getDataSource('customers'));
$this->addComponent($grid, $name);
return;
}
}
?>