Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie der richtige include? *genauer beschrieben*

Einklappen

Neue Werbung 2019

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

  • Wie der richtige include? *genauer beschrieben*

    Hallo!

    Also ich habe den Code hier:
    Code:
    $m1 = "designs/$design/m1.tpl"; //Menü1 auslesen
    $m1 = implode("", file("$m1"));
    $m2 = "designs/$design/m2.tpl"; //Menü2 auslesen
    $m2 = implode("", file("$m2"));
    $m3 = "designs/$design/m3.tpl"; //Menü3 auslesen
    $m3 = implode("", file("$m3"));
    $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position";
    $res = mysql_query($sql); 
    while($asc = mysql_fetch_assoc($res)) 
    { 
    if ($asc['art'] == 1)  
    {  
    $eintrag .= "$m1";
    }
    elseif ($asc['art'] == 2)  
    {
    if ($asc['ziel'] == 1)
    {
    $eintrag .= "$m2";
    }
    elseif ($asc['ziel'] == 2)
    {
    $eintrag .= "$m3";
    }
    }
    }
    Die Variablen $m1 $m2 und $m3 sehen alle so aus(also das steht in den Dateien, die für die Variabelen ausgelesen werden):
    Code:
    <a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
    Mein Problem sind jetzt diese 3 Teile hier:
    Code:
    $eintrag .= "$m1"; $eintrag .= "$m2"; $eintrag .= "$m3";
    Vorher sah es bei allen 3 so aus:
    Code:
    $eintrag .= "<a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
    ";
    Und ich möchte jetzt den Teil zwischen den "" einfach aus der Variabele $m1 $m2 und $m3 holen.

    Mein Problem ist der Teil "$m1",.... egal, wie ich es versuche, ob "".$m1."" oder einfach $m1, es kommt immer folgendes raus:
    Code:
    <a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
    Also er holt sich nicht die Variablen von $asc, sondern speichert es einfach so, wie er es aus der Variable $m1 $m2 und $m3 bekommt.

    Also wie muss ich $m1 $m2 und $m3(ist ja alles von der Art dasselbe) richtig einsetzen, dass es läuft?

  • #2
    include ist der ganz falsche Weg. Include kannst du verwenden, um Dateien dem Script Verfügbar zu machen. Etwa wenn du in der zu includierenden Datei eine Funktion definiert hast, dann kannst du sie nach dem Include im Script benutzen.

    Was du willst ist eine Text Datei öffnen und den Inhalt einer Variablen zuweisen.

    DAs geht hiermit:

    file
    (PHP 3, PHP 4 , PHP 5)

    file -- Liest eine Datei komplett in ein Array


    weiteres findest du in der Hilfe

    Kommentar


    • #3
      Zitat von CC84
      include ist der ganz falsche Weg. Include kannst du verwenden, um Dateien dem Script Verfügbar zu machen. Etwa wenn du in der zu includierenden Datei eine Funktion definiert hast, dann kannst du sie nach dem Include im Script benutzen.

      Was du willst ist eine Text Datei öffnen und den Inhalt einer Variablen zuweisen.

      DAs geht hiermit:

      file
      (PHP 3, PHP 4 , PHP 5)

      file -- Liest eine Datei komplett in ein Array


      weiteres findest du in der Hilfe
      OK, also ich hab es jetzt mal ein bisschen genauer beschrieben. Denn das ist garnicht das Problem, sondern eben einfach das einsetzen der Variabele hinter $eintrag.

      Kommentar


      • #4
        Sorry ich werde aus deiner Beschreibung nicht schlau. Ich kapier gar nix... Was soll er denn aus ASC raus holen und was willst du da in der Variablen haben oder überhaupt??


        Mach doch mal bessere Beispiele in dem du unterschiedliche Sachen in die Variablen m1-3 packst.

        Kommentar


        • #5
          Zitat von CC84
          Sorry ich werde aus deiner Beschreibung nicht schlau. Ich kapier gar nix... Was soll er denn aus ASC raus holen und was willst du da in der Variablen haben oder überhaupt??


          Mach doch mal bessere Beispiele in dem du unterschiedliche Sachen in die Variablen m1-3 packst.
          OK, also das ganze noch einfacher:

          Code:
          $m1 = "designs/$design/m1.tpl"; //Menü1 auslesen 
          $m1 = implode("", file("$m1")); 
          $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position"; 
          $res = mysql_query($sql); 
          while($asc = mysql_fetch_assoc($res)) 
          { 
          $eintrag .= "$m1"; 
          }
          Die Datei "designs/$design/m1.tpl" sieht so aus:

          Code:
          <a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
          Vorher sah das ganze so aus:
          Code:
          $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position"; 
          $res = mysql_query($sql); 
          while($asc = mysql_fetch_assoc($res)) 
          { 
          $eintrag .= "<a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
          "; 
          }
          Und den Teil in der "" nach $eintrag möchte ich einfach aus der Datei laden, wei das immer unterschiedlich sein wird.

          Kommentar


          • #6
            Schmarn, erklär mal lieber was du grundsätzlich machen willst (und vor allem warum). Das sieht alles schon sehr wüst und sinnlos aus...

            Kommentar


            • #7
              Zitat von Zergling
              Schmarn, erklär mal lieber was du grundsätzlich machen willst (und vor allem warum). Das sieht alles schon sehr wüst und sinnlos aus...
              OK, also so war es vorher:

              Code:
              $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position"; 
              $res = mysql_query($sql); // Abfrage aller Einträge in der Datenbank
              while($asc = mysql_fetch_assoc($res)) 
              { 
              $eintrag .= "<a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
              "; // für jeden Eintrag in der Datenbank wird dieser Link erstellt und nachher an $eintrag drangehangen. Also entsteht in $eintrag im Prinzip ein Menü
              }
              Nachher speichere ich die Variabele $eintrag in einer Datei und hab damit ein Menü.

              Jetzt ist aber das Problem, dass sich dieser Teil hier ändern kann, also der ist nicht immer gleich:

              Code:
              <a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
              Deshalb habe ich jetzt mehrere Dateien in verschiedenen Ordner (Ordnername wird durch $design bestimmt), wo immer eine Datei drin ist. m1.tpl. In diesem Fall wäre m1.tpl folgendes:
              Code:
              <a href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
              Kann aber genauso mal so aussehen:

              Code:
              <a style="font-size:15px" href=\"index.php?page=".$asc['link']."\">".$asc['titel']."</a>
              oder komplett anders. Aus diesem Grund habe ich jetzt diese Version mir gemacht:

              Code:
              $m1 = "designs/$design/m1.tpl"; //festlegen des Pfades zur DAtei
              $m1 = implode("", file("$m1")); //auslesen der Datei und speichern in $m1
              $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position"; 
              $res = mysql_query($sql); //Auflisten aller Einträge
              while($asc = mysql_fetch_assoc($res)) 
              { 
              $eintrag .= ????? (was muss hier rein)
              }

              Kommentar


              • #8
                TPL steht für Template. In Templates haben serverseitige Skriptsprachen nichts zu suchen. Dafür benutzt man am besten Platzhalter.

                m1.tpl:
                Code:
                {TITEL}
                PHP
                Code:
                $tpl = file_get_contents("designs/$design/m1.tpl");
                $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position";
                $res = mysql_query($sql); //Auflisten aller Einträge 
                $eintrag = '';
                while($asc = mysql_fetch_assoc($res)) {
                  $eintrag .= str_replace(array('{LINK}','{TITEL}'), array($asc['link'],$asc['titel']), $tpl);
                }
                (sorry, php-Tags gehen nicht)

                So optimal find ich das ganze aber noch nicht. Setz doch je nach $design-Bedingung eine andere CSS-Klasse..

                Kommentar


                • #9
                  Oder mach das ganze direkt mit Templates:

                  http://smarty.php.net

                  Kommentar


                  • #10
                    Zitat von Zergling
                    TPL steht für Template. In Templates haben serverseitige Skriptsprachen nichts zu suchen. Dafür benutzt man am besten Platzhalter.

                    m1.tpl:
                    Code:
                    {TITEL}
                    PHP
                    Code:
                    $tpl = file_get_contents("designs/$design/m1.tpl");
                    $sql = "SELECT id,titel,art,link,ziel FROM pages where user = '$username' ORDER BY position";
                    $res = mysql_query($sql); //Auflisten aller Einträge 
                    $eintrag = '';
                    while($asc = mysql_fetch_assoc($res)) {
                      $eintrag .= str_replace(array('{LINK}','{TITEL}'), array($asc['link'],$asc['titel']), $tpl);
                    }
                    (sorry, php-Tags gehen nicht)

                    So optimal find ich das ganze aber noch nicht. Setz doch je nach $design-Bedingung eine andere CSS-Klasse..
                    Ja ich weiß, dass es nicht optimal ist, aber es geht nicht anders.

                    Aber danke für die Hilfe, jetzt geht es!

                    Kommentar

                    Lädt...
                    X