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/...
InformationsquelleAutor Phil | 2012-08-16
Schreibe einen Kommentar