Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalte in Datenbank speichern

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

  • #16
    Ich würde folgenden Teil erst nach dem <html> Tag schreiben und nicht vor dem Doctype:

    PHP-Code:
    <?php 
      
    @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
      
    mysql_select_db('database') OR die(mysql_error());
    ?>
    Grund: Der Doctype sollte immer die erste Information in einem HTML-Dokument sein. Solange die Datenbankverbindung problemlos hergestellt wird, ist das auch kein Problem. Sollte die Verbindung jedoch mal fehlschlagen, steht vor dem Doctype der mysql_error, was vor allem im IE bewirkt, dass er in den Quirksmode wechselt und nicht mehr im Standardkomformen Modus ist, was sich stark auf das Verhalten bestimmter CSS-Attribute auswirken kann.
    Ist aber nur Kosmetik ^^

    Kommentar


    • #17
      Zitat von Montellese Beitrag anzeigen
      Ich würde folgenden Teil erst nach dem <html> Tag schreiben und nicht vor dem Doctype:

      PHP-Code:
      <?php 
        
      @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
        
      mysql_select_db('database') OR die(mysql_error());
      ?>
      Grund: Der Doctype sollte immer die erste Information in einem HTML-Dokument sein. Solange die Datenbankverbindung problemlos hergestellt wird, ist das auch kein Problem. Sollte die Verbindung jedoch mal fehlschlagen, steht vor dem Doctype der mysql_error, was vor allem im IE bewirkt, dass er in den Quirksmode wechselt und nicht mehr im Standardkomformen Modus ist, was sich stark auf das Verhalten bestimmter CSS-Attribute auswirken kann.
      Ist aber nur Kosmetik ^^
      Eigentlich ist das doch völlig egal. Soll er doch in den Quirksmode gehn er macht mit dem SQL-Error ein die(), also wird nichts nach dem Fehler ausgegeben. Kein HTML, kein CSS, nada nüx un nothing es gibt also nix, was irgendwie falsch angezeigt werden könnte.

      Wenn du es nach dem <html>-Tag machst, ist dein ebenso nicht nicht mehr valide, aber eine Ausgabe könnte da sein. Nun gut, dein SQL-Fehler hat dann deine CSS-Eigenschaften etc nicht mehr, aber soweit sollte es nicht kommen, dass du einen SQL-Fehler bekommst. Und falls doch musst du das ganze anders handeln, und kein die() Einbauen, damit dein Design etc verhaut wird.

      Gut, auch egal wie man es im Endeffekt macht, SQL-Injektions sind hier gut möglich und da is die Datenbank schnell weg ^^
      "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

      Kommentar


      • #18
        Stimmt mit dem die() hast du natürlich recht. Naja ich mach das mit dem Datenbank-Verbindungsfehler immer bissl anders, sodass der Rest doch angezeigt wird ^^

        Jo SQL-Injection ist hier sehr einfach.....

        Kommentar


        • #19
          @ PsychoEagle

          Danke dir

          Also kann ich die Verbindungsdaten auch so ganz oben stehen lassen wie du sie hast?

          Und ist in deinem Code die Ausgabe für die Seiteninhalte auch schon dabei oder noch nicht?
          Wenn nein, wie müssten die dann ungefähr aussehen?

          Wäre das so wie das an der Stelle, wo der Inhalt hin muss, nur statt der Spalte Titel mit Inhalt?

          PHP-Code:
          <?php  
            $sql 
          "SELECT * FROM Inhalte WHERE id = "$_GET['ID'] ." LIMIT 1";
            
          $result mysql_query($sql) OR die(mysql_error());  
            
          $row mysql_fetch_assoc($result);  
            echo 
          $row['Titel']; 
          ?>
          IllerMax - Mein Blog

          Kommentar


          • #20
            Zitat von Maxi Beitrag anzeigen
            Und ist in deinem Code die Ausgabe für die Seiteninhalte auch schon dabei oder noch nicht?
            Wenn nein, wie müssten die dann ungefähr aussehen?

            Wäre das so wie das an der Stelle, wo der Inhalt hin muss, nur statt der Spalte Titel mit Inhalt?

            PHP-Code:
            <?php  
              $sql 
            "SELECT * FROM Inhalte WHERE id = "$_GET['ID'] ." LIMIT 1";
              
            $result mysql_query($sql) OR die(mysql_error());  
              
            $row mysql_fetch_assoc($result);  
              echo 
            $row['Titel']; 
            ?>
            Wie wäre es, wenn du es einfach mal ausprobieren würdest?

            Du musst einfach an der richtigen Stelle das Feld mit dem inhalt ausgeben.

            Kommentar


            • #21
              Hab ich gemacht, ich bekomme nun die folgende Fehlermeldung:

              You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1
              IllerMax - Mein Blog

              Kommentar


              • #22
                Zitat von Maxi Beitrag anzeigen
                Hab ich gemacht, ich bekomme nun die folgende Fehlermeldung:
                You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1
                Diese Fehlermeldung sagt dir, dass irgendwas mit deinem SQL-Statement nicht stimmt.
                So sieht dein statement aus
                PHP-Code:
                $sql "SELECT * FROM Inhalte WHERE id = "$_GET['ID'] ." LIMIT 1"
                Die Fehlermeldung sagt dir nun, dass der Fehler in der Nähe von "LIMIT 1" liegt.
                Das kann in diesem Fall eigentlich nur daran liegen, dass $_GET['ID'] leer ist.
                lass dir doch mal testweise zuvor diese Variable ausgeben, ob sie wirklich leer ist, oder ob der Fehler wo anders liegen könnte, bzw ob sie wirklich eine Zahl enthält.

                Kommentar


                • #23
                  Also die ID 1 existiert in der Datenbank schon.

                  In der DB heißt das Feld ID, also beides groß geschrieben. Drum hab ich in dem Code auch beide Buchstaben groß geschrieben. Stimmt das so?

                  Und ganz am Anfang heißts in dem Code mal so:

                  PHP-Code:
                    mysql_select_db('database') OR die(mysql_error()); 
                  Ich hatte database durch den Namen meiner Datenbank d005dfde ersetzt, war das korrekt?
                  IllerMax - Mein Blog

                  Kommentar


                  • #24
                    Zitat von Maxi Beitrag anzeigen
                    Also die ID 1 existiert in der Datenbank schon.

                    In der DB heißt das Feld ID, also beides groß geschrieben. Drum hab ich in dem Code auch beide Buchstaben groß geschrieben. Stimmt das so?

                    Und ganz am Anfang heißts in dem Code mal so:

                    PHP-Code:
                      mysql_select_db('database') OR die(mysql_error()); 
                    Ich hatte database durch den Namen meiner Datenbank d005dfde ersetzt, war das korrekt?
                    das mit dem mysql_select_db ist richtig.
                    Allerdings stimmt das mit deinem SQL-query nicht:
                    PHP-Code:
                    $sql "SELECT * FROM Inhalte WHERE id = "$_GET['ID'] ." LIMIT 1"
                    Dein Feld ist in der DB als "ID" gespeichert also muss es im query auch "ID" heißen.
                    Allerdings denke ich nicht, dass dein Seitenaufrauf so aussieht: "deinedatei.php?ID=12" sondern so: "deinedatei.php?id=12"
                    Liege ich da richtig?
                    sollte es so sein, dann muss dein Statement folgendermaßen lauten:
                    PHP-Code:
                    $sql "SELECT * FROM Inhalte WHERE ID = "$_GET['id'] ." LIMIT 1"

                    Kommentar


                    • #25
                      Aaaah, danke dir.
                      Hab das so geändert und die Inhalte werden auch schon richtig ausgegeben, allerdings wird der Titel nicht so ausgegeben wie er soll - es erscheint der Link zur Seite und nicht das, was als Titel in der DB steht... was ist da noch falsch?
                      IllerMax - Mein Blog

                      Kommentar


                      • #26
                        Wie sieht denn dein code jetzt aus?
                        Ohne den wird dir wohl keiner helfen können.

                        Kommentar


                        • #27
                          Dat isser (ohne PW)

                          PHP-Code:
                          <?php 
                            
                          @mysql_connect("localhost""d005dfde""******") OR die("Keine Verbindung möglich: "mysql_error()); 
                            
                          mysql_select_db('d005dfde') OR die(mysql_error());
                          ?>
                          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
                          <head>
                          <title>
                          <?php  
                            $sql 
                          "SELECT * FROM Inhalte WHERE ID = "$_GET['id'] ." LIMIT 1";
                            
                          $result mysql_query($sql) OR die(mysql_error());  
                            
                          $row mysql_fetch_assoc($result);  
                            echo 
                          $row['Titel']; 
                          ?>
                          </titel>
                          <link rel="shortcut icon" href="favicon.ico" />
                          <link rel="stylesheet" type="text/css" href="css/blau.css"/>
                          <script type="text/javascript">
                          <!--
                          window.onload=montre;
                          function montre(id) {
                          var d = document.getElementById(id);
                              for (var i = 1; i<=10; i++) {
                                  if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
                              }
                          if (d) {d.style.display='block';}
                          }
                          //-->
                          </script>
                          </head>
                          <body>
                          <div id="banner"></div><div id="footer"></div>
                          <div id="navigation">
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php">Startseite</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=1">Über dieses Projekt</a></span>
                          <dt onclick="javascript:montre('smenu2');"><span class="spannavi"><a tabindex="0" class="navielement"  href="index.php?id=2">Inhalte</a></span></dt>
                          <dd id="smenu2">
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 1 &laquo;</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 2 &laquo;</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Link 3 &laquo;</a></span>
                          </dd>    
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=3">nützliche Links</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=4">Gästebuch</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=5">Kontakt</a></span>
                          <span class="spannavi" ><a tabindex="0" class="navielement"  href="index.php?id=6">Statistik</a></span>
                          </div>
                          <div id="inhalt">
                          <?php   
                            $sql 
                          "SELECT * FROM Inhalte WHERE ID = "$_GET['id'] ." LIMIT 1"
                            
                          $result mysql_query($sql) OR die(mysql_error());   
                            
                          $row mysql_fetch_assoc($result);   
                            echo 
                          $row['Inhalt'];  
                          ?>
                          <hr /><?php include("counter.php"); ?>
                           </div></body></html>
                          Wie gesagt, der Inhalt wird ja richtig ausgegeben...
                          Und wie mach ich das, dass ich direkt in der index.php die Inhalte für die Startseite reinschreiben kann?
                          IllerMax - Mein Blog

                          Kommentar


                          • #28
                            Zu dem Problem mit dem Titel:
                            Heißt dein Feld wirklich "Titel" also exakt so geschrieben?

                            in die index.php kannst du ganz einfach mit einer Abfrage, ob die id gesetzt ist den inhalt eintragen:
                            PHP-Code:
                            if(isset($_GET['id']))
                            {
                               echo 
                            'Hier kommt der Startseiteninhalt';
                            }
                            else
                            {
                               echo 
                            $row['Inhalt'];

                            Des weiteren brauchst du die MYSQL Abfrage nicht ein weiteres mal für den Inhalt machen, da "Select * ..." bereits _alle_ Felder ausliest.

                            Kommentar


                            • #29
                              Ja, das feld heißt genau so:




                              Wenn ich jetzt gleichzeitig noch ne Weiterleitung machen möchte, geht das auch? So:
                              PHP-Code:
                              <?php 
                                
                              @mysql_connect("localhost""d005dfde""mfprojekt89") OR die("Keine Verbindung möglich: "mysql_error()); 
                                
                              mysql_select_db('d005dfde') OR die(mysql_error());
                              ?>
                              <?php header
                              ("Location: index.php?id=1"); ?>
                              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
                              <head>
                              <title>
                              //usw...
                              Das Problem ist, wenn ich es so mache läd er ewig und macht die Datei nicht auf...
                              IllerMax - Mein Blog

                              Kommentar


                              • #30
                                Es ist ja klar, dass die seite immer wieder neu geladen wird, da du jedes mal die weiterleitung auf die gleiche seite machst.
                                Du müsstest schon zuvor abfragen, ob die weiterleitung wirklich geschehen soll oder nicht.

                                Mach mal ein "echo $row['Titel']" ob dir dabei etwas ausgegeben wird.

                                Kommentar

                                Lädt...
                                X