MySQL-Abfrage als Array für Smarty ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL-Abfrage als Array für Smarty ausgeben

    Hallo,

    ich habe folgendes Problem:

    Ich möchte Daten, welche in einer MySQL-Datenbank gespeichert sind in einem Smarty Template ausgeben. Leider liest Smarty meine über SQL ausgegebenen Arrays nicht richtig. Ich habe folgende MySQL anfrage:

    PHP-Code:
        include ("admin/config.php");
        
    $query "SELECT * FROM newsletter_archiv"
        
    $result mysql_query($query);

        
    $smarty->assign("newsletter"mysql_fetch_assoc($result)); 
    Jetzt versuche ich dies in dem Template auszugeben:

    Code:
    <table>
    {section name=mysec loop=$newsletter}
    {strip}
       <tr bgcolor="{cycle values="#aaaaaa,#bbbbbb"}">
          <td>{$newsletter[mysec].datum}</td>
          <td>{$newsletter[mysec].auflage}</td>
       </tr>
    {/strip}
    {/section}
    </table>
    Leider bekomme ich keine Ausbage sondernb nur eine leere Tabelle raus!

    In der Datenbank sind folgende Spalten: id, datum, newsletter, auflage
    und es sind 4 zeilen gefüllt.

    Wo kann das der Fehler sein? Ist die Zuordnung der Werte denn richtig? Oder ist die ganze Vorgehensweise komplett falsch? Gibt es einen anderen richtigen Weg?

    Ich bin für jede Hilfestellung dankbar!

    ApeMaster
    Zuletzt geändert von apemaster; 06.08.2004, 12:00.

  • #2
    wie bitte kommst du auf die idee $users statt $newsletter zu verwenden?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      oh, habs falsch ins forum kopiert und jetzt korigiert!

      Kommentar


      • #4
        mal kontrolliert, ob smarty die werte hat?
        PHP-Code:
        echo '<pre>';
        var_export($smarty->get_template_vars());
        echo 
        '</pre>'
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Ist denn die Übergabe des Arrays an Smarty richtig und wird es richtig vom Smarty-Template übernommen?

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            mal kontrolliert, ob smarty die werte hat?
            PHP-Code:
            echo '<pre>';
            var_export($smarty->get_template_vars());
            echo 
            '</pre>'
            Habs kontrolliert. Im array "newsletter" spuckt er mir die erste Zeile der Datenbank aus. den Rest aber nicht ist bei der übergabe etwas falsch gegangen? Ich habe immer das Problem, dass er mir nur eine Zeile ausliest und ausgibt.

            Gibt es ein tut oder ein gutes beispiel wie man daten aus einer Datenbank in einer Schleife in einem Smarty Template ausgeben kann?

            Kommentar


            • #7
              Original geschrieben von apemaster
              Habs kontrolliert. Im array "newsletter" spuckt er mir die erste Zeile der Datenbank aus. den Rest aber nicht
              Also werden die Daten richtig ans Template übergeben. Wenn du dir einfach mal das array anschaust, welches mysql_fetch_assoc() direkt zurückgibt wirst du auch nur die Daten des ersten Datensatzes vorfinden. Um an alle Datensätze deiner Abfrage ranzukommen, musst du das alles in eine While-Schleife:
              PHP-Code:
              while ($row mysql_fetch_assoc($result)) {
              // .. do something      

              In dieser Schleife kannst du entweder alle Datensätze nacheinander in ein einziges Array schmeissen und danach ans Template übergeben. Oder in jedem Schleifendurchlauf einmal das Template aufrufen (was bei dir besser ist, solltest du selbst entscheiden)
              [color=red]Geht nicht[/color] ist keine Fehlermeldung

              Kommentar


              • #8
                So erstmal vielen, vielen Dnak für eure Hilfe! Ich habe es jetzt nach langem rumprobieren hinbekommen, aber schön ist meine Lösung nicht:

                PHP-Code:
                    include ("admin/config.php");
                    
                $query "SELECT datum FROM newsletter_archiv"
                    
                $result mysql_query($query);
                $datum = array();
                while (
                $row mysql_fetch_assoc($result)) {
                        
                array_push($datum$row[datum]);
                    }

                    
                $query "SELECT auflage FROM newsletter_archiv"
                    
                $result mysql_query($query);    
                $auflage = array();
                while (
                $row mysql_fetch_assoc($result)) {
                        
                array_push($auflage$row[auflage]);
                    }
                    
                    
                $query "SELECT id FROM newsletter_archiv"
                    
                $result mysql_query($query);    
                $id = array();
                while (
                $row mysql_fetch_assoc($result)) {
                        
                array_push($id$row[id]);
                    }

                $smarty->assign("datum"$datum); 
                $smarty->assign("auflage"$auflage); 
                $smarty->assign("id"$id); 
                Code:
                					<table width="100%" border="0" cellpadding="3" cellspacing="0">
                						<tr bgcolor="#B1B3AA">
                							<td><strong>Datum</strong></td>
                							<td><strong>Name</strong></td>
                							<td><strong>Auflage</strong></td>
                							<td><strong>L&ouml;schen</strong></td>
                						</tr>
                					{section name=newsletter loop=$datum}
                   						<tr bgcolor="{cycle values="#EEEEEE,#FFFFFF"}">
                							<td>{$datum[newsletter]|date_format:"%d.%m.%Y"}</td>
                							<td><a href="admin_newsletter_show.php{$session}&id={$id[newsletter]}" target="newsletter" onclick="javascript:popup('admin_newsletter_show.php{$session}&id={$id[newsletter]}','newsletter','width=850,height=550,directories=no,toolbar=no,location=no,menubar=no,scrollbars=yes,status=no,resizable=yes,dependent=no')">Newsletter vom {$datum[newsletter]|date_format:"%d.%m.%Y"}</a></td>
                							<td>{$auflage[newsletter]}</td>
                							<td><a href="admin_newsletter.php{$session}&section=archiv&funktion=delete&id={$id[newsletter]}">L&ouml;schen</a></td>
                						</tr>
                					{/section}
                					</table>
                Oder ist das so ok? ich finde es ziemlich umständlich erst alle Werte einzeln in ein Array zu laden und am Ende habe ich mehrere Arrays. Oder geht es nicht anders?

                Gruß,

                ApeMaster

                Kommentar

                Lädt...
                X