Link aus Datenbank per php einpflegen

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

  • Link aus Datenbank per php einpflegen

    Ein Hallo ins Forum,

    ich habe folgendes Problem und komme nicht auf die Lösung: Ich habe ein Script erstellt, was Daten aus der Datenbank liest und eine Tabelle im Web anzeigt.

    Das Datenfeld "Beschreibung" ist nicht immer belegt, aber wenn habe ich ein Modul gebaut, was beim Klick auf den Namen der Liste dann geladen wird und die Beschreibung wird hineingeladen.

    Hier das Skript:

    PHP-Code:
    <?php
    //UTF-8
    //Autor: Uwe Hennig
    header("Content-Type: text/html; charset=utf-8"); 

    $db JFactory::getDBO();




    $abfrage "SELECT * FROM " $db->getPrefix() . $jumi[0];


    $ergebnis mysql_query($abfrage);
    if ( ! 
    $ergebnis )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());
    }

    $biografie "";


    echo 
    "<div class=\"row\"><div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">";
    echo 
    "<table class=\"kriegsopfer\">";
    echo 
    "<thead><tr>";
    echo 
    "<th>Nachname</th><th>Vorname</th><th>geboren am</th><th>geboren wo</th><th>gestorben am</th><th>gestorben wo</th><th>Angehörigkeit</th><th>Grab</th>";
    echo 
    "</tr></thead><tbody>";

     
    while (
    $zeile mysql_fetch_array$ergebnisMYSQL_ASSOC))
    {
      echo 
    "<tr>";
      if (isset(
    $zeile['beschreibung'])) {
         echo 
    "<td><a href=\"#"$zeile['id'] . "Beschreibung\" data-toggle=\"modal\">"$zeile['nachname'] . "</a></td>";


    $biografie.="<div class=\"modal fade\" id="$zeile['id'] . "Beschreibung role=\"dialog\"><div class=\"modal-dialog\"><div class=\"modal-content\"><div class=\"modal-header\"><h2>"$zeile['vorname'] . " "$zeile['nachname'] . "</h2></div><div class=\"modal-body\"><p>"$zeile['beschreibung'] . "</p></div><div class=\"modal-footer\"><a class=\"btn btn-default\" data-dismiss=\"modal\">Schließen</a></div></div></div></div>";


         } 

    else {
              echo 
    "<td>"$zeile['nachname'] . "</td>";}

     
      echo 
    "<td>"$zeile['vorname'] . "</td>";
    //  echo "<td style=\"text-align: right;\">". $zeile['geboren_am'] . "</td>";
      
    echo "<td>"$zeile['geboren_am'] . "</td>";
      echo 
    "<td>"$zeile['geboren_wo'] . "</td>";
      echo 
    "<td>"$zeile['gestorben_am'] . "</td>";
      echo 
    "<td>"$zeile['gestorben_wo'] . "</td>";
      echo 
    "<td>"$zeile['staatsangehoerigkeit'] . "</td>";
      echo 
    "<td>"$zeile['grab'] . "</td>";

      echo 
    "</tr>";
    }
    echo 
    "</tbody></table><hr /></div></div>";

    echo 
    $biografie;





    mysql_free_result$ergebnis );

    ?>

    So nun will ich das ausbauen, das eine Prüfung der $zeile('beschreibung') erfolgen soll, ob sich darin ein Link befindet. Wenn ja, soll dieser mit dem Namen verlinkt werden, statts dem Modul.

    Ich habe schon stundenlang drüber geschaut finde den Fehler aber nicht. Es wird wieder nur ein kleines Semikolon oder eine Klammer sein aber wo?


    PHP-Code:
    <?php
    //UTF-8
    header("Content-Type: text/html; charset=utf-8"); 

    $db JFactory::getDBO();




    $abfrage "SELECT * FROM " $db->getPrefix() . $jumi[0];


    $ergebnis mysql_query($abfrage);
    if ( ! 
    $ergebnis )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());
    }

    $biografie "";
    $suche "";


    echo 
    "<div class=\"row\"><div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">";
    echo 
    "<table class=\"kriegsopfer\">";
    echo 
    "<thead><tr>";
    echo 
    "<th>Nachname</th><th>Vorname</th><th>geboren am</th><th>geboren wo</th><th>gestorben am</th><th>gestorben wo</th><th>Staats-<br>angehörigkeit</th>";
    echo 
    "</tr></thead><tbody>";

     
    while (
    $zeile mysql_fetch_array$ergebnisMYSQL_ASSOC))
    {
      echo 
    "<tr>";
      
    // wenn beschreibung existiert
      
    if (isset($zeile['beschreibung'])); 
      
    //  dann wird Variable geladen und kontrolliert, ob beschreibung NICHT mit Text "NULL" gefüllt ist
      
    if ($zeile['beschreibung']!="NULL");


        
    $findmich 'http://';
          
    $suche stripos($zeile['beschreibung'], $findmich);
      
    //wenn es kein Link ist...
              
    if ($suche === false);
               {
                echo 
    "<td><a href=\"#"$zeile['id'] . "Beschreibung\" data-toggle=\"modal\">"$zeile['nachname'] . "</a></td>";
        
    $biografie.="<div class=\"modal fade\" id="$zeile['id'] . "Beschreibung role=\"dialog\"><div class=\"modal-dialog\"><div class=\"modal-content\"><div class=\"modal-header\"><h2>"$zeile['vorname'] . " "$zeile['nachname'] . "</h2></div><div class=\"modal-body\"><p>"$zeile['beschreibung'] . "</p></div><div class=\"modal-footer\"><a class=\"btn btn-default\" data-dismiss=\"modal\">Schließen</a></div></div></div></div>";
               }
      
    //wenn es ein Link ist...
               
    else {
               
    $link $zeile['beschreibung'];
               echo 
    "<td><a href=\"" $link "Beschreibung\">" $zeile['nachname'] . "</a></td>";
    //           echo "<td><a href=\\" . $zeile['beschreibung'] "\"" . $zeile['id'] . "Beschreibung>" . $zeile['nachname'] . "</a></td>";

    //       echo "<td><a href=\"#". $beschreibung . $zeile['id'] . "Beschreibung\" >". $zeile['nachname'] . "</a></td>";    
               
    }
           


        else {
              echo 
    "<td>"$zeile['nachname'] . "</td>";}

     
      echo 
    "<td>"$zeile['vorname'] . "</td>";
    //  echo "<td style=\"text-align: right;\">". $zeile['geboren_am'] . "</td>";
      
    echo "<td>"$zeile['geboren_am'] . "</td>";
      echo 
    "<td>"$zeile['geboren_wo'] . "</td>";
      echo 
    "<td>"$zeile['gestorben_am'] . "</td>";
      echo 
    "<td>"$zeile['gestorben_wo'] . "</td>";
      echo 
    "<td>"$zeile['staatsangehoerigkeit'] . "</td>";


      echo 
    "</tr>";
    }
    echo 
    "</tbody></table><hr /></div></div>";

    echo 
    $biografie;





    mysql_free_result$ergebnis );

    ?>

    Danke für Eure Hilfe

  • #2
    Zitat von WIle-E-Coyote Beitrag anzeigen
    Es wird wieder nur ein kleines Semikolon oder eine Klammer sein aber wo?
    Bei eingschaltetem Error-Reporting werden Dir diese Fehler angzeigt

    Gruss WW

    Kommentar


    • #3
      Hallo Wasser_Wanderer,

      und ich hatte mich schon gewundert, das der errorlog nichts ausspuckt. Ich hatte wohl mal die PHP Fehler rausgenommen und ("E_ALL ^ E_STRIC") gesetzt.

      Jetzt schlägt er wieder an und zeigt mir ein unexpected else in Zeile 48. Dann muß ich die if-schleife noch einmal durchgehen und schauen wos da hängt.


      Gruß
      WE Coyote

      Kommentar


      • #4
        Tipps/Anmerkungen:

        Arbeite mit $db aus $db = JFactory::getDBO() und starte nicht daran vorbei Abfragen über die (veraltete) mysql-Erweiterung. (Die mysql-Funktionen sind veraltet, nutze mysqli oder PDO. PHP: Choosing an API - Manual) Aber wie gesagt: $db ist bereits ein Objekt mit dem du DB-Queries ausführen kannst. Das ist auch genau dazu gedacht. Da musst du dir nicht selbst am Framework vorbei was zusammenstricken.

        PHP-Code:
        die('Ungültige Abfrage: ' mysql_error()); 
        Stell sicher, dass alle Dateien deines Projekts im passenden Zeichensatz (das ist nahezu immer UTF-8) kodiert sind. Dann treten derlei Probleme mit kaputten Umlauten und dergleichen nicht auf. Weiterführend: UTF-8 - PHP Forum: phpforum.de

        Hier…

        PHP-Code:
        echo "<div class=\"row\"><div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">";
        echo 
        "<table class=\"kriegsopfer\">";
        echo 
        "<thead><tr>";
        echo 
        "<th>Nachname</th><th>Vorname</th><th>geboren am</th><th>geboren wo</th><th>gestorben am</th><th>gestorben wo</th><th>Angehörigkeit</th><th>Grab</th>";
        echo 
        "</tr></thead><tbody>"
        …könntest du geschickter mit Strings in einfachen Anführungszeichen arbeiten (das spart das Escaping von Anführungszeichen im String) oder auch einfach den PHP-Bereich verlassen und den HTML-Code als HTML schreiben. Dabei hilft das EVA-Prinzip EVA Prinzip - PHP Forum: phpforum.de.

        Dir fehlt durchgängig das Escaping beim Eintragen von PHP-Variablen in den HTML-Code (→ htmlspecialchars). Siehe dazu auch: PHP/Anwendung und Praxis/Kontextwechsel ? SELFHTML-Wiki, PHP/Anwendung und Praxis/Kontextwechsel/erkennen und behandeln ? SELFHTML-Wiki und für die sinnvollste Anwendung von htmlspecialchars https://nikic.github.io/2012/01/28/h...n-PHP-5-4.html.

        Kommentar


        • #5
          Hallo mermhaus,

          danke für Deine Hinweise. Ich hatte in der Zwischenzeit die IF-Schleifen komplett neu geschrieben und jetzt läuft es. Ich werde Deine Hinweise durcharbeiten und mein PHP-Srikt dahingehend noch einmal ändern.

          Danke noch mal für die Hinweie und die Links dazu.

          Gruß
          WE Coyote

          Kommentar


          • #6
            if-schleife.de

            Sorry

            Kommentar


            • #7
              Zitat von h3ll Beitrag anzeigen
              Ach komm jetzt! Wir haben Hochsommer. Bei der derzeitigen Hitze muss man die Ifs doch auch mal schleifen lassen können!
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar

              Lädt...
              X