header Problem: Gibt nur ersten Buchstaben wieder

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&auml;stebuch</font></td>  
    <td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="addentry.php">Eintrag hinzuf&uuml;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>  

  1. 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
    
  2. 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...

  3. 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
    
    1. 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)
      
      1. 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

        1. 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

          --
          SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
          http://againsttcpa.com
          1. 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)
            
            1. 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

              --
              SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
              http://againsttcpa.com
          2. 你好 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.  
            
            
      2. 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.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Dies hier ist ein öffentliches Forum - wer dir hier geholfen hat, hat dies vollkommen freiwillig und unter Aufopferung seiner Freizeit getan!
        1. 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