Morrey Geschrieben 20. Juli 2011 Geschrieben 20. Juli 2011 Hallo liebe Forengemeinde, Hintergrund: ich bin neu hier und programmiere PHP erst seid 2 Wochen. Zurzeit befinde ich mich im Praktikum bei meiner Firma die mich ab dem 15.09 als Azubi übernimmt. Zurzeit versuche ich meine Kentnisse mit kleinen Übungen zu festigen. Nun mein Problem: Einmal der Code: __________________________________________________________________ include_once 'news_db.php'; include_once 'act_datetime.php'; $query = "select * from $tablename "; $result = mysql_db_query ($dbname,$query, $link); $row = mysql_fetch_array($result); //Array leeren $newArr = array(); //MYSQL_ASSOC gibt nur die assoziativen Arrays aus while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $newArr[] = $row; } $smarty->assign('resArr', $newArr); $smarty->assign('act_date',$date); $smarty->display('templates/newsticker_front.tpl'); ____________________________________________________________________ Hier seht ihr meine DB abfrage. Das funktioniert soweit auch. Daten wie timestamp und die Datenbankinformationen hole ich per include von anderen dateien. Am ende übergebe ich die ausgabe an mein template. Nun mein Template: ________________________________________________________________ <table border="1" align="center" valign="top"> <h1 align="center"> Newsticker</h1> <tr> <td colspan=1> Aktuelles Datum:</td><td colspan=1>{$act_date}</td> </tr> <tr> <td colspan=2> </td> </tr> {foreach $resArr as $arr} <tr> <td>{print_r($arr['message'])}</td> <td>{print_r($arr['date'])}</td> </tr> {/foreach} </table> ______________________________________________________________________ Hier übergebe ich das Array meiner schleife die dann eine tabelle erstellt. Funktioniert auch. Nun kommt der Fehler, in den Tabellen steht nach der ausgabe immer eine 1 hintendran. Egal ob in der Tabelle für die "message" oder für das "date". In der Datenbank sind die einträge sauber. Gebe ich zum testzweck ein eintrag aus, kommt ebenfalls keine 1. Meine Vermutung: Liegt es vll an der print_r ausgabe? das die "1" ein "true" bedeutet? Wenn ja, gibt es einen anderen befehl der mir eine solche ausgabe richtig ausgibt? mit echo wird es meines wissens nicht gehen.. Leider gehen mir die Ideen aus. Ich hoffe auf eure Hilfe. Bitte schreibt aber nicht nur die Lösung hin falls euch eine einfällt sondern erklärt diese zum nachvollziehen (ich will ja was dabei lernen ). Kleine Info noch: Das Template ist mit HTML und Smarty template engine aufgebaut. Deshalb wird der foreach befehl in den geschweiften klammern geschrieben. Danke schonmal Vorab! lg Zitieren
diditwithook Geschrieben 29. Juli 2011 Geschrieben 29. Juli 2011 debugge bitte einmal das skript und schaue dir vor dem assign, dein array an (bzw. poste den inhalt). am print_r dürfte es nicht liegen, wobei die ausgabe über print_r in einem produktiven system für endbenutzer nicht brauchbar sein dürfte ___ anderer ansatz: füge in dein .tpl file {debug} ein, rufe das skript auf nun siehst du alle variablen, schau dir hier einmal dein array an Zitieren
der_robert Geschrieben 17. Juli 2012 Geschrieben 17. Juli 2012 (bearbeitet) Auch wenn der Beitrag schon älter ist ... vllt hilfts ja jemandem weiter. $smarty->assign('resArr', $newArr); <-- schonmal gut so .. {foreach $resArr as $arr} <tr> <td>{print_r($arr['message'])}</td> <td>{print_r($arr['date'])}</td> </tr> {/foreach} [/PHP] würde ich so schreiben: $smarty->assign('resArr', $newArr); <-- schonmal gut so .. ^^ das arry $newArr wird in die Smarty Variable resArr gespeichert und ans template übergeben. Im Template ist jetzt resArr das Arry, deswegehn in der foreach $resArr, es reicht aus wenn man item=item oder item=value oder item=irgendwas schreiben würde, oder key=irgendwas2... das bleibt dir überlassen, wichtig ist nur, wenn du auf die Werte des Arrays zugreifen willst, benötigst du das item=irgendwas, innerhalb der foreach kann dann jedes element mit {$irgendwas.ABC} angesprochen werden. eine weitere oder mehrere foreach in anderen foreaches ist kein problem, man sollte nunicht =key und =item mehrfach verwenden... vv [PHP] {foreach from=$resArr key=key item=item} <tr> <td>{$item.message}</td> <td>{$item.date.}</td> </tr> {/foreach} duck und weg .... vllt hilft auch mysql_fetch_array($result, MYSQL_ASSOC) durch mysql_fetch_assoc($result); zu ersetzten .... Ich kenn mich da nicht so gut aus :-) Hab schon ewig kein sql mit php funktionen benutzt :-)... Ausschließlich AdoDB Bearbeitet 17. Juli 2012 von der_robert Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.