Kleine Frage zur Datenausgabe mittels Templates

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

  • Kleine Frage zur Datenausgabe mittels Templates

    Ein ähnliches Problem hab ich ja schon mal vor einigen Wochen gehabt.
    Nun habe ich das Script noch etwas erweitert so dass es nun auf Templates basiert.
    Mein neues Problem ist folgendes:

    Alle aus der Datenbank gewählten Anbieter werden aufgelistet (funktioniert fehlerfrei).
    Zu jedem Anbieter(anbietername) sollen nun die entsprechenden Info-Datensätze (unterschiedlich viele) ausgegeben werden.
    Zu jedem Anbieter, zu dem Infos verfügbar sind, werden Infos(infoname,info) ausgegeben, jedoch zu jedem Anbieter dieselben Info-Datensätze (Das sind die Info-Datensätze zum letzten Anbieter, zudem Infos verfügbar sind.)
    Zu Anbietern, zu denen keine Infos verfügbar sind, soll eine entsprechende Meldung (NOANBIETERINFOS) ausgegeben werden.


    PHP-Code:
    $sql "SELECT anbietername FROM anbieter;
    $resultanbieter = mysql_query($sql,$connection);
    echo mysql_error();

    if (mysql_num_rows(
    $resultanbieter) != 0)
      {
       
    $i = 0;
       while(list(
    $anbietername[$i]) = mysql_fetch_row($resultanbieter))
         {
          
    $sqlinfos[$i] = "SELECT infoname,info FROM anbieter_infos WHERE anbieterid='$anbieterid[$i]' ";
          
    $resultinfos[$i] = mysql_query($sqlinfos[$i],$connection);
          echo mysql_error();

            if (mysql_num_rows(
    $resultinfos[$i]) != 0)
              {
               
    $noanbieterinfos[$i] = 0;
               
    $j = 0;
               while(list(
    $infoname[$j],$info[$j]) = mysql_fetch_row($resultinfos[$i]))
               
    $j++;
              }
            else
              {
               
    $noanbieterinfos[$i] = 1;
              }
       
    $i++;
         }
       
    $noanbieter = 0;
      }
    else
      {
       
    $noanbieter = 1;
      }
    include "
    viewpage.php";






    Das Template-Script
    PHP-Code:
    <?
    $template = "";
    $fp = fopen("templates/viewpage.html",r);
    while (!feof($fp))
    {
      $template .= fgets($fp,filesize("templates/viewpage.html"));
    }
    preg_match("/\[CONTINUEANBIETER\](.*?)\[\/CONTINUEANBIETER\]/is",$template,$anbieter);
    preg_match("/\[CONTINUEANBIETERHEADER\](.*?)\[\/CONTINUEANBIETERHEADER\]/is",$template,$anbieterheader);
    preg_match("/\[CONTINUEANBIETERINFOS\](.*?)\[\/CONTINUEANBIETERINFOS\]/is",$template,$anbieterinfo);

    if ($noanbieter == 0)
      {
       $i = 0;
       $insert = "";
       while ($anbietername[$i] != "")
         {
          $insert2 = $anbieterheader[1];
          $insert2 = str_replace("[ANBIETERNAME]",$anbietername[$i],$insert2);
          $insert .= $insert2;

          if ($noanbieterinfos[$i] == 0)
            {
             $j = 0;
             $insertj = "";
             while ($infoname[$j] != "")
               {
                $insert3 = $anbieterinfo[1];
                $insert3 = str_replace("[INFONAME]",$infoname[$j],$insert3);
                $insert3 = str_replace("[INFO]",$info[$j],$insert3);
                $insert .= $insert3;
                $j++;
               }
             $template = preg_replace("/\[CONTINUEANBIETERINFOS\](.*?)\[\/CONTINUEANBIETERINFOS\]/is",$insert,$template);
             $template = preg_replace("/\[NOANBIETERINFOS\](.*?)\[\/NOANBIETERINFOS\]/is","",$template);
            }
          else
            {
             $template = preg_replace("/\[NOANBIETERINFOS\](.*?)\[\/NOANBIETERINFOS\]/is","\\1",$template);
             $template = preg_replace("/\[CONTINUEANBIETERINFOS\](.*?)\[\/CONTINUEANBIETERINFOS\]/is","",$template);
            }
          $insert .= "<p>";
          $i++;
         }

       $template = preg_replace("/\[CONTINUEANBIETER\](.*?)\[\/CONTINUEANBIETER\]/is",$insert,$template);
       $template = preg_replace("/\[NOANBIETER\](.*?)\[\/NOANBIETER\]/is","",$template);
      }
    else
      {
       $template = preg_replace("/\[CONTINUEANBIETER\](.*?)\[\/CONTINUEANBIETER\]/is","",$template);
       $template = preg_replace("/\[NOANBIETER\](.*?)\[\/NOANBIETER\]/is","\\1",$template);
      }

    echo $template;
    ?>



    Aufbau der HTML-Template-Datei viewpage.html:
    [CONTINUEANBIETER]
    [CONTINUEANBIETERHEADER][ANBIETERNAME][/CONTINUEANBIETERHEADER]
    [CONTINUEANBIETERINFOS][INFONAME][INFO][/CONTINUEANBIETERINFOS]
    [/CONTINUEANBIETER]


    Wahrscheinlich ist's wieder nur ne Kleinigkeit, aber als Newbie komm ich einfach nicht drauf.
    Zuletzt geändert von moneygoesfree; 22.06.2002, 21:41.

  • #2
    Ich verstehe zwar nur wenig von Regulären Ausdrücken..
    Aber sehen deine Templates so aus : [template] ?
    [] <- bezeichnen bei regulären ausdrücken eine Menge
    [ab] match bei 'a' und 'b'.
    Kann sein dass ich falsch liege..

    Aber bei Templates werden normalerweise (nach allen meinen quellen) entweder {template} oder <!template> verwendet.
    ich nutze übrigens <!{template}>

    Zu dem geht dein Templateparser ja nur für das bestimmte Template und nicht für alle.

    Kommentar


    • #3
      Die eckigen Klammern hab ich aus einem nicht von mir erstellten Newsscript (Zu finden unter www.spikesfan.de) übernommen und funktionieren bei meinen anderen Seiten fehlerfrei.

      Kommentar

      Lädt...
      X