Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalte in Datenbank speichern

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

  • Maxi
    hat ein Thema erstellt Inhalte in Datenbank speichern.

    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?

  • Gast-Avatar
    Ein Gast antwortete
    Tutorials - PHP - Flash - CSS ... Der Schattenbaum

    wirklich empfehlens wert und ganz einfach

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    Wenn ich den Titel einfach statt dem Inhalt im Inhaltsbereich ausgeben lasse funktioniert es.

    Edit:
    Das Problem mit dem Titel ist gelöst, es geht jetzt!
    Schaut euch einfach mal an, mit welchem Tag ist die Titel-Ausgabe geschlossen habe...

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    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.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    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...

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    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.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    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?

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    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"

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    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?

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    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.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    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

    Einen Kommentar schreiben:


  • Nendrew
    antwortet
    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.

    Einen Kommentar schreiben:


  • Maxi
    antwortet
    @ 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']; 
    ?>

    Einen Kommentar schreiben:

Lädt...
X