Zum Inhalt springen

Hilfe bei SQL Ausgabe von PHP in verbindung mit Smarty template engine (Anfänger)


Empfohlene Beiträge

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 :P).

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 11 Monate später...

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 von der_robert
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...