Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP- / SQL-Code in Variable speichern und auf korrekte Art und Weise ausgeben

Einklappen

Neue Werbung 2019

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

  • PHP- / SQL-Code in Variable speichern und auf korrekte Art und Weise ausgeben

    Guten Abend!

    Wie vielleicht der ein oder andere mitbekommen hat arbeite ich zur Zeit an einem eigenen CMS, wobei hin und wieder kleinere Probleme auftauchen

    Momentan geht es um eine SQL-Abfrage und ein paar Links, welche je nach Ergebnis vorheriger IF-Abfragen mit anderem Code gefüllt werden sollen. Das sieht momentan ungefähr so aus:

    Variablendefinition:
    PHP-Code:
    if (bedingung 1) {

    ...

    } else if (
    bedingung 2) {
      
    $abfrage_gesamt 'SELECT `id` FROM `newsskript` WHERE `cat` = $cat';
      
    $abfrage_where '`cat` = $cat';
      
    $blaetter_linkanhang "&cat=".$cat;
      
    $bilder_linkanhang '=$newsid&zuruecklink=$zuruecklink&cat=$cat';

    SQL-Code und Linkausgabe:

    PHP-Code:
    $query mysql_query("".$abfrage_gesamt."");
    $links[] = "<a href=\"blabla.php".$blaetter_linkanhang."\">Link</a>\n";

        
    $sql "SELECT
                   `id`,
                   `title`,
                   `text`,
                   `date`,
                   `imageurl`,
                   `thumbnailurl`
               FROM
                   `newsskript`
               WHERE
                   
    $abfrage_where
               ORDER BY
                   date desc"
    ;

    ...

    $newsid $row->id;  

    ...

    echo 
    "<a href=\"../anzeige_beitrag.php?id".$bilder_linkanhang."\"><img src=\""$row->thumbnailurl ."\"></a>\n"
    Das Problem:
    Es klappt einfach nicht die Code-Teile vernünftig in den Variablen zu speichern und später wieder aufzurufen. Das Ding ist, dass der Code in den Variablen teilweise Variablen anspricht die erst später definiert werden ($newsid). Deswegen darf die Variable erst in ihrem endgültigen Bestimmungsort gelesen werden und muss während der IF-Abfragen noch als Text gespeichert sein (Hier beinhaltetdie Variable ja noch keinen Wert).
    Es soll im Prinzip einfach so sein, dass die Variablen in der SQL-Abfrage / den Links genau so behandelt würden, also wären sie der Code den sie beinhalten.

    Habe schon diverseste Formatierungen versucht (Anführungszeichen, Slashes vor Anführungszeichen, mysql_real_escape(), keine Anführungszeichen usw...), aber es geht einfach nicht. Entweder wird zwar alles als Text gespeichert, aber die Abfragen funktionieren dann nicht mehr, oder aber die Variablen in den Codeteilen werden oben schon durch ihre Werte "ersetzt", was bei $newsid natürlich nicht sein darf.

    Vielleicht weis jemand Rat? Ich habe jedenfalls den gesamten Nachmittag keine Lösung gefunden :/

    Vielen Dank!

    P.S.: Hier ist ja nur ein Ausschnitt aus dem gesamten Code zu sehen. Er funktioniert tadellos, wenn die Code-Variablen durch ihren Code-Inhalt ersetzt sind.


  • #2
    Schau dir mal [MAN]http_build_query[/MAN] an. Das ist um einiges einfacher als die URL mühsam zusammenzustückeln, wie du es derzeit tust.

    Deine eigentliche Frage versteh ich nicht. Ganz zum Schluss schreibst du das der Code tadellos funktioniert. Der unterstrichene Teil ist unverständlich.

    Kommentar


    • #3
      PHP-Code:
      $query mysql_query("".$abfrage_gesamt.""); 
      1. Die mysql_ Erweiterung wird bald nicht mehr funktionieren http://php.net/manual/en/migration55.deprecated.php

      2. Was sollen die Leerestrings rundherum? http://php-de.github.io/jumpto/code-...#leere-strings

      3. Und ich hoffe du hast deine querys noch irgendwo anders gegen Injection abgesichert, oben nämlich nicht. http://php-de.github.io/jumpto/sql-injection/ Besser gleich PDO (oder mysqli_) mit prepared Statements nutzen, dann hast du Pkt. 1 und 3 erschlagen.

      Und Fortgeschritten ist da gar nichts.

      LG
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Bitte Forenstruktur beachten!

        [MOD: verschoben]
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar

        Lädt...
        X