Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalte in Datenbank speichern

Einklappen

Neue Werbung 2019

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

  • Inhalte in Datenbank speichern

    Hallo zusammen,

    ich möchte mir ein neues Homepageprojekt machen, bei dem ich die ganzen Inhalte der einzelnen Seiten (etwa 200) in einer Datenabnk speichern möchte. Also nur das, was auch in den späteren Inhaltsbereich reinkommen soll.

    Die Seiten sollen dann über Links wie index.php?id=32 aufgerufen werden, die Startseite soll nur als index.php erreichbar sein.
    PHP und MySQL-Datenbank stehen mir natürlich beide zur Verfügung.

    Ich nehme an, dass ich mir zuerst eine Tabelle erstellen muss in der Datenbank. Aber wie viele Felder bekommt die? 2 (eines für die id und eines für die Inhalte)? Die id in der DB soll später auch mit der in den Links übereinstimmen. Oder kann man da auch noch eine zusätzliche Spalte machen, dass zum Beispiel jede Seite automatisch ihren eigenen Titel bekommt?

    Also, kurzum:
    - Wie muss ich die Tabelle in der Datenbank anlegen?
    - Mit welchem Code kann ich die danach wie gewünscht auslesen?
    IllerMax - Mein Blog

  • #2
    die tabelle:
    - id
    - name
    - inhalt
    - sichtbar/unsichtbar (wenn du mal sperren willst)

    ist doch ganz einfach:
    du klebst das erstmal in die DB. per while()-schleife lässt du z.b. die links untereinander ausgeben. sollen sie zusätzlich noch kategorisiert, dann mit for().
    die texte, bzw. der inhalt kann ja beim einlesen aus der DB durch verschiedene formatierungsskripte laufen (musste eben selber erstellen), damit er dem design nach passt.

    also m. a. ist das jetzt nicht so schwer.

    Nils aka XraYSoLo

    Kommentar


    • #3
      danke dir, das wred ich mir erstmal anschauen.

      Das Feld sichtbar/unsichtbar, wie mach ich das? Auch mit Text zum eintragen? oder wie sonst? Die restlichen Felder sind klar.

      Kann man mit Inhalten einer Datenbank genau so leicht zu einem anderen Webspace umziehen, wie mit den restlichen Dateien, die auf dem server liegen? Also einfach aus der einen Datenbank rausnehmen und in die andere einfügen?
      IllerMax - Mein Blog

      Kommentar


      • #4
        Zitat von Maxi Beitrag anzeigen
        Das Feld sichtbar/unsichtbar, wie mach ich das? Auch mit Text zum eintragen? oder wie sonst? Die restlichen Felder sind klar.
        Du setzt den Typ des Feldes z.B. auf INTEGER! Wenn der Text sichtbar sein soll, schreibst du dort den Wert 1 (wie true) rein und wenn du eine Seite sperren willst, schreibst du 0 (wie false) rein.

        Zitat von Maxi Beitrag anzeigen
        Kann man mit Inhalten einer Datenbank genau so leicht zu einem anderen Webspace umziehen, wie mit den restlichen Dateien, die auf dem server liegen? Also einfach aus der einen Datenbank rausnehmen und in die andere einfügen?
        Du kannst z.B. in phpMyAdmin eine komplette Datenbank mit der "Exportieren"-Funktion in ein .sql-File speichern (oder auch komprimieren etc) und dann in einer anderen Datenbank (auf einem anderen Server) einfach mit der "SQL"-Funktion die Datei laden und dann wird automatisch die ganze Datenbankstruktur, die du gespeichert hast, dort wieder erstellt.

        Kommentar


        • #5
          Zitat von Montellese Beitrag anzeigen
          Du setzt den Typ des Feldes z.B. auf INTEGER! Wenn der Text sichtbar sein soll, schreibst du dort den Wert 1 (wie true) rein und wenn du eine Seite sperren willst, schreibst du 0 (wie false) rein.
          Danke, werd ich so mal versuchen.
          Zitat von Montellese Beitrag anzeigen
          Du kannst z.B. in phpMyAdmin eine komplette Datenbank mit der "Exportieren"-Funktion in ein .sql-File speichern (oder auch komprimieren etc) und dann in einer anderen Datenbank (auf einem anderen Server) einfach mit der "SQL"-Funktion die Datei laden und dann wird automatisch die ganze Datenbankstruktur, die du gespeichert hast, dort wieder erstellt.
          Kann ich zum Beispiel auch einfach die ganzen Inhalte aus DB 1 kopieren und in die zweite einfügen?

          Ist dieser Code hier richtig, um die Tabelle in der DB anzulegen?
          Code:
          CREATE TABLE Inhalte
          (
              ID     INT AUTO_INCREMENT PRIMARY KEY,
              Titel  VARCHAR(60),
              Inhalt TEXT,
              Aktiv INTEGR
          );
          Wenn nicht richtig, wie müsste der dann lauten?
          IllerMax - Mein Blog

          Kommentar


          • #6
            Also in der zweitletzten Zeile des Queries ist ein Fehler, da fehlt ein E bei INTEGER. Aber sonst sieht das ganz gut aus! In phpMyAdmin kannst du die Tabellen auch automatisch erstellen lassen. Aber wenn du SQL lernen/üben willst, ist es ganz gut, wenn du es selber machst.

            Natürlich kannst du den Inhalt von einer DB in einen anderen kopieren. Es gibt aber keinen direkten Befehl dafür. Wenn du es manuell per Script machen willst, musst du dich schon stärker mit SQL beschäftigen, damit alli Kollationen, die auto_increments, Primary Keys etc korrekt übernommen werden.....

            Kommentar


            • #7
              Danke.
              Also angelegt habe ich diese Tabelle jetzt. Ging jetzt auch Problemlos.

              Nun der nächste Punkt:
              Wie kann ich das in der PHP-Datei jetzt auslesen?

              Und zwar so, dass der Titel, der in der DB im Feld Titel eingetragen ist zwischen <title> und </title> erscheint und das, was innerhalb des Inhalts-Feldes steht als Inhalt ausgegeben wird.

              Dafür bräuchte ich einen Code, damit kenne ich mich leider gar nicht aus.....
              IllerMax - Mein Blog

              Kommentar


              • #8
                Also als erstes musst du dir dafür ein template anlegen, in welchem du dann variablen für den titel und den einhalt einträgst.
                das sieht dann in etwa so aus:
                Code:
                <html>
                 <head>
                  <title>{titel}</title>
                 </head>
                 <body>
                 {inhalt}
                 </body>
                </html>
                Natürlich kannst du hier jegliche komplexität in diese Datei mit aufnehmen.
                Anschließend ersetzt du dann einfach diese variablen mit PHP: str_replace - Manual
                und gibst das ergebnis aus.
                Hoffe du kommst damit klar.

                Kommentar


                • #9
                  Zitat von Maxi Beitrag anzeigen
                  Dafür bräuchte ich einen Code, damit kenne ich mich leider gar nicht aus.....
                  Ein wenig mehr Eigeninitiative und genauere Problemschilderung wäre sehr hilfreich für eine gute Hilfe.

                  Vorneweg, für Komplettlösungen und Vorkauen von Einzelheiten bist du hier falsch. Wenn die nötige Vorkenntnis fehlt, erst mal paar Tutorials durcharbeiten oder sich ein wenig anderweitig schlau machen und bei konkreten Problemen nachfragen.

                  Womit kennst du dich nicht genau aus? Falls es an Kenntnissen fehlt wie gesagt, Tutorials, Fertige Sachen (CMS wie Typo3, Templatesysteme, etc), ...

                  (siehe auch: Inhalte in einer Datenbank speichern - phpfriend.de)

                  Grüße
                  Da Psy
                  [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

                  Kommentar


                  • #10
                    Noch mehr Problembeschreibung?

                    Ich brauche einfach nur meinen Code, mit dem ich die entsprechenden Sachen wie Inhalte und Seitentitel an der richtigen Stelle aus meiner Datenbank auslesen kann.

                    Das ist mein Code bisher:

                    Code:
                    <!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>Titel - domain.de</title>
                    <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="#">Über dieses Projekt</a></span>
                    <dt onclick="javascript:montre('smenu2');"><span class="spannavi"><a tabindex="0" class="navielement"  href="#">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="#">nützliche Links</a></span>
                    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Gästebuch</a></span>
                    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Kontakt</a></span>
                    <span class="spannavi" ><a tabindex="0" class="navielement"  href="#">Statistik</a></span>
                    </div>
                    <div id="inhalt"><h1>mf-89.com</h1>
                    <h2>Die Startseite</h2>
                    <p class="erster">Dies hier wird die Startseite ergeben.</p>
                    
                    <hr /><?php include("counter.php"); ?>
                     </div></body></html>
                    Wie muss der dann aussehen?

                    Ich frage ja extra hier nach, weil mein Thread bei phpfriend geschlossen wurde
                    IllerMax - Mein Blog

                    Kommentar


                    • #11
                      da du ja ein kollege bist, mach' ich mal 'ne ausnahme in sachen fertigem code. du brauchst eine funktion, die das ganze zeugs aus der datenbank 'rausholt, mysql_fetch_array():

                      PHP-Code:
                      <?php
                      $conn 
                      mysql_connect(); //hier die verbindungsdaten

                      $sql "SELECT * FROM table"//die abfrage

                      $result mysql_query($sql) or die(mysql_error()); //der ausführbefehl

                      $row mysql_fetch_array($result);
                      ?>
                      so, jetzt kannst du die daten verwenden:

                      PHP-Code:
                      <?php
                      echo $row['row_name'];
                      //usw.
                      ?>
                      in diesem falle gilt: spaltenname = array-inhalt.

                      Nils aka XraYSoLo

                      Kommentar


                      • #12
                        Danke dir

                        Also mal schauen, ob ich das so richtig verstanden habe...

                        Stimmt das so für die Verbindung?
                        Und wo genau kommt dieser Code dann hin, ganz oben in den Body?

                        PHP-Code:
                        <?php
                        $conn 
                        mysql_connect("localhost""d005dfde""passwort")
                            or die(
                        "Keine Verbindung möglich: " mysql_error());

                        $sql "SELECT * FROM Inhalte";

                        $result mysql_query($sql) or die(mysql_error());

                        $row mysql_fetch_array($result);
                        ?>
                        PHP-Code:
                        <title><?php echo $row['Titel']; ?></titel>
                        Und wie gebe ich dann die richtige ID für die richtige Seite aus, dass bei index.php?id=17 auch die Seite mit der ID 17 aufgerufen wird?

                        Wäre das für den Seitentitel zum Beispiel richtig?
                        IllerMax - Mein Blog

                        Kommentar


                        • #13
                          Dafür müsstest du dein SQL Statement anpassen.
                          Anstatt:
                          PHP-Code:
                          $sql "SELECT * FROM Inhalte"
                          Wäre das dann irgendwie so etwas:
                          PHP-Code:
                          $sql "SELECT * FROM Inhalte WHERE id=".$_GET['id']; 
                          Dadurch liest du nur die Daten aus, die du auch wirklich auf dieser Seite benötigst.
                          Dann kannst du das mit dem Titel auch so machen, wie du es geschrieben hast.

                          Kommentar


                          • #14
                            Danke dir/euch.

                            Zwei Fragen hab ich erstmal noch:

                            1. Ich verbinde ja erst im Body-Bereich mit der DB, klappt das dann, wenn der Titel schon darüber ausgelesen werden muss? Oder muss ich da oben schon die ganzen Verbindungssachen schreiben?
                            2. Muss ich die Datenbankverbindung am Ende auch wieder irgendwie trennen?

                            Edit:

                            Ich bekomme jetzt leider die Meldung "No database selected" wenn ich meine Homepage aufrufen möchte...

                            Wo ist denn da der Fehler?

                            PHP-Code:
                            <!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
                            $conn 
                            mysql_connect("localhost""d005dfde""***"
                                or die(
                            "Keine Verbindung möglich: " mysql_error());

                            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'];  

                            $result mysql_query($sql) or die(mysql_error()); 

                            $row mysql_fetch_array($result); 
                            ?>
                            <hr /><?php include("counter.php"); ?>
                             </div></body></html>
                            IllerMax - Mein Blog

                            Kommentar


                            • #15
                              Ich leg dir vorneweg erstmals nahe (wie schon erwähnt) ein Tutorial zu PHP durchzugehen und auch zu verstehen und nicht alles vorgekaut zu wollen. Aber nun ja ...

                              Google hätte dir zu deinem Fehler einige Lösungen vorgeschlagen

                              Da es früh am Morgen ist helf ich noch ein letztes Mal.

                              PHP-Code:
                              <?php 
                                
                              @mysql_connect("localhost""user""password") OR die("Keine Verbindung möglich: "mysql_error()); 
                                
                              mysql_select_db('database') 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"> 
                              <hr /><?php include("counter.php"); ?> 
                               </div></body></html>
                              WICHTIG!!!: Informier dich doch bitte über SQL-Injections. Das mit dem $_GET in der SQL-Anweisung geht mal gar nicht, vor allem ohne voherige Prüfung!!

                              Habs trotzdem so übernommen, da du doch ein wenig mehr Eigeninitiative zeigen solltest.

                              Bitte geh doch folgendes Tutorial mal Schritt für Schritt (also von oben nach unten, A nach B,...) durch, denn es fehlen dir echt wichtige Grundkenntnisse.
                              -> #php/QuakeNet Tutorial - Einführung

                              Nun denn,

                              Grüße
                              Da Psy
                              [I]"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)[/I]

                              Kommentar

                              Lädt...
                              X