Problem mit Array & Template

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Array & Template

    Hallo Leute,

    ich habe ein Problem mit einem Script was ich gern bei mir einsetzen möchte. Dieses Script arbeitet mit Templates und läuft auch bei akt. PHP-Versionen super. Ich verwende aber eine ältere PHP-Version und vermute da mal den Grund das das Script nicht fehlerfrei läuft.

    Hier mal der Originalcodeschnippel vom Autor. Hier werden die Datensätze aus der Tabelle ausgelesen in Variablen gespeichert und sollten dann an die Platzhalter im Template weitergegeben werden, das funktioniert mit meiner PHP-Version 4.0.0 nicht

    PHP-Code:
    // Standard-Template laden wenn kein User-Template vorhanden ist!
                
    $get_tpl_1=mysql_query("SELECT tpl_1 FROM ja_$sql_cfg_bb") or die("Template kann nicht geladen werden!<br>".mysql_error());
                
    $template_e=mysql_fetch_array($get_tpl_1);
                
    $template=$template_e[tpl_1];
                
    /* Kein Template in der MySQL-Datenbank?! => Standard anzeigen */
                
    if ($template == '') {
                    
    $template "<table border=0 cellpadding=2 cellspacing=3 width=100%><tr><td width=96 align=center valign=top ";
                    
    $template.= "rowspan=5>{BILD}</td><th colspan=2>\"{TITEL}\"</td></tr><tr><th>Autor:</th><td>{AUTOR}</td></tr>";
                    
    $template.= "<tr><th>Verlag:</th><td>{VERLAG}</td></tr><tr><th>Preis:</th><td>{PREIS} EUR</td></tr><tr><th ";
                    
    $template.= "align=left colspan=2>Kurzbeschreibung dieses Titels:</td></tr><tr><td align=left colspan=3><p ";
                    
    $template.= "align=justify>{BESCHR}...</p></td></tr><tr><td colspan=3 align=right><a href=\"{URL}\" ";
                    
    $template.= "target=\"_blank\">...mehr über dieses Buch</a> & <a href=\"{URL}\" target=\"_blank\">Bestellen</a>";
                    
    $template.= "</td></tr></table><br>";
                }
                while(
    $erg=mysql_fetch_array($inhalt)) {
                    if (
    file_exists($imgpfad."/".$erg[ASIN].".jpg")) {
                        
    $info getimagesize($imgpfad."/".$erg[ASIN].".jpg");
                        
    $v_bild "<A HREF=\"$PHP_SELF?action=go&ASIN=$erg[ASIN]\" target=\"_blank\"><img ";
                        
    $v_bild.= "src=\"$imgurl/$erg[ASIN].jpg\" $info[3] border=0 alt=\"$erg[Titel]\"></a>";
                    } else {
                        
    $info getimagesize($imgpfad."/keinbild.gif");
                        
    $v_bild "<A HREF=\"$PHP_SELF?action=go&ASIN=$erg[ASIN]\" target=\"_blank\"><img ";
                        
    $v_bild.= "src=\"$imgurl/keinbild.gif\" $info[3] border=0 alt=\"keine Vorschau\"></a>";
                    }
                    
    $v_titel stripslashes($erg[Titel]);
                    
    $v_autor stripslashes($erg[Autor]);
                    
    $v_verlag stripslashes($erg[Verlag]);
                    
    $v_preis $erg[Preis];
                    
    $v_beschr stripslashes($erg[Beschreibung]);
                    
    $v_url "$PHP_SELF?action=go&ASIN=$erg[ASIN]";
                    echo 
    str_replace(
                        array(
    "{BILD}","{TITEL}","{AUTOR}","{VERLAG}","{PREIS}","{BESCHR}","{URL}"),
                        array(
    $v_bild,$v_titel,$v_autor,$v_verlag,$v_preis,$v_beschr,$v_url),
                        
    $template);
                } 
    Hat jemand eine Idee, wie ich das auch mit einer alten PHP-Version lauffähig bekomme? Entscheidend sind wohl die Zeilen ab echo str_replace(.... Ich habe versucht es mit einer kl. Änderung hinzubekommen. Mit dem Ergebnis, das nun zwar die Platzhalter richtig gefüllt werden, aber es wird immer nur ein und der selbe Datensatz ausgegeben. anstatt alle 4 verschiedenen

    PHP-Code:
    $array_1 = array("{BILD}","{TITEL}","{AUTOR}","{VERLAG}","{PREIS}","{BESCHR}","{URL}");
    $array_2 = array($v_bild,$v_titel,$v_autor,$v_verlag,$v_preis,$v_beschr,$v_url);
    for(
    $x1=0;$x1<7;$x1++) { $template str_replace($array_1[$x1],$array_2[$x1],$template);
    }
    echo 
    $template;


    Wie schon erwähnt, was ich sehr merkwürdig finde, bei anderen funktioniert das Script im Original fehlerfrei, die PHP höher 4.0.0 einsetzen....

    Vielleicht kann mir ja einer helfen, das das Script auch bei mir fehlerfrei läuft. Ich würde mich über jede Hilfe freuen

    cu Yogi
    Zuletzt geändert von yogi64; 16.06.2003, 16:20.

  • #2
    du überschreibst dir $template schon nach dem ersten Durchgang der
    while-schleife

    schreib mal
    $output= str_replace($array_1[$x1],$array_2[$x1],$template);

    echo $output;

    Kommentar


    • #3
      Hallo Norbert,

      danke Dir für Dein Tip . Zeitgleich habe ich auch noch ein Freund befragt und um Hilfe gebeten. Er hat folgende Lösung gefunden:

      PHP-Code:
      $temp $template;
      for(
      $x=0;$x<7;$x++) { $temp str_replace($array_1[$x],$array_2[$x],$temp);
      }
      echo 
      $temp
      Nun läuft alles Bestens

      Was mich aber trotz allem verwundert, warum die Originalroutine nun überhaupt nicht funktioniert(e), siehe grösseren Codeschnippel....

      Yogi

      Kommentar


      • #4
        ein blick ins manual gibt aufschluss:
        Seit PHP 4.0.5 kann jeder Parameter von str_replace() auch ein Array sein.
        http://de3.php.net/manual/de/function.str-replace.php
        Kissolino.com

        Kommentar


        • #5
          Hi Wurzel,

          danke Dir für Dein Tip.

          cu Yogi

          Kommentar

          Lädt...
          X