Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrfach News ausgeben

Einklappen

Neue Werbung 2019

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

  • Mehrfach News ausgeben

    Hey Hey,

    ich habe mich dafür entschieden zu Includen um HTML von PHP zu trennen, nachdem ich einen Beitrag über Templates Klassen gelesen habe.


    Nun zu meinem Problem

    Ich Include so:

    index.tpl
    PHP-Code:
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="left" valign="top"><?PHP echo $a_navi?></td>
        <td align="left" valign="top"><?PHP require($a_content); ?></td>
        <td align="right">&nbsp;</td>
      </tr>
    </table>
    news.tpl

    PHP-Code:
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="left" valign="top"><a href="shapesystem.php?admin=news&edit=add">News hinzufügen</a></td>
      </tr>
    </table>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="left" valign="top"><?PHP echo $news_id ?>  <?PHP echo $news_nick ?>  <?PHP echo $news_titel ?></td>
      </tr>
    </table>
    news.php

    PHP-Code:
    $ausgeben mysql_query("SELECT id, news_id, poster_id, titel, nick FROM news_bereich JOIN benutzer ON poster_id = id");
    while(
    $news_u mysql_fetch_object($ausgeben))
    {

    $news_id $news_u->id;
    $news_nick $news_u->nick;
    $news_titel "<a href=\"shapesystem.php?admin=news&detail=news&id=".$news_u->news_id."\">".$news_u->titel."</a>";
    $a_content "/templates/news.tpl";

    Wenn ich ein Punkt
    PHP-Code:
    $a_content .= "/templates/news.tpl"
    davor setze wie ich das sonst immer gemacht habe, bekomme ich einen Fehler. Was ja auch Logisch ist, weil er ganz oft versucht sie zu includen. Meine Frage wie löse ich das am besten. Oder sollte ich vllt doch auf eine Template Klasse setzen? und wenn ja welche?

    PHP ist ja schon eine Template Klasse, nur weiß ich wohl noch nicht wie ich sie am besten einsätze.

    Danke im voraus,

    Shapie
    What You See Is What You Get“


  • #2
    Wenn ich ein Punkt davor setze wie ich das sonst immer gemacht habe
    Da hast Du aber Inhalte verknüpft, nicht Pfade! Das ist inhaltlich etwas ganz anderes.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Zitat von Shapehead Beitrag anzeigen
      Was ja auch Logisch ist, weil er ganz oft versucht sie zu includen.
      Bitte keine grundlosen Vermutungen anstellen, wenn du keine Ahnung hast, damit ist niemandem geholfen.

      Eine Lösung für dein Problem könnte so aussehen:

      PHP-Code:
      // in news.php
      ob_start();
      include 
      "/templates/news.tpl";
      $a_content .= ob_end_clean(); 
      PHP-Code:
      in index.tpl
      <td align="left" valign="top"><?PHP echo $a_content?></td>
      Hierbei wird die Ausgabe durch die inkludierte news.tpl mittels Ausgabepuffer in $a_content gespeichert.

      Zu deiner allgemeinern Frage: Template Engines mit eigener Syntax wie Smarty sind eigentlich unnötiger Ballast, prinzipiell machst du also nichts verkehrt wenn du Templates in der Form schreibst. Scheue dich auch nicht, Schleifen darin zu benutzen, solange sie nur zur Ausgabe von bereitgestellten Daten dienen und keine Verarbeitungslogik mehr enthalten.

      Das kann dann so aussehen:

      PHP-Code:
      <?PHP foreach($newsEntries as $newsEntry): ?>
      <table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td align="left" valign="top"><a href="shapesystem.php?admin=news&edit=add">News hinzufügen</a></td>
        </tr>
      </table>
      <table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td align="left" valign="top"><?PHP echo $newsEntry['id'?>  <?PHP echo $newsEntry['nick'?>  <?PHP echo $newsEntry['titel'?></td>
        </tr>
      </table>
      <?php endforeach;?>
      Achtung, das soll keine fertige Lösung sein sondern nur ein Denkanstoß!
      @fschmengler - @fschmengler - @schmengler
      PHP Blog - Magento Entwicklung - CSS Ribbon Generator

      Kommentar


      • #4
        Zitat von fab Beitrag anzeigen
        PHP-Code:
        // in news.php
        ob_start();
        include 
        "/templates/news.tpl";
        $a_content .= ob_end_clean(); 
        PHP-Code:
        in index.tpl
        <td align="left" valign="top"><?PHP echo $a_content?></td>
        Hierbei wird die Ausgabe durch die inkludierte news.tpl mittels Ausgabepuffer in $a_content gespeichert.
        Könntest du mir dazu ein funktionierendes Beispiel geben?
        Verstehe die Lösung nicht ganz..

        Danke
        What You See Is What You Get“

        Kommentar


        • #5
          Das funktioniert exakt so in deinem Code wenn du damit die entsprechenden Zeilen ersetzt (mein letzter Satz bezog sich auf den anderen Ansatz). Was genau daran verstehst du nicht?
          @fschmengler - @fschmengler - @schmengler
          PHP Blog - Magento Entwicklung - CSS Ribbon Generator

          Kommentar


          • #6
            Zitat von fab Beitrag anzeigen
            Das funktioniert exakt so in deinem Code wenn du damit die entsprechenden Zeilen ersetzt (mein letzter Satz bezog sich auf den anderen Ansatz). Was genau daran verstehst du nicht?
            PHP-Code:
            ob_start();
            include 
            "/templates/news.tpl";
            $a_content .= ob_end_clean(); 
            wenn ich das so ersetze gibt er mir ne 1 aus
            What You See Is What You Get“

            Kommentar


            • #7
              Zitat von Shapehead Beitrag anzeigen
              wenn ich das so ersetze gibt er mir ne 1 aus
              Gut - dann war der Aufruf von ob_end_clean also erfolgreich, denn wie du inzwischen sicher im Handbuch nachgelesen hast, liefert die Funktion nur einen boole'schen Rückgabewert.

              Und die Funktion, mit der man an den Inhalt des Ausgabepuffers rankommt, die findest du dort auch beschrieben.

              Kommentar


              • #8
                Zitat von ChrisB Beitrag anzeigen
                Gut - dann war der Aufruf von ob_end_clean also erfolgreich, denn wie du inzwischen sicher im Handbuch nachgelesen hast, liefert die Funktion nur einen boole'schen Rückgabewert.

                Und die Funktion, mit der man an den Inhalt des Ausgabepuffers rankommt, die findest du dort auch beschrieben.
                Jap das habe ich noch gelesen und zwar mit:

                PHP-Code:
                obj_get_contents 
                mal mit meinem Quelltext:

                PHP-Code:
                <?PHP
                ob_start
                ();
                $ok = include "/templates/willkommencenter.tpl";
                $a_content .= ob_get_contents();
                ?>
                nur jetzt gibt er mir den wert oben aus und einmal in meiner content variabel?
                What You See Is What You Get“

                Kommentar


                • #9
                  Zitat von Shapehead Beitrag anzeigen
                  Jap das habe ich nach gelesen und zwar mit:
                  PHP-Code:
                  obj_get_contents(); 
                  mal mit meinem Quelltext:

                  PHP-Code:
                  <?PHP
                  ob_start
                  ();
                  $ok = include "/templates/willkommencenter.tpl";
                  $a_content .= ob_get_contents();
                  ?>
                  nur jetzt gibt er mir den wert oben aus und einmal in meiner content variabel?
                  What You See Is What You Get“

                  Kommentar


                  • #10
                    Zitat von Shapehead Beitrag anzeigen
                    nur jetzt gibt er mir den wert oben aus und einmal in meiner content variabel?
                    Natürlich, weil du ja jetzt den Ausgabepuffer nicht mehr löschst ...

                    Kriegst du es jetzt vielleicht hin, beide Funktionen in sinnvoller Reihenfolge nacheinander aufzurufen, oder erfordert das erst eine weitere Frage-Antwort-Runde?

                    (Vielleicht findest du im Manual ja sogar die Funktion, die explizit beides in einem macht? Wir warten gespannt ...)

                    Kommentar


                    • #11
                      Zitat von ChrisB Beitrag anzeigen
                      Natürlich, weil du ja jetzt den Ausgabepuffer nicht mehr löschst ...

                      Kriegst du es jetzt vielleicht hin, beide Funktionen in sinnvoller Reihenfolge nacheinander aufzurufen, oder erfordert das erst eine weitere Frage-Antwort-Runde?

                      (Vielleicht findest du im Manual ja sogar die Funktion, die explizit beides in einem macht? Wir warten gespannt ...)
                      habs hinbekommen.. danke für deine hilfe

                      einfach und der variabel den wert wieder löschen mit:

                      PHP-Code:
                      ob_end_clean(); 
                      What You See Is What You Get“

                      Kommentar


                      • #12
                        Ein frage hätte ich noch wenn ich einen wert nicht verdoppeln möchte z.B.
                        PHP-Code:
                        $link "<a href=\"shapesystem.php?admin=news&edit=add\">News hinzufügen</a>"
                        er soll nur einmal vorkommen..
                        kann ich das denn parametern irgendwie klar machen?
                        What You See Is What You Get“

                        Kommentar


                        • #13
                          Okay, ich hatte einen Fehler eingebaut um dich zu testen

                          Wer soll wo nur einmal vorkommen?
                          @fschmengler - @fschmengler - @schmengler
                          PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                          Kommentar

                          Lädt...
                          X