Peter L.: linkadresse mehrfach verwenden - wie?

hallo Forum,

habe folgendes anliegen:

in meiner site gibt es eine aufzählung von internen links, die an verschiedenen stellen immer wieder auftauchen. diese sind durchnummeriert. da ein einzelner verweis oft auftaucht, möchte ich sozusagen gern einen sammelpunkt, der die linkadresse enthält, auch wenn diese sich ändert.

also, z.b. verlinkung 1 kommt mehrmals vor, nur die datei kann sich ändern. um nicht nach allen verlinkungen mit der nummer 1 suchen zu müssen, stelle ich mir eine art von verzeichnis vor, in dem nur einmal eine änderung der adresse vorgenommen werden muss und im dokument nur der verweis auf link 1 auftaucht, der ja dann immer gleich bleibt.

meine idee wäre jetzt eine zeile php, die mit include auf eine textdatei verweist, in der der link notiert ist.

dazu 2 fragen:

1.
ist es in meinem php-ansatz ( ;-) ) möglich, aus einer einzelnen textdatei die ganzen links auszulesen oder brauch ich für jeden einzelnen link eine txt-datei?

2.
gibt es eine einfachere, andere, alternative idee??

vielen dank schon am frühen morgen

Peter L.

  1. Moin,

    eine ähnliche Idee hatte ich auch schon. Prinzipiell wäre das für alle möglichen Resourcen denkbar, z.B. auch für Grafiken, die ja auch oft mehrfach referenziert werden.

    Das ist mit PHP und einer einzigen Textdatei möglich. Allerdings wirst Du Probleme haben, solche "Includes" in einer einzigen PHP-Zeile zu lösen... Du brauchst eine Funktion, die Zeile für Zeile nach einer ID oder so parst und diese durch den eigentlichen Link ersetzt.

    Gruß,
    Danny

    1. hallo Danny,

      Prinzipiell wäre das für alle möglichen Resourcen denkbar, z.B. auch für Grafiken, die ja auch oft mehrfach referenziert werden.

      stimmt, man könnte das ganze noch weiter treiben. kann mir eigentlich nicht vorstellen, dass es dafür keine einfach lösung gibt. vielleicht mit xml? von wegen trennung von inhalt, form und nun könnte man eben auch noch alles eingebundene unterbringen.

      Das ist mit PHP und einer einzigen Textdatei möglich. Allerdings wirst Du Probleme haben, solche "Includes" in einer einzigen PHP-Zeile zu lösen... Du brauchst eine Funktion, die Zeile für Zeile nach einer ID oder so parst und diese durch den eigentlichen Link ersetzt.

      wahrscheinlich gehts nicht mit einer zeile, ich jedenfalls stelle mir eben irgendwas vor wie:
      <a href="<?php include ("links.txt"); _zeile20auslink.txt_ ?>">link20</a>

      wobei eben _zeile20auslink.txt_ irgendwie referenziert werden müßte, veilleicht auch mit einer ID oder so. eben irgendwas ganz kurzes.

      mfg

      Peter L.

      1. Der Ansatz ist okay. Wie wäre es denn z.B. so: ?

        <!-- nur einmal im Kopf der Seite: -->
        <?php
        include ("links.txt");
        function printLinkByID($id)
        {
         # hier muss der Code zum Suchen der ID und Rückgabe des Link rein...
         print $link;
        }
        ?>

        <!-- je Link: -->
        <a href="<?php printLinkByID("foo"); ?>">link20</a>

        1. Hallo!

          Dann würde ich aber gleich auf eine Datenbank zugreifen - damit muss nicht immer mühsam eine Textdatei nach einer speziellen Zeile durchforstet werden.

          Eine entsprechende php-Anweisung könnte dann so aussehen:

          <?php CreateLink(ID); ?>

          Die Funktion dazu:

          <?php

          CreateLink($id)
          {

          Datenbankspezifische Abfrage - also zB

          $query = "select linkname, linkurl, linkbeschreibung, usw. from links where linkid = $id"

          print (LINKZEILE);

          }

          mfg

          norbert  =:-)

          Der Ansatz ist okay. Wie wäre es denn z.B. so: ?

          <!-- nur einmal im Kopf der Seite: -->
          <?php
          include ("links.txt");
          function printLinkByID($id)
          {
           # hier muss der Code zum Suchen der ID und Rückgabe des Link rein...
           print $link;
          }
          ?>

          <!-- je Link: -->
          <a href="<?php printLinkByID("foo"); ?>">link20</a>

          1. hallo Norbert

            Dann würde ich aber gleich auf eine Datenbank zugreifen - damit muss nicht immer mühsam eine Textdatei nach einer speziellen Zeile durchforstet werden.

            also ich hatte eher an etwas gaaaanz einfaches und unkompliziertes gedacht. da es nun auch nicht tausende von links sein sollen, würde mir eine kleine textdatei reichen. wahrscheinlich bleibt es aber ein traum.

            einen schönen tag noch

            Peter L.

            1. ganz Deiner Meinung. Es muß aber kein Traum bleiben, Dein Problem ist auch ohne großen Aufwand lösbar. Die Textdatei könnte so aussehen:

              test|test.html
              google|http://www.google.de
              cwd|http://www.cwd.dk/index.html

              1. hallo Danny

                ganz Deiner Meinung. Es muß aber kein Traum bleiben, Dein Problem ist auch ohne großen Aufwand lösbar. Die Textdatei könnte so aussehen:

                test|test.html

                soweit sogut, klingt vielversprechend. und wie nun weiter? leider bin ich nicht ganz so fit in php, hast Du noch eine eselsbrücke, krückstock, zaunspfahl, ...?

                danke

                Peter L.

                1. Hallo Danny!

                  Siehe mein neues Posting etwas weiter oben ;-)

                  norbert =:-)

                  hallo Danny

                  ganz Deiner Meinung. Es muß aber kein Traum bleiben, Dein Problem ist auch ohne großen Aufwand lösbar. Die Textdatei könnte so aussehen:

                  test|test.html

                  soweit sogut, klingt vielversprechend. und wie nun weiter? leider bin ich nicht ganz so fit in php, hast Du noch eine eselsbrücke, krückstock, zaunspfahl, ...?

                  danke

                  Peter L.

          2. Hi,

            wenn es um eine große Webseite mit tausenden von Links gilt, gebe ich Dir Recht. Aber bei einer Seite die ca. 100 Links nicht überschreitet, wäre eine DB in meinen Augen overkill.

            Wenn die Textdatei weniger als 10 KB groß ist, wäre es ohne DB wahrscheinlich sogar schnell. Der Prozessor muß ja schließlich erstmal das SQL-Statement auswerten und im Index den Zeiger auf den Datensatz finden. In dieser Zeit hat eine String-Funktion schon längst die passende ID im Speicher gefunden...

            Gruß,
            Danny

            1. Hallo Danny!

              Wusste ja nicht, von welchen Größenordnungen wir hier sprechen. In diesem Fall würde ich folgendes tun:

              1.) eine php-Datei erstellen, die mit include eingebunden wird.
              In dieser Datei wird einfach ein Linkarray verwaltet:

              $link[1] = 'url';
              $link[2] = 'url';

              auch möglich:

              $link['hallo'] = 'url';
              $link['irgendwohin'] = 'url';

              Zum Aufrufen würde ich eine kleine Funktion schreiben:

              CreateLink($id)
              {
                  print($link[$id]);
              }

              Damit erspart man sich das Textfile und das lästige suchen ;-)

              Der Rest sollte klar sein - wenn nicht, einfach nochmal posten.

              mfg

              norbert  =:-)

              Hi,

              wenn es um eine große Webseite mit tausenden von Links gilt, gebe ich Dir Recht. Aber bei einer Seite die ca. 100 Links nicht überschreitet, wäre eine DB in meinen Augen overkill.

              Wenn die Textdatei weniger als 10 KB groß ist, wäre es ohne DB wahrscheinlich sogar schnell. Der Prozessor muß ja schließlich erstmal das SQL-Statement auswerten und im Index den Zeiger auf den Datensatz finden. In dieser Zeit hat eine String-Funktion schon längst die passende ID im Speicher gefunden...

              Gruß,
              Danny

              1. Gute Idee.
                Das ist cool :)

              2. hallo Norbert,

                ... würde ich folgendes tun:

                1.) eine php-Datei erstellen, die mit include eingebunden wird.
                In dieser Datei wird einfach ein Linkarray verwaltet:

                $link[1] = 'url';
                $link[2] = 'url';

                auch möglich:

                $link['hallo'] = 'url';
                $link['irgendwohin'] = 'url';

                Zum Aufrufen würde ich eine kleine Funktion schreiben:

                CreateLink($id)
                {
                    print($link[$id]);
                }

                Damit erspart man sich das Textfile und das lästige suchen ;-)

                Der Rest sollte klar sein - wenn nicht, einfach nochmal posten.

                was ich hiermit machen möchte.

                1. frage:
                warum eine php-datei einbinden und keine txt? wenn ich sie einbinde, ist es doch egal, ob php oder txt da kein weiterer (html-)code drin steht - oder?

                2. frage:
                was von dem obigen code kommt nun wohin (externe datei - intern?)?

                danke für die kopfarbeit

                Peter L.

                1. Hallo Peter!

                  Folgendes Schema:

                  1.) Die php-Datei mit den Linkvariablen und der Funktion erstellen:

                  <?php

                  function CreateLink($id)
                  {
                  $link['name1'] = 'url1';
                  $link['name2'] = 'url2';

                  print ('<a href="' . $link[$id] . '">' . $id . '</a>');

                  }

                  ?>

                  Und in jeder Datei, in der Du dies nutzen möchtest, musst du nur die Datei includen und die Funktion aufrufen:

                  <?php include('linkdatei.php'); ?>

                  HTML

                  <?php CreateLink('name1'); ?>

                  und schon hast du einen Link ...

                  mfg

                  norbert =:-)

                  hallo Norbert,

                  ... würde ich folgendes tun:

                  1.) eine php-Datei erstellen, die mit include eingebunden wird.
                  In dieser Datei wird einfach ein Linkarray verwaltet:

                  $link[1] = 'url';
                  $link[2] = 'url';

                  auch möglich:

                  $link['hallo'] = 'url';
                  $link['irgendwohin'] = 'url';

                  Zum Aufrufen würde ich eine kleine Funktion schreiben:

                  CreateLink($id)
                  {
                      print($link[$id]);
                  }

                  Damit erspart man sich das Textfile und das lästige suchen ;-)

                  Der Rest sollte klar sein - wenn nicht, einfach nochmal posten.

                  was ich hiermit machen möchte.

                  1. frage:
                    warum eine php-datei einbinden und keine txt? wenn ich sie einbinde, ist es doch egal, ob php oder txt da kein weiterer (html-)code drin steht - oder?

                  2. frage:
                    was von dem obigen code kommt nun wohin (externe datei - intern?)?

                  danke für die kopfarbeit

                  Peter L.

              3. Hallo,

                1.) eine php-Datei erstellen, die mit include eingebunden wird.
                In dieser Datei wird einfach ein Linkarray verwaltet:

                $link[1] = 'url';
                $link[2] = 'url';

                Da ist man mal ne Viertelstunde weg und jemand anderer hat mir meine Idee geklaut... *g*

                Zum Aufrufen würde ich eine kleine Funktion schreiben:

                Ich bin in Php nicht ganz so firm, aber sollte es nicht einfach reichen folgendes zu machen:

                <a href="<? $link[1] ?>">Link Nummer 1</a>

                Ich glaube mich dunkel daran zu erinnern, dass es so klappt.

                Viele Grüße,

                Stefan

                1. Hallo,

                  <a href="<? $link[1] ?>">Link Nummer 1</a>

                  Ich habs gefunden:

                  http://www.php.net/manual/de/language.basic-syntax.php
                      <?= expression ?> Dies ist eine Abkürzung für "<? echo expression ?>"

                  Viele Grüße,

                  Stefan