PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Variablen oda so prob?



Blakkeight
21.10.2006, 14:14
Sry fuer den schlechten Titel aber ich habe keine ahnung wie ich mein Problem bezeichnen soll. =)

So hier mal der Code um den es sich handelt:


include("style/standart/vaa/news.php");
$sql=mysql_query("SELECT ID, name,mail,title,datum,post FROM ".$pref."news ORDER BY ID DESC;") or die(mysql_error());
while($row = mysql_fetch_array($sql)) $news_posts[] = $news_content_edit;
if (empty($news_posts)) $news_posts = array("");
$news_content = implode("", $news_posts);

Ansich funzt er ja nur zeigt er nicht die Variablen aus der datei news.php an.
Die News datei dient als TPL und in ihr ist dieser code enthalten:


$news_content_edit = '
<table>
<tr>
<td>Titel: </td>
<td><input name="title" type="text" value="'.$row['title'].'"></td>
</tr>
<tr>
<td>Text: </td>
<td><textarea name="post">'.$row['post'].'</textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="'.$lang['news_edit'].'"></td>
</tr>
</table>
';

Keine ahnung wieso aber irgend wie werden die Variablen $row['title'] und $row['post'] nicht erkannt.

Wenn ich den code aber nun so veraender das er so aussieht:


$sql=mysql_query("SELECT ID, name,mail,title,datum,post FROM ".$pref."news ORDER BY ID DESC;") or die(mysql_error());
while($row = mysql_fetch_array($sql)) $news_posts[] = '
<table>
<tr>
<td>Titel: </td>
<td><input name="title" type="text" value="'.$row['title'].'"></td>
</tr>
<tr>
<td>Text: </td>
<td><textarea name="post">'.$row['post'].'</textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="'.$lang['news_edit'].'"></td>
</tr>
</table>
';
if (empty($news_posts)) $news_posts = array("");
$news_content = implode("", $news_posts);

funktionierts.

Kann mir jemand soweit helfen das das Erste Bsp. Funktioniert?

Thread kann geloescht werden, hat sich erledigt. Habs auf eine andere weise hinbekommen. gruss jay

mitaki
21.10.2006, 18:08
Dennoch zur Erklärung:

Du hast vermutlich Versucht, die Templatedatei einzufügen und dann die Schleife auszuführen.

Allerdings ist PHP so gebaut, dass die Variablen $row bei der Initialisierung von $news_content_edit bereits durch ihren Inhalt ersetzt wurden d.h. bei Nichtexistenz der variablen ein Leerstring.

Wenn du die Templatedatei in der Schleife einfügst müsste es funktionieren (das hast du jetzt vermutlich auch gemacht).

Blakkeight
22.10.2006, 10:40
hm versteh ich iregend wie nicht.
Es muesste doch das gleiche bei rauskommen wenn ich:

$fu = $bar;
oda

$fu = "bar";
schreibe.

mitaki
22.10.2006, 12:39
Ja, aber nur bei:

$bar = 'bar';
$fu = $bar;
Andersrum ist es nicht möglich:

$inhalt = 'Das plus ' . $variable . ' Punkt.'; // String wird in die variable $inhalt geschrieben. Da $variable nicht existiert wird sie durch einen Leerstring ersetzt.
$variable = 'Wert'; // Variable $variable wird hier erst Initialisiert.
$inhalt_neu = $inhalt; // Neue Variable erhält den Wert von $inhalt. Da diese bereits ein feststehender String ist sind beide Variablen identisch.
Auf dein Problem übertragen bedeutet das: Da $news_content_edit mit nicht initialisierten Variablen bestimmt wurde lautet der Inhalt dieser Variable..

<table>
<tr>
<td>Titel: </td>
<td><input name="title" type="text" value=""></td>
</tr>
<tr>
<td>Text: </td>
<td><textarea name="post"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="'.$lang['news_edit'].'"></td>
</tr>
</table>

Wenn du diesen teil jedoch selbst in die Schleife setzt, sind die Variablen automatisch initialisert, da das die Funktion mysql_fetch_array() übernimmt.

Nebenbei: Für deine Tabelle/Formular kannst du dich über <label> und <th> sowie <td colspan="2"> informieren ;)

Blakkeight
22.10.2006, 13:27
Ok dann wuerd das jetzt schon ein bissel klarer. =)

>> Nebenbei: Für deine Tabelle/Formular kannst du dich über <label> und <th> sowie <td colspan="2"> informieren.
Jo werd ich machen. ;)