Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variable erst später definieren?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variable erst später definieren?

    Ich habe folgendes Problem:

    In einem includeten Seiteninhalt befindet sich jeweils die Variable $author, die in jedem Inhalt anders definiert ist. Es gibt z.B. 10 verschiedene Gedichte namens gedicht01...10.php und in 01 könnte die Variable $author mit = "Berthold Brecht"; belegt sein.

    Auf der Hauptseite nun ist die Abfrage in der Art, dass erst die Variable $author abgefragt wird und DANN der Inhalt der jeweiligen gedichtxx.php ... natürlich geht das nicht, weil die Variable erst nach der Abfrage definiert wird. Logisch.

    Kann man das denn irgendwie umgehen oder anders lösen?

    Nur zur Info: Ich kann es nicht anders herum machen, weil ein bisschen HTML-Code zwischen der $author-Abfrage und dem Gedicht steht, den ich ungern in die gedichtxx.php auslagern möchte.

  • #2
    Wie soll das gehen? Du kannst keine Variable benutzen, die nicht definiert ist. Rein logisch macht sowas auch keinen Sinn. Ich schätze mal, du hast einen grundlegenden Fehler in der Struktur deiner Scripte.

    Gruß
    phpfan

    Kommentar


    • #3
      Dann sag mir doch wie ich es korrigieren kann. Ich habe das Problem ja geschildert. Die Definition der Variable $author steckt in den jeweiligen includeten Dateien und die werden erst includet wenn <?php echo $author ?> abgefragt wurde. Wie gesagt, das Problem ist, dass dazwischen ein Stück HTML-Code kommt, das ich sonst in die includeten Dateien auslagern müsste - was nicht mein Ziel ist.

      Soweit klar?

      Kommentar


      • #4
        Um zu sagen, wie man das am besten lösen kann, muss man mehr Informationen haben bzw. das Script kennen. Mit anderen Worten, du musst selber mal nachdenken, was du ändern musst. Du kannst auf jeden Fall nur dann was anzeigen, wenn ein Author bekannt ist.

        Gruß
        phpfan

        Kommentar


        • #5
          Also ich versuche mal ein Beispiel zu schreiben...

          Das ist die index.php

          PHP-Code:
          <?php

          $titel 
          "carmina † gedichte";

              include 
          "../allgemein/header.php";  
              include 
          "menue.php";
              
          ?>
           [b]<font face="Verdana" size="1" color="#9B915D"><?php echo $autor ?></font>[/b]<font face="Verdana" size="1">[b]

                          [/b]<font color="#C5BA7A">Weltende</font></font></td>
                        </tr>
                        <tr>
                          <td valign="top" width="330" height="10" colspan="2">
                          </td>
                        </tr>
                        <tr>
                          <td width="330px" height="140px" valign="top" height="5">
                          <div  style="width: 330px; height: 140px; overflow: auto" id="inhalt" class="divklasse">
          <?php
          include('configcarmina.php');

          if(isset(
          $_GET['act']) AND isset($dateien[$_GET['act']]))
          {
          //Ist eine $_GET Variable vorhanden wird PHP angewiesen
          //zu prüfen ob die Datei existiert und diese dann zu laden

          if(!file_exists($dateien[$_GET['act']])) echo "Die Datei ist nicht vorhanden.";

          include 
          $dateien[$_GET['act']];
          }
          else
          {
          //Wenn keine Variable oder Definition vorhanden ist
          //lade die Fehlerseite bzw. die Indexseite
          include $dateien['carmina'];
          }
          ?>
          </div></td>
          <td style="width: 100px; height: 100px" valign="top" height="5">
                          </td>
                        </tr>
                                      </table>
                                      <?php
              
              
          include "../allgemein/footer.php";
              
          ?>
          Hier die configcarmina.php:

          PHP-Code:
          <?php
          //configcarmina.php

          $dateien = array(); //Erstellt einen neuen Array $dateien
          $dateien['carmina'] = "carmina.php"//für jede Section ein neue Variable
          $dateien['weltende'] = "weltende.php"//usw.
          ?>
          Und letztendlich (die header / footer spar ich mir jetzt mal) ein Gedicht, hier weltende.php:

          PHP-Code:
          <?php $autor "Else Lasker Schüler"?>
          [i]<font face="Verdana" size="1">

          HIER STEHT DAS GEDICHT VON ELSE LASKER SCHÜLER

          </font>[/i]
          So schaut das Ganze nun aus. Und ich komme leider nicht zu einer Lösung des Problems, weil mir die Idee fehlt wie ich das sonst machen könnte.

          Kommentar


          • #6
            Um zu wissen, wo du dran bist, muss das doch als erstes passieren:

            if(isset($_GET['act']) AND isset($dateien[$_GET['act']]))

            Gruß
            phpfan

            Kommentar


            • #7
              ach so und wie kann ich dann den HTML Code, der bisher davor steht in die IF-Funktion einfügen, so dass er nach der Zeile kommt, die du angesprochen hast?

              Also diesen?:

              Code:
               <font face="Verdana" size="1" color="#9B915D"><?php echo $autor ?></font><font face="Verdana" size="1">
              
                              <font color="#C5BA7A">Weltende</font></font></td>
                            </tr>
                            <tr>
                              <td valign="top" width="330" height="10" colspan="2">
                              </td>
                            </tr>
                            <tr>
                              <td width="330px" height="140px" valign="top" height="5">
                              <div  style="width: 330px; height: 140px; overflow: auto" id="inhalt" class="divklasse">

              Kommentar


              • #8
                So wie ich das sehe, solltest du den kompletten Aufbau neu überdenken, das ist von vorne bis hinten nicht gerade ideal.

                Und warum hast du 2x include('configcarmina.php'); ?

                Gruß
                phpfan

                Kommentar


                • #9
                  Zitat von phpfan
                  So wie ich das sehe, solltest du den kompletten Aufbau neu überdenken, das ist von vorne bis hinten nicht gerade ideal.
                  Ich bin ja auch PHP-Anfänger. Ich weiß allerdings wirklich nicht wie ich das anders machen soll, denn sonst hätte ich es bereits getan. Wenn du einen Vorschlag hast, äußere ihn.

                  Zitat von phpfan
                  Und warum hast du 2x include('configcarmina.php'); ?
                  Ups! Die erste ist tatsächlich überflüssig, hab ich gar nicht mehr gemerkt. Ist nun weg. Trotzdem bleibt der Rest beim Alten und das Problem wie gehabt. Tja...

                  Kommentar


                  • #10
                    Du hast kein Problem mit PHP, sondern einen Denkfehler in deinem Script. Das Denken werde ich dir aber nicht abnehmen, das solltest du schon alleine hinbekommen. Überlege, welche Information du mit $_GET['act'] bekommst, was du damit anfangen kannst und in welcher Reihenfolge du dann das Script schreiben musst. Und noch ein Tipp, überlege dir das ohne an der Tastatur zu sitzen, sondern benutze dazu wie in guten alten Zeiten ein Blatt Papier und einen Stift und zeichne einen möglichen Ablaufplan auf.

                    Gruß
                    phpfan

                    Kommentar


                    • #11
                      Also es sieht so aus:

                      Mit $_GET['act'] hole ich die jeweiligen Kategorien aus dem Array, das sind dann meine Gedichtseiten. So, in jeder dieser Gedichtseiten muss der Titel drin sein - und der ist über einer DIV. Ich würde eben gern den Teil bis zum Anfang der DIV in der index.php lassen aber das ist ja nicht möglich, weil mir durch die Variable, die vorher nicht definiert ist, sondern erst in den Gedichten, das Ganze zunichte gemacht wird. Die Idee ist gut, doch die Welt noch nicht bereit.

                      In diesem Sinne... bin ich weiterhin ratlos. Und wenn du eine Lösung weißt, wäre ich dir sehr verbunden, wenn du mir diese preisgibst. Wenn nicht, dann hat es auch keinen Sinn hier weiter zu diskutieren, denn wäre ich schon drauf gekommen was ich machen muss, würde ich sicher nicht so dumm fragen.

                      Kommentar

                      Lädt...
                      X