Gibt nur ersten Buchstaben wieder
header Problem
- php
0 RFZ0 Klawischnigg0 XaraX0 Fabian St.
Hier ich bin gerade dabei ein Gbook zuschreiben. Das Problem ist, das ich als ausgabe aber nur einen Buchstaben habe.
Was ist falsch an meinem Script?
<?php
$sql = "SELECT * FROM gbook ORDER BY datum DESC";
$result = mysql_query($sql) or die(mysql_error().'<br />Query: '.$sql);
while ($gbook = mysql_fetch_array($result)) {
$zeit = $gbook["datum"];
$autor = $gbook["name"];
$kommentar = $gbook["eintrag"];
$ort = $gbook["ort"];
$roller = $gbook["roller"];
}
$kommentar = str_replace(":-)", "<img src=\"smilies/smilie1.gif\">", $kommentar);
$kommentar = str_replace(";-)", "<img src=\"smilies/smilie2.gif\">", $kommentar);
$kommentar = str_replace("", "<img src=\"smilies/smilie3.gif\">", $kommentar);
$kommentar = str_replace(":-(", "<img src=\"smilies/smilie4.gif\">", $kommentar);
$kommentar = str_replace(":cry:", "<img src=\"smilies/smilie5.gif\">", $kommentar);
$kommentar = str_replace(":angry:", "<img src=\"smilies/smilie6.gif\">", $kommentar);
$kommentar = str_replace(":D", "<img src=\"smilies/smilie8.gif\">", $kommentar);
$kommentar = str_replace("", "<img src=\"smilies/smilie9.gif\">", $kommentar);
for ($i = 0; $i < count($kommentar); $i++) {?>
<div id="Inhalt">
<table width="100%">
</table>
<table width="100%">
<tr>
<td valign="bottom"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Steffens Gästebuch</font></td>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="addentry.php">Eintrag hinzufügen</a></font></td>
</tr>
</table>
<table cellpadding=4 cellspacing=1 border=0 width="100%" bgcolor="#A1A5A9">
<tr bgcolor="#999999" id="tablehead">
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000"><b>Autor</b></font></td>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000"><b>Kommentar</b></font></td>
</tr>
<tr bgcolor="#e9e9e9" id="tablea">
<td valign="top" width="230" nowrap><table>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">Autor:
<?php echo stripslashes(nl2br($autor[$i].""));?></b> </font></td>
</tr>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000"><u>
Eintrag vom</u> <?php echo date("d.m.y , h:i",$datum[$i]);?> <br>
<u>Wo kommst du her</u>: <?php echo stripslashes(nl2br($ort[$i]."")); ?><br>
<u>Roller</u>: <?php echo stripslashes(nl2br($roller[$i]."")); ?><br>
</font></td>
</tr>
</table></td>
<td width="100%" valign="top"><table>
<tr>
<td valign="top"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">
<?php echo stripslashes(nl2br($kommentar[$i]."")); ?></font></td>
</tr>
</table></td>
</tr>
</table>
<table width="100%">
</table>
while ($gbook = mysql_fetch_array($result)) {
$zeit = $gbook["datum"];
$autor = $gbook["name"];
$kommentar = $gbook["eintrag"];
$ort = $gbook["ort"];
$roller = $gbook["roller"];
}
Du weist den Variablen den Wert jedes mal neu zu und überschreibst den alten Wert. $autor ist hier kein Array, wie du es eigentlich möchtest, sondern ein String.
Schreib einfach $autor[], dann wird bei jedem Durchlauf der Wert neu hinzugefügt und du erhälts dein gewünschtes Array.
greetz RFZ
Hi there,
Was ist falsch an meinem Script?
in Deiner while-Schleife weist Du die einzelnen Einträge immer den selben Variablen zu, soll heissen, nach jedem Durchlauf wird ein und die selbe Variable mit neuen Werten einfach überschrieben...
Moin header Problem,
nur am Rande:
$kommentar = str_replace("", "<img src="smilies/smilie3.gif">", $kommentar);
$kommentar = str_replace("", "<img src="smilies/smilie9.gif">", $kommentar);
was ergeben diese beiden Zeilen eigentlich?
Gruß aus Berlin!
eddi
Hi eddi!
nur am Rande:
$kommentar = str_replace("", "<img src="smilies/smilie3.gif">", $kommentar);
$kommentar = str_replace("", "<img src="smilies/smilie9.gif">", $kommentar);
>
> was ergeben diese beiden Zeilen eigentlich?
Abgesehen davon:
Sollten wir ihm vielleicht sagen, dass [str_replace()](http://de.php.net/str_replace) auch Arrays als Parameter akzeptiert? ;-)
Grüße,
Fabian St.
--
\---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
\---------------------
Selfcode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%28+ss%3A%29+de%3A%3E+js%3A%7C+ch%3A%3F+mo%3A%29+zu%3A%29)
Hallo!
$kommentar = str_replace("", "<img src="smilies/smilie3.gif">", $kommentar);
$kommentar = str_replace("", "<img src="smilies/smilie9.gif">", $kommentar);
> Abgesehen davon:
> Sollten wir ihm vielleicht sagen, dass [str_replace()](http://de.php.net/str_replace) auch Arrays als Parameter akzeptiert? ;-)
Zwecks Übersichtlichkeit würde ich in dem Fall sogar auf die schneller aggearbeiteten Arrays verzichten und mit einer schleife arbeiten:
~~~php
$such=array('',":-)",";-)","???",":-(",":cry:",":angry:",":D","?!?")
for($i=1,$i<count($such);$i++)
$kommentar=str_replace($such[$i],"<img src='smilies/smilie{$i}.gif'>", $kommentar);
Gruß aus Berlin!
eddi
Hallo XaraX,
$such=array('',":-)",";-)","???",":-(",":cry:",":angry:",":D","?!?")
for($i=1,$i<count($such);$i++)
$kommentar=str_replace($such[$i],"<img src='smilies/smilie{$i}.gif'>", $kommentar);
Warum nicht gleich richtig übersichtlich?
~~~php
$smileys = array(
':-)' => 'g.png',
';-)' => 'wink.png',
':-))' => 'bg.png' # usw..
);
foreach ($smileys as $smiley => $image) {
str_replace($smiley, '<img alt="'.$smiley.'" src="'.$image.'" />', $kommentar);
}
Gruß
Alexander Brock
Hi Alexander!
Kleine Verbesserung:
foreach ($smileys as $smiley => $image) {
$kommentar = str_replace($smiley, '<img alt="'.$smiley.'" src="'.$image.'" />', $kommentar);
}
;-)
Grüße,
Fabian St.
--
\---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
\---------------------
Selfcode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%28+ss%3A%29+de%3A%3E+js%3A%7C+ch%3A%3F+mo%3A%29+zu%3A%29)
Hallo Fabian,
Kleine Verbesserung:
foreach ($smileys as $smiley => $image) {
$kommentar = str_replace($smiley, '<img alt="'.$smiley.'" src="'.$image.'" />', $kommentar);
Danke, das kommt davon, wenn man kurz vorher sort() verwendet hat :-))
Gruß
Alexander Brock
你好 Alexander,
$smileys = array(
':-)' => 'g.png',
';-)' => 'wink.png',
':-))' => 'bg.png' # usw..
);foreach ($smileys as $smiley => $image) {
str_replace($smiley, '<img alt="'.$smiley.'" src="'.$image.'" />', $kommentar);
}
Da ist natürlich das Problem, dass es sehr viel Performance kostet. Für
jeden Smiley muss der gesammte Code durchlaufen werden. Da ist die Methode
mit dem str\_replace() und den Arrays als Argumente sinnvoller weil
schneller, zumindest wenn es intelligent implementiert wurde.
再见,
克里斯蒂安
--
Willst du die Freuden dieser Welt geniessen, so musst du auch ihr Leid erdulden.
Hi Fabian,
Abgesehen davon:
Sollten wir ihm vielleicht sagen, dass str_replace() auch Arrays als Parameter akzeptiert? ;-)
Und auf die BBCode-Parserklasse für PHP von Christian Seiler hinweisen? ;-)
MfG, Dennis.
Hi Dennis,
Abgesehen davon:
Sollten wir ihm vielleicht sagen, dass str_replace() auch Arrays als Parameter akzeptiert? ;-)Und auf die BBCode-Parserklasse für PHP von Christian Seiler hinweisen? ;-)
Das ist dann aber schon nicht mehr die Kannone, sondern die Zugladung Kannonen auf einen Spatz. (Nur für include($Klasse); $a=new StringParser_BBCode;
geht mal -eben so- ein halbes MB an Speicher drauf.)
Gruß aus Berlin!
eddi