Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalte je nach Menü laden?

Einklappen

Neue Werbung 2019

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

  • Inhalte je nach Menü laden?

    Hallo Leute,
    meine Frage ist folgende.

    Ich habe eine Seite welche via php Daten aus einer Datenbank bezieht. Funktioniert auch alles. Nun habe ich eine startseite.php und auf dieser ein Newsmenü. Also "hier werden alle News-Einträge" angezeigt, welche wie gesagt dynamisch aus einer DB geladen werden.

    In der DB sind folgende Daten gespeichert: ID, Headline, Datum, Text

    Das Newsmenü ist selber in einem Iframe auf der Seite eingebunden. Als "Target" und "href" habe ich nun mal Testweise "startseite3.php" eingegeben. Muss nicht beachtet werden.

    Nun werden je die Headline und das Datum im Newsmenüpunkt angezeigt. Der Text soll in einer <div class="textfeld"> angezeigt werden.
    Nun frage ich mich wie kann ich es hinbekommen, dass wenn ich auf ein Newsmenüpunkt klicke ich im Textfeld meinen zum Datensatz passenden "Text"angezeigt bekomme. Irgendwie muss ich ja dem Newsmenüpunkt einen Link mitgeben oder so. Aber ansich soll ja nur der passende Text geladen werden.
    Weiß gerade nicht so weiter wie ich am besten vorgehen soll. Wäre nett wenn jemand helfen könnte und einen Ansatz für mich hat.

    Ich denke mir ich müsste irgendwie im Newsmenü den Text schon "hidden" mitgeben und dann diesen weiterschicken und in einer weiter seite anzeigen lassen oder nicht?

    Hier noch mein Code aus dem Newsmenü:

    PHP-Code:
    echo "<div class=\"subs\"><a class=\"sub\" target=\"startseite3.php\" href=\"startseite3.php\"><p>$row[datum]<br>»$row[headline]</p></a></div>";}
                    
    ?> 
    Über einen Ansatz mit einer kleinen Erklärung würde ich mich freuen.

    Danke

  • #2
    Ich bin mir nicht sicher ob ich dich richtig verstanden habe, aber ich glaube das koennte dir helfen.
    Also in der Liste wo die Ueberschriften angezeigt werden:
    Sowas in der Art
    PHP-Code:
    echo "<a href=\"startseite.php?show_id=".$row["ID"]."\">".$row["Headline"]."</a><br>"
    Und in das Textfeld wo der Text dann erscheinen soll:
    PHP-Code:
    if(isset($_GET["show_id"])) {
    $sql"SELECT BLABLA FROM tblBALABLA WHERE ID=".$_GET["show_id"];
    //AUSGABE VOM TEXT

    Kommentar


    • #3
      PHP-Code:
      if(isset($_GET["show_id"])) {
      $sql"SELECT BLABLA FROM tblBALABLA WHERE ID=".intval($_GET["show_id"]);
      //Lieber so

      Kommentar


      • #4
        Stimmt, damit wirds sicherer...

        Kommentar


        • #5
          Danke für eure Antworten werde es mal ausprobieren.
          Danke euch!

          Kommentar


          • #6
            Also ich habe nun mal in dem NEwsmenü folgenden Code:

            PHP-Code:
            echo "<div style=\"background-image:url(http://www.test.de/website/img/sub.jpg)\"> <div class=\"subs\"><a class=\"sub\" href=\"startseite3.php?show_id=\".$row[\"ID\"].\"\">\".$row[\"Headline\"].\"</a></div>";}
                            
            ?> 
            Jetzt wird nur leider nichts mehr angezeigt. Kann jemand da einen Fehler drin sehen? startseite3.php soll nun testweise die seite sein, wo der neue Inhalt geladen werden soll.
            Habe ich da was falsch verarbeitet?

            Danke

            Kommentar


            • #7
              wieso escapst du die variable die du einfügen willst (vom array-index ganz zu schweigen!) das war oben schon ganz richtig gepostet
              href=\"startseite3.php?show_id=".$row["ID"]."\">
              " zu escapen bewirkt das php die zeichenkette nicht beendet! hier willst du aber genau das, nämlich die zeichenkette unterbrechen und eine variable einfügen - da gehören keine escape-zeichen hin! damit solltest du dich nochmal befassen, das sind wichtige grundlagen.

              mfg

              PS: ich glaub der fehler gründet sich auch daraus das du normalerweise die zeichenkette NICHT beendest um variablen einzufügen (zumindest hast du das oben nicht gemacht). sowas wie
              echo "muh $variable blah";
              sollte man vermeiden. richtig und gut (und funktionierend in jeder situation!) ist
              echo "muh ".$variable." blah";

              mfg²

              Kommentar


              • #8
                Mir wurde in einem anderen Thread gesag, dass ich das escapen müsse, da ich sonst php veranlasse das script zu beenden..

                also müsste der code dann so aussehen?

                PHP-Code:
                echo "<div style=\"background-image:url(http://www.test.de/website/img/sub.jpg)\"> <div class=\"subs\"><a class=\"sub\"  href=\"startseite.php?show_id=".$row["ID"]."\">".$row["Headline"]."<p>$row[datum]<br>»$row[headline]</p></a></div>";}
                                
                ?> 

                Kommentar


                • #9
                  So funktioniert es auf jeden fall das die id weitergegeben wird... ich binde das gleiche nun mal im textfeld ein.

                  Kommentar


                  • #10
                    Also im Textfeld habe ich jetzt folgendes stehen:

                    PHP-Code:
                    <?php
                                                    
                    include "sqlconnect.php";
                                
                                                if(isset(
                    $_GET["show_id"])) {
                                                
                    $abfrage mysql_query("SELECT * FROM `news` WHERE ID=\".intval($_GET[\"show_id\" ORDER BY id DESC LIMIT 0, 1");

                                                    
                                                while(
                    $row mysql_fetch_assoc($abfrage)) {
                                    
                                                    echo 
                    "<div class=\"textfeld\"><h1>&#187$row[headline]</h1><h2>$row[datum]</h2><p>$row[text]</p></div>";}    
                            
                                                
                    ?>
                    war das sogemeint? wird wieder nichts angezeigt!

                    Kommentar


                    • #11
                      href=\"startseite3.php?show_id=\".$row[\"ID\"].\"\">\".$row[\"Headline\"].\"
                      Hier wird innerer und äußerer Code vermischt. Du kannst nicht pauschal alles escapen. Versuch Dich in kleinen Schritten an die Ausgabe heranzutasten.
                      Fang an mit
                      echo $row["ID"];
                      dann
                      echo "startseite3.php?show_id=" . $row["ID"];
                      usw.
                      Erst zuletzt die Tags und dann immer im Browserquelltext die Ausgabe prüfen!

                      Kommentar


                      • #12
                        Also das Untermenü habe ich nun so, dass es angezeigt wird und das die weitergabe via _GET funktioniert.

                        PHP-Code:
                        echo "<div style=\"background-image:url(http://www.test.de/website/img/sub.jpg)\"> <div class=\"subs\"><a class=\"sub\"  href=\"startseite.php?show_id=".$row["ID"]."\">".$row["Headline"]."<p>$row[datum]<br>»$row[headline]</p></a></div>";}
                                        
                        ?> 
                        Das Problem ist nun, dass der Code im Textfeld bei mir Fehler hat und dadurch die ganze Seite zerschießt bzw. der Broswer diese nicht mehr anzeigen kann.

                        PHP-Code:
                        <?php
                        include "sqlconnect.php";
                                    
                        if(isset(
                        $_GET["show_id"])) {
                        $abfrage mysql_query("SELECT * FROM `news` WHERE ID=\".intval($_GET[\"show_id\" ORDER BY id DESC LIMIT 0, 1");

                        while(
                        $row mysql_fetch_assoc($abfrage)) {
                                        
                        echo 
                        "<div class=\"textfeld\"><h1>»$row[headline]</h1><h2>$row[datum]</h2><p>$row[text]</p></div>";}    
                                
                        ?>
                        Ich frage mich gerade ob ich ORDER by id DESC LIMIT nun überhaupt noch brauche weil ansich soll ja dann nur der Text passend zur ID geladen werden oder?

                        Kommentar


                        • #13
                          PHP-Code:
                          $abfrage mysql_query("SELECT * FROM `news` WHERE ID=\".intval($_GET[\"show_id\" ORDER BY id DESC LIMIT 0, 1"); 
                          Dieser Code sieht sehr falsch aus, da kann nix bei rauskommen.
                          Du musst das versuchen uebersichtlichen zu schreiben, dass dir solche Fehler nicht mehr unterkommen:

                          PHP-Code:
                          //Du hast wieder zu viel escapt!
                          //Das order und limit brauchst du wirklich nich mehr, aber es aendert auch nichts...
                          $abfrage mysql_query("SELECT * FROM `news` WHERE ID=".intval($_GET["show_id"])); 
                          Zum escapen:
                          PHP-Code:
                          $variable="foo";
                          echo 
                          "Hallo du ".$variable// Hallo du foo
                          echo "Hallo du \"variable\"'; // Hallo du "variable
                          Und gewoehn dir an ein
                          PHP-Code:
                          error_reporting(E_ALL); 
                          an den Anfang von deinen Scripten zu schreiben, dann werden dir die Fehler ausgegeben.

                          Kommentar

                          Lädt...
                          X