tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
17
ZUGRIFFE
849
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Hi

    Ich bin mir nicht ganz sicher, ob ich hier oder im MySQL-Forum posten soll - verschiebt den Thread also, wenn er hier falsch ist.

    Es geht um folgendes: Ich habe eine DB, darin hat's Tabellen. (Oje... ich bin wohl etwas müde. *g*) Jedenfalls befindet sich in einer Tabelle eine Zelle mit folgendem Inhalt:
    PHP-Code:
    <a href="<?php echo basename($_SERVER['PHP_SELF']); ?>?id=5">Linktext</a>
    Der PHP-Code wird logischerweise nicht interpretiert, was ich aber gerne hätte. Mit eval() hab ich's auch schon probiert, war leider nicht das, wonach ich suchte. Also wenn mir jemand weiterhelfen könnte, wäre das echt super.

    Achja, nochwas: Ihr seht ja selbst, dass ich den Dateinamen ziemlich umständlich herausfinde (basename($_SERVER['PHP_SELF'])) - geht das irgendwie einfacher? Weil ich hab mal bei www.php.net gesucht, hab aber keine Variable gefunden, die mir einfach nur den Dateinamen ausgibt.

    TIA, Grüsse

    SilentWarrior
    Geändert von SilentWarrior (29.07.04 um 22:43 Uhr)
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Gronau, Nordrhein-Westfalen, Germany, Germany
    Beiträge
    634
    Wenn ich ganz ehrlich sein soll verstehe ich nicht recht was du möchtest...

    Zu dem Dateinamen:
    PHP-Code:
    $_SERVER['PHP_SELF']; 
    Anders gehts meines Wissens leider nicht
     

  3. #3
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Also wegen dem Dateinamen: Wenn ich $_SERVER['PHP_SELF'] eingebe, wird zwar der Dateiname angezeigt, allerdings immer mit einem vorangehenden Slash. Und das kann in manchen Fällen zu Problemen führen. (Kann dir jetzt leider grad kein Beispiel nennen, hatte das nur früher mal. )

    Nun, nochmal zum Problem: Wenn ich die Tabellenzelle "einfach so" auslese, steht dann nachher im Quellcode genau der Inhalt der Zelle, also das hier:
    PHP-Code:
    <a href="<?php echo basename($_SERVER['PHP_SELF']); ?>?id=5">Linktext</a>
    Es soll aber das da stehen (vorausgesetzt, der Dateiname ist index.php):
    PHP-Code:
    <a href="index.php?id=5">Linktext</a
    Jetzt klarer?
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Gronau, Nordrhein-Westfalen, Germany, Germany
    Beiträge
    634
    AAhhhhmmmm...
    Bist du sicher das PHP korrekt installiert ist !?
    Ist das der einzige PHP-Teil in der Datei, oder gibt es andere, die aber trotzdem geparsed werden?
    Geändert von Operator_Jon (30.07.04 um 00:39 Uhr)
     

  5. #5
    Registriert seit
    May 2002
    Ort
    50.59° Nord 11.21° Ost
    Beiträge
    1.837
    Ich weiß nicht in wie weit es dir hilft, aber so hab ich es mit
    eval() gemacht:
    PHP-Code:
    $str '<a href="'.basename($_SERVER['PHP_SELF']).'?id=5">Linktext</a>';
    @eval (
    "\$str = \"$str\";");
    echo 
    $str
     
    »

  6. #6
    KoMtuR KoMtuR ist offline Mitglied Brokat
    Registriert seit
    Apr 2002
    Ort
    Chemnitz
    Beiträge
    440
    Das Problem voodoo ist, dass du die Zeichenfolge zusammenfügst. Und das macht er ja nicht. Er hat in der Zeichenolge ja eben den php-Code drin stehen und muss den nun nochmal ausführen, was aber nicht geht
     

  7. #7
    Registriert seit
    May 2002
    Ort
    50.59° Nord 11.21° Ost
    Beiträge
    1.837
    Aber wenn er's mit <?php in die Datenbank einträgt kann er's
    doch auch mit '.foo().' machen. Notfalls kann man doch vorher
    noch via einer der unzähligen replace-Funktionen das ganze
    entsprechend formatieren
     
    »

  8. #8
    KoMtuR KoMtuR ist offline Mitglied Brokat
    Registriert seit
    Apr 2002
    Ort
    Chemnitz
    Beiträge
    440
    Also ich würde diesen Code aus deiner Datenbank rausnehmen. Ich hab mal deine Sache ein wenig geändert

    PHP-Code:
    <?php

    $FILE_SELF 
    basename($_SERVER['PHP_SELF']);

    $slink "<a href='$FILE_SELF?id=5'>Linktext</a>";
    eval (
    "\$slink = \"\$slink\";");
    echo 
    $slink;
    ?>
    Du müsstest einfach in einer PHP-Datei eine Variable bestimmen, die du dann immer da nehmen kannst. es ändert sich ja nichts dran $_SERVER['PHP_SELF'] spuckt ja immer das Selbe aus.

    Die Variable $slink ist das Ausgelesene aus deiner Datenbank.
     

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wieso nimmst du nicht gleich $_SERVER['SCRIPT_NAME']?
     
    Markus Wulftange

  10. #10
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Danke, Leute! Die Idee mit dem Ersetzen ist gar nicht mal so übel. Werd mir das mal näher anschauen.
    Wieso nimmst du nicht gleich $_SERVER['SCRIPT_NAME']?
    Darum.
     

  11. #11
    MiLa MiLa ist offline Mitglied Smaragd
    Registriert seit
    Aug 2003
    Beiträge
    1.166
    So sollte es doch funktionieren:
    PHP-Code:
    //Dies holst du aus der Datenbank
    $link "<a href='{self}?id=5'>Linktext</a>";

    //Hier wird der Platzhalter ersetzt
    $link=str_replace("{self}",basename($_SERVER['PHP_SELF']),$link);

    //Hier kannstes denn anzeigen...
    echo $link
     

  12. #12
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Da bin ich wieder. KoMtuR hat versucht, mir die ganze Sache zu erklären - vielen Dank erstmal dafür! Nur geholfen hat's leider nichts, ich verstehe immer noch Bahnhof...

    Es ist eben so, dass neben dem Dateinamen noch etliche weitere Variablen hinzukommen und ich diese eigentlich lieber direkt im jeweiligen Feld in der DB definieren würde als unzählige str_replace's zu verwenden.

    Folgenden Code hab ich in der Datenbank drin:
    PHP-Code:
    <a href='" . $_SERVER['PHP_SELF'] . "?id=5'>Linktext</a
    Im Quelltext steht folgendes:
    PHP-Code:
    eval("\$value = \"\$value\";");
    echo 
    $value
    Nur steht nachher im Quelltext der Seite immer noch folgendes:
    PHP-Code:
    <a href='" . $_SERVER['PHP_SELF'] . ?id=5'>Linktext</a
    Langsam komme ich mir vor wie der grösste Depp. Kann mir mal jemand ein funktionierendes Beispiel geben? Also Text in der DB und entsprechende Stelle im Code? Wäre echt super. Auch für eine Erklärung, wie das blöde eval() überhaupt funktioniert, wäre ich sehr dankbar.

    MfG

    SilentWarrior (verzweifelt langsam)
     

  13. #13
    Registriert seit
    May 2002
    Ort
    50.59° Nord 11.21° Ost
    Beiträge
    1.837
    PHP-Code:
    eval ("\$value = \"$value\";"); 
     
    »

  14. #14
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Oh! Äh... danke!

    (Verdammt, ist das peinlich... )

    /edit: So, gleich die nächste Frage. Es funktioniert jetzt, danke _voodoo! (Manchmal sieht man den Baum vor lauter Wäldern nicht. ) Aber: In der DB steht jetzt folgender Code (der Backslash vor dem ersten Anführungszeichen wurde vom Forum entfernt):
    PHP-Code:
    <a href=\"" $_SERVER['PHP_SELF'] . "?id=1\">News</a><br />
    <a href=\"" 
    $_SERVER['PHP_SELF'] . "?id=2\">Newsarchiv</a> 
    Und meine eval()-Zeile sieht folgendermassen aus:
    PHP-Code:
    eval ("\$value = \"$value\";"); 
    Das klappt wie gesagt auch wunderbar. Mir gefallen aber diese ganzen \" nicht - lieber wäre es mir, wenn ich mit Apostrophen (') arbeiten könnte. So habe ich es probiert:
    PHP-Code:
    <a href="' . basename($_SERVER['PHP_SELF']) . '?id=1">News</a><br />
    <
    a href="' . basename($_SERVER['PHP_SELF']) . '?id=2">Newsarchiv</a
    Das funktioniert aber nicht, auch nicht, wenn ich die eval()-Zeile wie folgt ändere:
    PHP-Code:
    eval ('$value = "' $value '";'); 
    Kann mir jemand helfen? Vermutlich brauche ich wieder nur so einen kleinen Hinweis wie den von _voodoo, aber ich komme irgendwie nicht drauf. Diese Fehlermeldung erscheint:
    Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/export/www/vhosts/funnetwork/hosting/silentwarrior/index.php(39) : eval()'d code on line 1
    Viel anfangen kann ich damit leider nicht, ich habe nämlich keine Ahnung, was ein "encapsed string" sein soll.
    Geändert von SilentWarrior (14.08.04 um 13:43 Uhr)
     

  15. #15
    KoMtuR KoMtuR ist offline Mitglied Brokat
    Registriert seit
    Apr 2002
    Ort
    Chemnitz
    Beiträge
    440
    Vielleicht gehts ja so
    PHP-Code:
    eval ('$value = "$value";'); 
     
    "Kreativität heißt, aus dem Chaos Ordnung zu schaffen."
    Georg Stefan Troller (*1921), östr. Journalist

    Tutorials:

Ähnliche Themen

  1. TabellenZelle/RadioButton
    Von MikeDe im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 29.09.06, 13:01
  2. Tabellenzelle als iframe
    Von Nino im Forum HTML & XHTML
    Antworten: 0
    Letzter Beitrag: 02.11.05, 21:58
  3. div an tabellenzelle ausrichten
    Von GuenniFD im Forum HTML & XHTML
    Antworten: 6
    Letzter Beitrag: 06.05.05, 17:49
  4. Hover bei Tabellenzelle
    Von computers im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 26.12.03, 22:27
  5. Hover auf Tabellenzelle
    Von Jamonit im Forum CSS
    Antworten: 2
    Letzter Beitrag: 24.09.03, 17:27