Wie stellt man den Zugriff auf eine Mysql-Ergebnis in Smarty?
Meine Website zeigt eine Reihe von divs, die jeweils stellvertretend für eine Sammlung, die enthält fünf verschiedene Arten von Inhalten. Die einzelnen div-zeigt an, wie viel Elemente, die von jeder Art von Inhalt in dieser Sammlung.
Ich derzeit bekommen Sie die Anzahl für jede Art von Datenbank wie so:
{section name=res loop=$results}
{assign var='wn' value=$db->num_rows($db->query("select * from content where type='1' and collection_id='{$results[res].collection_id}'"))}
{assign var='nn' value=$db->num_rows($db->query("select * from content where type='2' and collection_id='{$results[res].collection_id}'"))}
etc
Das problem ist, dass wir tun, fünf Datenbank-Abfragen für die einzelnen div -, und wir möchten versuchen, Sie zu kombinieren in einem. Mit php werden wir einfach tun,
$w=$db->query("select type, count(*) as number from content where collection_id='".$val['collection_id']."' GROUP by type");
Verwenden und dann eine "while" - Schleife mit "mysql_fetch_array", um den Typ zuordnen Mengen zu Variablen.
Ist es möglich, etwas zu tun, ähnlich wie bei Smarty? Ist es ein mysql_fetch_array alternative für Smarty Zugriff auf das ResultSet?
Vielen Dank im Voraus!
EDIT: Es ist vorgeschlagen worden, dass ich tun sollte, als dies aus der php, butI bin mir nicht klar, wie das funktionieren würde. In meiner php-Datei habe ich Folgendes:
<?php
$c=$db->query("select * from ".USERS_PIN."");
$cdata = array();
while ($row = mysql_fetch_array($c))
{
$cdata[] = $row;
}
$smarty->assign("results", $cdata);
$smarty->display('stack.tpl');
?>
Dann im stack.tpl habe ich Folgendes:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body >
<div id="ColumnContainer">
{if count($results) > 0}
{section name=res loop=$results}
{assign var='wn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='4' and board_id='{$results[res].board_id}'"))}
{assign var='nn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='5' and board_id='{$results[res].board_id}'"))}
{assign var='in' value=$db->num_rows($db->query("select * from pinrest_users_pin where (type='1' or type='2') and board_id='{$results[res].board_id}'"))}
{assign var='vn' value=$db->num_rows($db->query("select * from pinrest_users_pin where type='3' and board_id='{$results[res].board_id}'"))}
<div class='item' style="height:70px;width:350px;float:left;border:2px solid aqua" data-id="{$results[res].id}">
<div class="datadiv" >
<div style="margin-top:3px;width:40%;float:left;margin-left:15px">{$nn} news {$vn} videos {$in} images {$wn} webpages</div>
</div>
</div>
{/section}
{/if}
</div>
</body>
</html>
Ich dachte mir, dass ich Baue die divs einzeln aus der Smarty-Schleife, ich habe keine Wahl, aber, um die mysql-Daten für jeden div einzeln in der Schleife. Gibt es eine Möglichkeit für mich zu bekommen, dass die Daten für jedes div in der php-Datei und dann weisen Sie es und verwenden Sie es in Smarty, während der Schleife?
- Tut mir Leid, es ist nicht sehr klar für mich, können Sie uns zeigen, was du bist-Vorlage aussieht, oder was Sie wollen, dass es aussieht ?
- Anas , ich habe gerade die php-und tpl-code.
- Lassen Sie uns weiterhin im chat, so kann ich verstehen, Ihr Problem ist : chat.stackoverflow.com/rooms/15442/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tut SQL in Ihre Smarty template Niederlagen der Zweck der Verwendung einer Template-system in den ersten Platz. Behandeln Sie diese in einer controller-Datei.
Ich bin ein bisschen rostig auf PHP-sql-Methoden so anzupassen, diese mit den richtigen Methoden für Ihre Umsetzung. Lösung 1:
Lösung 2 (wahrscheinlich der bessere Weg, um darüber zu gehen):
Hoffentlich bekommt die Idee, über.
Weisen Sie das zurückgegebene array von mysql_fetch_array, um eine smarty-variable, dann ist Sie Schleife mit smarty
Hier ist ein Beispiel:
du php-Datei:
Ihre smarty template
EDIT:
Für Ihre Anforderung, die Sie verwenden sollten multimentional /verschachtelte arrays, haben Sie einen Blick auf diese Frage:
php smarty-Schleife ein mehrdimensionales array
In php, tun die 4 Abfragen ( die von Ihrem tpl ) in die Haupt-Abfrage-Schleife und fügen Sie die Ergebnisse als Felder auf $row :
Dann im tpl über $Ergebnisse[res].wn in Ihrer div.