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?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Inhalte in Datenbank speichern
Einklappen
Neue Werbung 2019
Einklappen
X
-
Inhalte in Datenbank speichern
Stichworte: -
-
Ein Gast antwortete
-
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:
-
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:
-
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...
Einen Kommentar schreiben:
-
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'];
}
Einen Kommentar schreiben:
-
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 «</a></span>
<span class="spannavi" ><a tabindex="0" class="navielement" href="#">Link 2 «</a></span>
<span class="spannavi" ><a tabindex="0" class="navielement" href="#">Link 3 «</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>
Und wie mach ich das, dass ich direkt in der index.php die Inhalte für die Startseite reinschreiben kann?
Einen Kommentar schreiben:
-
Wie sieht denn dein code jetzt aus?
Ohne den wird dir wohl keiner helfen können.
Einen Kommentar schreiben:
-
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:
-
Zitat von Maxi Beitrag anzeigenAlso 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());
Allerdings stimmt das mit deinem SQL-query nicht:
PHP-Code:$sql = "SELECT * FROM Inhalte WHERE id = ". $_GET['ID'] ." LIMIT 1";
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:
-
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());
Einen Kommentar schreiben:
-
Zitat von Maxi Beitrag anzeigenHab 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
So sieht dein statement aus
PHP-Code:$sql = "SELECT * FROM Inhalte WHERE id = ". $_GET['ID'] ." LIMIT 1";
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:
-
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:
-
Zitat von Maxi Beitrag anzeigenUnd 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'];
?>
Du musst einfach an der richtigen Stelle das Feld mit dem inhalt ausgeben.
Einen Kommentar schreiben:
-
@ 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:
Einen Kommentar schreiben: