Bastian: Seitenelement auslagern

Betr.: http://forum.de.selfhtml.org/archiv/2006/10/t138972/#m902729

Sorry, ich war ein paar Tage weg und jetzt ist der thread ins Archiv gerückt und ich weiß nicht, wie ich dort antworten soll. Deshalb hier eine Neuauflage:
Also, das mit PHP klingt schon mal gut und mit <?php readfile("include/datei.inc"); ?> klappt die Darstellung auch prima. Aber nun der zweite Schritt: Ich möchte an der Stelle, an der nun "datei.inc" geladen wird, ja unterschiedliche includes per Link laden können. Geht das, wie muss der Code dann lauten und wie muss der Aufruf im Link aussehen? Geht das wie bei JS über eine ID? Ich kenne mich bei PHP leider nicht sehr gut aus!
Danke für Eure Hilfe!

  1. Also, das mit PHP klingt schon mal gut und mit <?php readfile("include/datei.inc"); ?> klappt die Darstellung auch prima. Aber nun der zweite Schritt: Ich möchte an der Stelle, an der nun "datei.inc" geladen wird, ja unterschiedliche includes per Link laden können. Geht das, wie muss der Code dann lauten und wie muss der Aufruf im Link aussehen? Geht das wie bei JS über eine ID? Ich kenne mich bei PHP leider nicht sehr gut aus!

    Hi,

    wenn ich dich richtig verstehe, dann willst du per Link Variablen übergeben die den Include Befehl beeinflussen?

    <?
    include("$site.php");
    ?>

    Link:
    index.php?site=meineseite

    (natürlich site ohne ".php")

    Gruß Matt

    1. echo $begrüßung;

      <?
      include("$site.php");
      ?>

      Link:
      index.php?site=meineseite

      Diese Vorgehensweise ist eine Sicherheitslücke, wenn allow_url_fopen aktiviert ist, was die Standardeinstellung ist. Wenn index.php?site=http://example.org/irgendwas aufgerufen wird, wird das was von http://example.org/irgendwas.php ausgeliefert wird geladen und ausgeführt.

      Besser ist es, den übergebenen Parameter gegen eine Liste der erlaubten Werte zu prüfen und ansonsten einen Default-Wert zu verwenden.

      echo "$verabschiedung $name";

    2. Danke für die schnelle Reaktion. Irgendwie ist meine Antwort nicht übernommen worden, egal, hier nochmal:

      wenn ich dich richtig verstehe, dann willst du per Link Variablen übergeben die den Include Befehl beeinflussen?

      Ja, darum geht es. Meine ursprüngliche Idee war ja, per JS in ein absolutes div von unterschiedlichen Links unterschiedliche Texte laden zu können. Da zu den Texten auch Bilder gehören und ich die Infos auch in andere Seiten laden möchte, wird das sehr, sehr aufwendig und es scheint, als ob das mit PHP leichter geht. Ich kenn mich nur leider in PHP kaum aus. Deshalb ist mir dein Tipp auch ein bisschen zu schnell:

      <?
      include("$site.php");
      ?>

      Was genau verbirgt sich hinter "site.php"?

      Link:
      index.php?site=meineseite

      (natürlich site ohne ".php")

      Auch hier nochmal etwas langsamer: Ich möchte, das mit dem "LinkA" die Datei "LinkA.inc" in eine Tabellenzelle oder ein div geladen wird. Mit "LinkB" soll die Datei "LinkB.inc" an die selbe Stelle geladen werden können usw.

      Dazu müsste doch der Ladeort genauer gekennzeichnet sein und die Links sich unterscheiden, oder?

      Danke für die Hilfe,
      Bastian

  2. hi,

    Ich möchte an der Stelle, an der nun "datei.inc" geladen wird, ja unterschiedliche includes per Link laden können. Geht das, wie muss der Code dann lauten und wie muss der Aufruf im Link aussehen?

    http://tut.php-q.net/frames.html

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hi, vielleicht hilft dir:

    http://forum.de.selfhtml.org/archiv/2006/10/t138972/#m902729

    lG & viel Eroflg,
    Jonny5

  4. Hallo, liebe Leute,
    danke für Eure Rückmeldungen! Ich habe sie mir alle sehr gründlich angeschaut (auch die angegebenen Links), als mehr oder minder php-Laie ist es allerdings nicht so ganz einfach durchzublicken. Deshalb hier nochmal der Weg, soweit ich ihn verstanden und ausprobiert habe:
    Ich habe die unterschiedlichen Dateien als inc-Dateien in einem Ordner "include" abgespeichert und dann ein Array erstellt, dass die Dateien nach folgendem Muster zusammenfasst:
    <?php
    $dateien['ersteseite'] = "aaaa.inc";
    $dateien['zweiteseite'] = "bbbb.inc";
    usw.
    ...?>
    Das Array habe ich unter "inc-Config.php" - der Einfachheit halber - ebenfalls im include-Ordner abgespeichert.

    In der eigentlichen Seite (seite.php) habe ich dann einen div-Container angelegt und ihm eine id gegeben.

    Probleme gab es nun mit der Einbindung (<? php include ( "include/inc_config.php" ); ?>) der Datei "inc-config.php". Egal, wo ich sie eingebunden habe, ich bekam immer eine Fehlermeldung.
    Deshalb nun zwei Fragen:
    1. Wie und wo muss ich die Datei einbinden?
    2. Wie müssen die Links lauten, die das Array auslesen und die entsprechende inc-Datei an das div ausgeben?

    Wäre euch sehr dankbar, wenn ihr mir da nochmal helfen könntet!
    Gruß Bastian

    1. Hallo Bastian.

      Probleme gab es nun mit der Einbindung (<? php include ( "include/inc_config.php" ); ?>) der Datei "inc-config.php". Egal, wo ich sie eingebunden habe, ich bekam immer eine Fehlermeldung.

      ... welche du uns natürlich unbedingt vorenthalten musst, da Fehlermeldungen ja bekanntlich keinerlei Relevanz beim Debugging haben. </sarkasmus>

      In obigem Codeschnipsel hast du eine undeklarierte Konstante notiert, was zwangsläufig zu einer Fehlermeldung führen muss.

      Einen schönen Mittwoch noch.

      Gruß, Mathias

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      debian/rules
      1. Hallo Mathias,

        ... welche du uns natürlich unbedingt vorenthalten musst, da Fehlermeldungen ja bekanntlich keinerlei Relevanz beim Debugging haben. </sarkasmus>

        OK, sorry, hier ist sie:
        "Parse error: parse error, unexpected T_INCLUDE"

        In obigem Codeschnipsel hast du eine undeklarierte Konstante notiert, was zwangsläufig zu einer Fehlermeldung führen muss.

        Wie wäre es denn richtig?

        Gruß Bastian

        1. Hallo Bastian.

          ... welche du uns natürlich unbedingt vorenthalten musst, da Fehlermeldungen ja bekanntlich keinerlei Relevanz beim Debugging haben. </sarkasmus>

          OK, sorry, hier ist sie:
          "Parse error: parse error, unexpected T_INCLUDE"

          Hier wird dir also mehr oder weniger unmissverständlich mitgeteilt, dass PHP hier kein include-Kommando erwartet hat.

          In obigem Codeschnipsel hast du eine undeklarierte Konstante notiert, was zwangsläufig zu einer Fehlermeldung führen muss.

          Wie wäre es denn richtig?

          <? php include ( "include/inc_config.php" ); ?>

          ^
               Eliminiere dieses Leerzeichen.

          Einen schönen Mittwoch noch.

          Gruß, Mathias

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          debian/rules
          1. Hallo Mathias,
            danke für die prompte Reaktion! »» »» <? php include ( "include/inc_config.php" ); ?>

            ^
                 Eliminiere dieses Leerzeichen.

            Wenn ich das richtig verstanden habe, dann geht es um das Leerzeichen zwischen "?" und "php"!? Hab ich entfernt. Jetzt wird zwar wenigstens die Seite geladen, aber auf der erscheint dann diese Fehlermeldung:
            "Parse error: parse error, unexpected '.' "

            Gruß Bastian

            1. Hallo Bastian.

              Jetzt wird zwar wenigstens die Seite geladen, aber auf der erscheint dann diese Fehlermeldung:
              "Parse error: parse error, unexpected '.' "

              Ein solcher Fehler kann bei dem von dir geposteten Codeschnipsel unmöglich erscheinen. Poste bitte den *gesamten* *relevanten* Code. Die Fehlermeldung deutet darauf hin, dass du vermutlich eine Zeichenkette nicht geöffnet, aber darin Punkte verwendet hast.

              (Normalerweise erhältst du auch eine Zeilennummer, schaue also auch dort nach.)

              Einen schönen Mittwoch noch.

              Gruß, Mathias

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              debian/rules
              1. Hallo Mathias,

                Ein solcher Fehler kann bei dem von dir geposteten Codeschnipsel unmöglich erscheinen. Poste bitte den *gesamten* *relevanten* Code. Die Fehlermeldung deutet darauf hin, dass du vermutlich eine Zeichenkette nicht geöffnet, aber darin Punkte verwendet hast.

                Vielmehr php-Code steht in der Datei nicht: <?php include ( "include/inc_config.php" ); ?>

                Kann es sein, dass es daran liegt, wo der Code steht?

                (Normalerweise erhältst du auch eine Zeilennummer, schaue also auch dort nach.)

                Die Zeilennummer verweist genau auf den o.a. Code!

                Oder kann der Fehler auch in der referenzierten Datei "inc_config.php" liegen?

                Gruß Bastian

                1. hi,

                  Vielmehr php-Code steht in der Datei nicht: <?php include ( "include/inc_config.php" ); ?>

                  Kann es sein, dass es daran liegt, wo der Code steht?

                  Ja was denn jetzt? Steht in der Datei "nicht viel mehr" als das - oder doch?

                  Oder kann der Fehler auch in der referenzierten Datei "inc_config.php" liegen?

                  Die Fehlermeldung weißt dich explizit darauf hin, in welcher Datei der Fehler auftritt.

                  gruß,
                  wahsaga

                  --
                  /voodoo.css:
                  #GeorgeWBush { position:absolute; bottom:-6ft; }
                  1. Hallo Mathias

                    Ja was denn jetzt? Steht in der Datei "nicht viel mehr" als das - oder doch?

                    Der Rest ist jede Menge normaler html-Code. Ist der wichtig?

                    Gruß Bastian

                2. Hallo zusammen,
                  der Fehler hat sich geklärt!

                  Oder kann der Fehler auch in der referenzierten Datei "inc_config.php" liegen?

                  Er lag tatsächlich in dieser Datei (Sorry, hab ich beim ersten lesen der Fehlermeldung übersehen!), jetzt klappt die Einbindung.
                  Mir fehlt also jetzt nur noch der Code für die Links:
                  Wie müssen die aussehen, damit die inc-Dateien (in dem Array in "inc_config.php" zusammengefasst) in das div geladen werden?
                  Hier nochmal das Array-Muster:
                  <?php
                  $dateien['seiteeins'] = "aaaa.inc";
                  $dateien['seitezwei'] = "bbbb.inc";
                  $dateien['seitedrei'] = "cccc.inc";
                  ?>

                  Kann mir da nochmal jemand weiterhelfen?
                  Gruß Bastian

                  1. hi,

                    Mir fehlt also jetzt nur noch der Code für die Links:
                    Wie müssen die aussehen, damit die inc-Dateien (in dem Array in "inc_config.php" zusammengefasst) in das div geladen werden?

                    Lies es noch mal nach.

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Hi wahsaga,

                      Lies es noch mal nach.

                      ich hab mir die gelinkte Seite nochmal durchgelesen und versucht, das Ganze nachzubauen.
                      Mein Link sieht jetzt so aus:
                      <a href="include/inhalt.php?section=aa">

                      Die Datei "inhalt.php" entspricht genau den Angaben auf der Seite und ist im include-Ordner abgelegt.

                      Nun bekomme ich folgende Fehlermeldung:
                      Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/local/lib/php') in /include/inhalt.php on line 5

                      Was hab ich falsch gemacht?
                      Gruß Bastian

                      1. hi,

                        Mein Link sieht jetzt so aus:
                        <a href="include/inhalt.php?section=aa">

                        Gut, und wie versuchst du diesen Wert in deinem Script in Empfang zu nehmen?

                        Nun bekomme ich folgende Fehlermeldung:
                        Warning: main(): Failed opening '' for inclusion

                        '' sagt doch schon alles - die Variable, die du hinter include angegeben hast, enthält nichts.

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. Hi

                          '' sagt doch schon alles - die Variable, die du hinter include angegeben hast, enthält nichts.

                          Mir sagt es leider gar nix! Könntest du mir das erklären?
                          Gruß Bastian

                        2. Hi, ich versuch es nochmal, weil ich einfach nicht weiter komme:

                          Gut, und wie versuchst du diesen Wert in deinem Script in Empfang zu nehmen?

                          Ich hab keine Ahnung, deshalb ja meine Bitte mir zu sagen, wie der Link aussehen muss!

                          '' sagt doch schon alles - die Variable, die du hinter include angegeben hast, enthält nichts.

                          Glaub ich gerne, dass es Dir etwas sagt: Du verstehst offensichtlich einiges von php, ich bin Laie. Mir sagt es leider gar nichts. Ich hab den Code nach dem vorgeschlagenen Link nachgebaut. Vielleicht kann mir doch jemand weiterhelfen!?

                          Gruß Bastian

                          1. Vielleicht kann mir doch jemand weiterhelfen!?

                            Hi, zitiere http://forum.de.selfhtml.org/archiv/2006/9/t137793/#m895044

                            ---------------------
                            Du schreibst in deinen html-quellcode z.b. einen Link
                            <a href="<?echo $_SERVER['PHP_SELF']; # aktuelles script ausführn ?>?selectid=1">zum gästebuch</a>

                            Wird das Script nun per Klick auf den Link ausgeführt, dann übergibst du im Querystring (ab ? im Link / bzw Teil nach url) den Wert 1 unter  Variablennamen selectid per Methode get (Link wird per get übergeben, Formulare wählst du get oder post).

                            Mit php kannst du dann ($ kennzeichnet Beginn einer Variable in php) $_GET['selectid'] weiter verarbeiten bzw darauf reagieren und den gewünschten content per include einbinden. Wir wollen aber auch sicher gehn, dass selectid auch wirklich übergeben wurde (per isset):

                            if(isset($_GET['selectid'])&&($_GET['selectid']==1)){
                              include "guestbook.inc.php";
                            }

                            deutsch: wenn die variable selectid übergeben wird und Inhalt der Variable 1 entspricht, binde gästebuch in die Seite ein. Bleibt natürlich dir überlassen, ob du 1,2,3 oder a,b,c, strings oder sonstwas verarbeitest.

                            Würde man auf unterschiedliche selectids reagieren wollen, dann könnte man das wohl per switch-anweisung eleganter / kompakter:

                            if(isset($_GET['selectid'])){
                              switch($_GET['selectid']){
                                case 1: include "guestbook.inc.php"; break;
                                case 2: include "aboutus.inc.php"; break;
                                .
                                .
                                .
                                default: break;
                              }
                            }

                            ---------------------
                            hoffe, es hilft & herzliche Grüsse,
                            Jonny5

                            1. z.b. einen Link

                              <a href="<?echo $_SERVER['PHP_SELF']; # aktuelles script ausführn ?>?selectid=1">zum gästebuch</a>

                              das ist alles ungetestet. kommentar wegmachen, z.b. so:
                              <a href="meinscript.php?selectid=1">link1</a>

                              bekommst dann in array $_GET (weil du ja per link also per get übergibst) die variable und kannst sie verarbeiten als $_GET['selectid'].

                              Könntest du dann eben switchen, wie vorher beschrieben.

                              lg, Jonny5

                              1. Hallo Johnny5,
                                lieb, dass du dich nochmal gemeldet hast. So langsam bin ich nämlich am verzweifeln. (Ich seh schon, dass ich sehr viel mehr über PHP wissen müsste, hab auch ein dickes Buch drüber, aber damit komme ich nicht so richtig voran.) Im Moment kriege ich die unterschiedlichen Rückmeldungen nicht so richtig zusammen, deshalb von mir nochmal der Stand der Dinge:
                                Ich habe 10 Dateien ("include/aa.inc", "include/bb.inc" usw.). Diese 10 Dateien habe ich in einem array zusammengefasst, das so aussieht:
                                <?php
                                $dateien['1'] = "aa.inc";
                                $dateien['2'] = "bb.inc";
                                usw.
                                ?>
                                Dieses array ist in der Datei "include/inc_config.php" gespeichert, und mit <?php include ( "include/inc_config.php" ); ?> in die Seite "index.php" eingebunden.

                                Außerdem gibt es folgendes skript:
                                <?php
                                if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
                                include $dateien[$_GET['section']];
                                } else {
                                include $dateien['1'];
                                }
                                ?>

                                Dieses skript steht in der Datei "include/array.php" und ist mit
                                <div><?php include ( "include/ports.php" ); ?></div> in die Seite "index.php" eingebunden.

                                Wenn ich nun von "index.php" einen Link nach dem Muster <a href="include/ports.php?section=1">Link1</a> aufrufe, bekomme ich folgende Fehlermeldung, mit der ich nur so viel anfangen kann, dass entweder in der in der Datei "array.php" etwas nicht stimmt, oder im Bezug des Links zur Datei. Hier die Fehlermeldung:
                                "Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/local/lib/php') in /include/arrey.php on line 5"

                                In line 5 steht: "include $dateien['1'];"

                                Wo also liegt der Fehler? Wie muss "arrey.php" richtig aussehen, bzw. der Link? Oder ist der bisher beschrittene Weg falsch?
                                Kann es sein, dass der Weg, den Du vorschlägst, ein ganz anderer ist? Ich blick es einfach nicht mehr!

                                Viele liebe Grüße Bastian

                                1. Hi Bastian,

                                  Ich habe 10 Dateien ("include/aa.inc", "include/bb.inc" usw.). Diese 10 Dateien habe ich in einem array zusammengefasst, das so aussieht:
                                  <?php
                                  $dateien['1'] = "aa.inc";
                                  $dateien['2'] = "bb.inc";
                                  usw.
                                  ?>

                                  warum versuchen ein assoziatives Array zu erstellen? Verwende doch einfach ein numerisch indiziertes ($dateien[1],$dateien[2],..) ausser du möchtest dann irgendwelche strings als indizes verwenden.

                                  $dateien=array();
                                  $dateien[1]="aa.inc";
                                  $dateien[2]="bb.inc";
                                  .
                                  .
                                  .

                                  Dieses array ist in der Datei "include/inc_config.php" gespeichert, und mit <?php include ( "include/inc_config.php" ); ?> in die Seite "index.php" eingebunden.

                                  schreib zur fehlersuche mal die relevanten teile in ein script.
                                  würde nachher z.b. index.php (Hauptseite) ins wurzel- bzw stammverzeichnis legen und inlcudes in Verzeichnis include/ oder inc/

                                  z.b. Struktur
                                  index.php
                                  inc/config/config_sites.inc.php (das array)
                                  inc/sites/site_1.inc.php
                                  inc/sites/site_2.inc.php

                                  bedenken: parser sieht pfade aus perspektive des ablaufenden scripts. wenn z.b. site_1.inc.php (included in index.php) wieder includepath enthält, dann wieder von stammverzeichnis ausgehen. (z.b. inc/...)

                                  Außerdem gibt es folgendes skript:
                                  <?php
                                  if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
                                  include $dateien[$_GET['section']];
                                  } else {
                                  include $dateien['1'];
                                  }
                                  ?>

                                  Dieses skript steht in der Datei "include/array.php" und ist mit
                                  <div><?php include ( "include/ports.php" ); ?></div> in die Seite "index.php" eingebunden.

                                  Wieso nicht einfach an dieser Stelle den obigen Code so reinschreiben? Es sollte übersichtlich bleiben und es ist ja keine Anweisung, an der du oft etwas ändern wirst. An dieser Stelle möchtest du die Datei, (wenn isset, wie oben) die in deinem Array als Index den Wert der übergebenen section hat, einbinden.

                                  Wenn ich nun von "index.php" einen Link nach dem Muster <a href="include/ports.php?section=1">Link1</a> aufrufe,

                                  Schreib die Links so rein:
                                  <a href="<?php echo $_SERVER['PHP_SELF'];?>?section=1">Link1</a>
                                  damit rufst du das aktuelle script (deine Hauptseite) auf und übergibst die Variable an eben dieses Script zur Verarbeitung.
                                  oder:
                                  <a href="index.php?section=1">Link1</a>
                                  die anderen includes bindest du ja auch in deine index.php ein, also ist dies das übergordnete Script, das abläuft.

                                  bekomme ich folgende Fehlermeldung, mit der ich nur so viel anfangen kann, dass entweder in der in der Datei "array.php" etwas nicht stimmt, oder im Bezug des Links zur Datei.
                                  Hier die Fehlermeldung:
                                  "Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/local/lib/php') in /include/arrey.php on line 5"

                                  Das deutet eher darauf hin, dass die Pfade in der php.ini nicht korrekt gesetzt sind. Am Scriptanfang gegebenfalls setzen (gilt während scriptablauf):

                                  <?php ini_set("include_path", "my_root_dir");?>
                                  http://www.modwest.com/help/kb5-98.html
                                  http://at.php.net/manual/de/ini.core.php#ini.include-path

                                  viel Erfolg, Jonny5

                                  1. Hallo Johnny5, danke für die schnelle Reaktion!

                                    warum versuchen ein assoziatives Array zu erstellen? Verwende doch einfach ein numerisch indiziertes ($dateien[1],$dateien[2],..) ausser du möchtest dann irgendwelche strings als indizes verwenden.

                                    $dateien=array();
                                    $dateien[1]="aa.inc";
                                    $dateien[2]="bb.inc";

                                    OK, ich hab das array entsprechend abgeändert

                                    schreib zur fehlersuche mal die relevanten teile in ein script.

                                    Ich weiß nicht so genau, was Du damit meinst.

                                    würde nachher z.b. index.php (Hauptseite) ins wurzel- bzw stammverzeichnis legen und inlcudes in Verzeichnis include/ oder inc/

                                    So hab ichs ja: index.php liegt im Stammverzeichnis, inc_config.php im include-Ordner.

                                    Wieso nicht einfach an dieser Stelle den obigen Code so reinschreiben? Es sollte übersichtlich bleiben und es ist ja keine Anweisung, an der du oft etwas ändern wirst. An dieser Stelle möchtest du die Datei, (wenn isset, wie oben) die in deinem Array als Index den Wert der übergebenen section hat, einbinden.

                                    Was meinst du mit obigen Code? Das Array? Hab ich ausprobiert, bzw. an der Stelle inc-config.php eingebunden...

                                    Schreib die Links so rein:
                                    <a href="<?php echo $_SERVER['PHP_SELF'];?>?section=1">Link1</a>
                                    damit rufst du das aktuelle script (deine Hauptseite) auf und übergibst die Variable an eben dieses Script zur Verarbeitung.
                                    oder:
                                    <a href="index.php?section=1">Link1</a>
                                    die anderen includes bindest du ja auch in deine index.php ein, also ist dies das übergordnete Script, das abläuft.

                                    ... im ersten Fall wird nur die index.php neu geladen, ohne das sonst irgend etwas passiert, im zweiten Fall kriege ich die Fehlermeldung: die Seite wurde nicht gefunden.

                                    Das deutet eher darauf hin, dass die Pfade in der php.ini nicht korrekt gesetzt sind. Am Scriptanfang gegebenfalls setzen (gilt während scriptablauf):

                                    <?php ini_set("include_path", "my_root_dir");?>
                                    http://www.modwest.com/help/kb5-98.html
                                    http://at.php.net/manual/de/ini.core.php#ini.include-path

                                    Auf die php.ini habe ich leider keinen Zugriff, die ist Sache meines Providers!

                                    Viele Grüße Bastian

                                    1. Hi Bastian,

                                      Was meinst du mit obigen Code? Das Array? Hab ich ausprobiert, bzw. an der Stelle inc-config.php eingebunden...

                                      meinte dieses stück:

                                      <?php
                                      if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
                                      include $dateien[$_GET['section']];
                                      } else {
                                      include $dateien['1'];
                                      }
                                      ?>

                                      <?php ini_set("include_path", "my_root_dir");?>
                                      Auf die php.ini habe ich leider keinen Zugriff, die ist Sache meines Providers...

                                      Datei wird ja nicht verändert, gilt nur für das aktuelle script, wenn dus oben reinschreibst. Nochmal zum Fehler:

                                      Warning: main(): Failed opening '' for inclusion
                                      (include_path='.:/usr/local/lib/php') in /include/arrey.php on line 5

                                      Wird denn sonst korrekt included?

                                      ... failed opening ''... ? Da fehlt also der pfad. Hast du das Array auch am Scriptanfang einbunden?

                                      Fehler finden:
                                      Schreibst du vor include $dateien...:
                                      var_dump($dateien[$_GET['section']]);
                                      was dir wohl bestätigen wird, dass da nix drinsteht (NULL?).

                                      Das Array muss vor der verarbeitungsschleife initialisiert worden sein.

                                      viel Erfolg, Jonny 5

                                      1. Hallo Johnny5,
                                        die Mühe hat sich gelohnt: es funktioniert! Tausend Dank, mir fällt wirklich ein Stein vom Herzen!

                                        meinte dieses stück:

                                        <?php
                                        if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
                                        include $dateien[$_GET['section']];
                                        } else {
                                        include $dateien['1'];
                                        }
                                        ?>

                                        Ich habe das skript wieder in das div eingebunden, bei den Links hatte ich gestern wohl einen Tippfehler gemacht, deshalb die Meldung, die Seite sei nicht zu finden. Nachdem ich dann die berüchtigte Zeile 5 in
                                        "include $dateien[1];" abgeändert hatte, lief alles. Super!

                                        Vielen, vielen Dank und einen schönen Sonntag
                                        Bastian

                                      2. Hi nochmal,
                                        um das Ganze ein bisschen besser zu verstehen: Was ändert sich, wenn in dem array nicht verschiedene Dateien, sondern verschiedene Texte eingebunden sind, also so:

                                        <?php
                                        $text[a] = "&nbsp;";
                                        $text[b] = "Dies ist der erste Text";
                                        $text[c] = "Dies ist der zweite Text";
                                        usw.
                                        ?>

                                        Wie muss dann der Aufruf aussehen?

                                        Vielen Dank schon mal
                                        Bastian

                                        1. Hi,

                                          erstmal freut mich, dass jetzt alles klapt. Aller Anfang ist ja bekanntlich schwer :D

                                          Was ändert sich, wenn in dem array nicht verschiedene Dateien, sondern verschiedene Texte eingebunden sind, also so:

                                          <?php
                                          $text[a] = "&nbsp;";
                                          $text[b] = "Dies ist der erste Text";
                                          $text[c] = "Dies ist der zweite Text";
                                          usw.
                                          ?>

                                          Wie muss dann der Aufruf aussehen?

                                          Wenn du a, b, c usw als Indizes verwendest, dann wärs kein numerisch indiziertes Array mehr, dann $text['a'] oder $text["a"].

                                          Möchtest ja dann statt include datei wohl den Inhalt an der Stelle ausgeben. if isset wie gehabt und:

                                          <?php echo $text["a"]; ?> bzw
                                          <?php echo $text[$_GET["section"]]; ?>

                                          http://at.php.net/manual/de/function.echo.php
                                          http://at.php.net/manual/de/function.print.php
                                          http://at.php.net/manual/de/ref.strings.php

                                          viel Erfolg,
                                          Jonny5

                                          1. Hallo Johnny 5,
                                            vielen Dank für die Rückmeldung.

                                            Aller Anfang ist ja bekanntlich schwer :D

                                            Ja, das stimmt wirklich!

                                            Wenn du a, b, c usw als Indizes verwendest, dann wärs kein numerisch indiziertes Array mehr, dann $text['a'] oder $text["a"].

                                            Kapiert!

                                            if isset wie gehabt

                                            Ist das richtig, dass ich es entsprechend anpassen muss:

                                            <?php
                                            if(isset($_GET['section']) AND isset($text[$_GET['section']])) {
                                            include $text[$_GET['section']];
                                            } else {
                                            include $text['emp'];
                                            }
                                            ?>

                                            Da kriege ich aber ne Fehlermeldung:

                                            "Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/local/lib/php') in /head.php on line 5"

                                            So ganz nebenbei: Wie referenziere ich eigentlich in einer php-Seite einen Anker? Das aus html vertraute Schema (id="Anker" <a href="#Anker") scheint nicht zu funktionieren.

                                            Viele Grüße
                                            Bastian

                                            1. Hi Bastian,

                                              Ist das richtig, dass ich es entsprechend anpassen muss:

                                              <?php
                                              if(isset($_GET['section']) AND isset($text[$_GET['section']])) {
                                              include $text[$_GET['section']];
                                              } else {
                                              include $text['emp'];
                                              }
                                              ?>

                                              Lies doch nochmal mein letztes Posting. Du möchtest ja jetzt keine Datei includen, sondern den Inhalt des Arrays ausgeben. Siehe echo.

                                              So ganz nebenbei: Wie referenziere ich eigentlich in einer php-Seite einen Anker? Das aus html vertraute Schema (id="Anker" <a href="#Anker") scheint nicht zu funktionieren.

                                              Am besten nochmal Kapitel über Anker überfliegen (nicht id, sondern name="Anker):
                                              http://de.selfhtml.org/html/verweise/projektintern.htm#anker

                                              Es ist nach wie vor html(!) Die Anweisungen, die du per php in den Code packst werden vom Server übersetzt und generieren den gewünschten html-code für den Browser. Such dir ein Tutorial, das sich mit php bzw serverseitiger Programmierung befasst.

                                              Falls neues Thema, bitte neuen Thread starten.

                                              viel Erfolg weiterhin,
                                              Jonny5

                                              1. Hallo Johnny5

                                                Lies doch nochmal mein letztes Posting. Du möchtest ja jetzt keine Datei includen, sondern den Inhalt des Arrays ausgeben. Siehe echo.

                                                Baum! ja, hab's kapiert. Ist ja auch logisch (kapier selbst ich - beim zweiten hinsehen ;-) )

                                                Trotzdem habe ich noch ein Problem beim Link, wobei ich nicht weiß, ob es am Link selbst liegt, oder daran, dass aus einer include-Datei heraus referenziert wird, jedenfalls funktioniert er nicht.

                                                Am besten nochmal Kapitel über Anker überfliegen (nicht id, sondern name="Anker):
                                                http://de.selfhtml.org/html/verweise/projektintern.htm#anker

                                                Den Artikel kenn ich, empfiehlt beides!

                                                Gruß Bastian

                                                1. Hi,

                                                  Trotzdem habe ich noch ein Problem beim Link, wobei ich nicht weiß, ob es am Link selbst liegt, oder daran, dass aus einer include-Datei heraus referenziert wird, jedenfalls funktioniert er nicht.

                                                  Schau dir doch den Quelltext im Browser an. Dann siehst du, ob <a name="foo"... und <a href="#foo"... richtig drinstehn.

                                                  lG, Jonny5

                                        2. Hi again,

                                          mir ist noch einfallen: doublequotes in string nicht escapen vergessen

                                          z.b.:

                                          $text["a"]="<a name="foo">Anker</a>";

                                          oder verwend singlequotes:

                                          $text["a"]='<a name="foo">Anker</a>';

                                          lG, Jonny5