Hallo, da man hier ueberall im Forum ließt, "Wie schreibe ich Daten in eine Datenbank, und lese sie dann wieder aus à la Newsscript" dachte ich mir, das ich mal ein kleines "tutorial" schreibe, wie man sowas auf die Beine stellt.
Im Grunde genommen ist es ganz einfach. Man schreibt Daten in ein Formular schickt das weiter an eine Andere Datei, die wiederrum sendet alles an die Datenbank. In einem weiteren Script ließt man die Daten wieder aus, und Formatiert sie.
Also, al erstes mal, brauchen wir die Serverdaten. Die speichern wir am besten in eine Datei, und fuegen sie dann im dem Befehl include an der Gewuenschten Stelle wieder ein, das Spart Platzt.
Also, hier die Datei, nennt sie wie ihr wollt,vorteilhaft waere config
config.php:
<?php
error_reporting(E_ALL); //Damit sagen wir PHP das es uns die Fehler
//Berichten soll, die auftreten, falls etwas nicht
// Klapt
define('MYSQL_HOST', 'localhost'); // Der host, standartmaessig
// immer Localhost
define('MYSQL_USER', 'root'); //Der Benutzername, bei z.b. ohost
// waere es der Angegebene
//Benutzername
define('MYSQL_PASS', ''); //Das normale mysql PAsswort
define('MYSQL_DATABASE', 'test'); //Der Name der Datenbank
?>
Alles anzeigen
So, da wir die Datei jetzt haben, koennen wir weiter dazu gehn, die Benoetigten Tabellen anzulegen. Hierzu geht ihr in euer PHPmyAdmin tool, geht auf eure Datenbank und klickt Links in der Navigation auf das kleine Button wo: ´SQL´ steht, und fuegt folgenden Code ein, erklaerungen stehen weiter unten:
ZitatAlles anzeigenCREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`autor` varchar(20) collate latin1_general_ci default NULL,
`titel` varchar(100) collate latin1_general_ci default NULL,
`inhalt` text collate latin1_general_ci,
`link` varchar(100) collate latin1_general_ci default NULL,
`datum` datetime default NULL,
PRIMARY KEY (`id`)
)
Das Feld id ist dazu da, jedem Eintrag eine "identitaet" zu verliehen.
Ich denke die restlichen Felder erklaeren sich von Alleine, sie "stehen" zu ihrem Namen
So, nun kommen wir zu dem Formular, wo wir die Daten eintragen muessen. Ich habe mal eins vorbereitet, es ist ganz klein, total unformatiert, und dient nur zum Zweck, ich hoffe verschoenerungen koennt ihr selbst vornehmen. Auch hierzu folgen erklaerungen weiter unten.
<form action="datei.php" method="post">
Autor:
<input type="text" name="autor"></input>
Titel:
<input type="text" name="titel"></input>
Inhalt:
<textarea name="inhalt" cols="50" rows="20"></textarea>
Link:
<input type="text" name="link"></input>
<input type="submit" />
</form>
Alles anzeigen
Die Datei, die in action="" steht, ist die Datei, die die Daten nachher weiter zur Datenbank sendet, dazu aber gleich mehr. Hier ist method="post" angebracht, weil unter "Get" die Daten ueber die URL weitergetragen werden, und das sinnlos ist, und auch unschoen Aussieht, wenn man eine Ellenlange URL hat.
Wichtig: Die Woerter die bei input unter name="" stehen, muessen Identisch mit Spaltennamen in eurer Datenbank sein. Bitte die bezeichnungen alle klein Schreiben, da es nachher zu unschoenen Komplikationen kommen kann.
Jetzt brauchen wir noch die oben angesprochene "datei.php".
Was muss in der Datei enthalten sein?
Sie muss zur verbindung zur Datenbank aufbauen
Sie muss die Daten verarbeiten koennen
Sie muss die Daten zur Datenbank senden koennen
Das hoert sich zunaechst schwerer an, als es wirklich ist.
Auch hier wieder eine Beispiel-Datei. Erklaerungen wieder unten
datei.php
<? include('config.php');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
if ($sql = "
INSERT INTO
`news`
(
`autor`,
`titel`,
`inhalt`,
`link`,
`datum`
)
VALUES
(
'{$_POST['autor']}',
'{$_POST['titel']}',
'{$_POST['inhalt']}',
'{$_POST['link']}',
NOW()
)" )
{
echo "Die News wurden erfolgreich eingetragen
";
}
else
{
echo "Fehler beim eintragen der News";
}
mysql_query($sql);
?>
Alles anzeigen
Oben bauen wir eine Verbindung zur Datenbank auf mit dem INSERT INTO befehl sagen wir, in welche Tabelle geschrieben werden soll. Wenn ihr aufgepasst habt, sollten euch die Restlichen Zeilen auch bekannt vorkommen. Das NOW() schickt die Aktuelle Uhrzeit mit Datum mit.
Die echo-befehle sind recht eindeutig.
Das groebste ist geschafft. Wenn alles glatt laeuft, sollten die Datenbank jetzt friedlich in der Datenbank ruhen.
Jetzt muessen wir die Daten wieder auslesen. Auch dazu gibt es ein Script, wie zu erwarten
Was muss das Script koennen?
Es muss zur Datenbank verbindung aufbauen
Es muss die Daten auslesen
Es muss die Daten Ausgeben, wenn moeglich Formatiert
Hier wieder erst das script, dann die beschreibung:
news.php
<? include('config.php'); ?>
<link rel="stylesheet" href="style.css" type="text/css">
<? @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$sql = "
SELECT
*
FROM
`news`
ORDER BY
Datum DESC
";
$ausgabe = mysql_query($sql);
while($row = mysql_fetch_array($ausgabe)) {
?>
<div class="newseintrag">
<center><font size="4"><div class="Titel">
<?=$row['titel']?></div></center></font>
<div class="inhalt" >
<?=nl2br($row['inhalt'])?></div>
<div class="Autor" >
<div class="Link">[b]By:[/b]<?=$row['autor']?>
[b]Link:[/b][url='<?=$row['link']?>']Quelle[/url] [url='news/del.php?del&action=delete&news_id=<?=$row['id']?>']Delete[/url]</div>
</div></div>
<? } ?>
Alles anzeigen
Das script ist schon etwas laenger, und Bedarf auch etwas mehr obacht.
Der obere Teil ist bekannt.
Mit dem "SELECT" befehl, waehlen wir die Tabelle aus. Mit FROM sagen wir
welche Spalten wir ansprechen wollen. In diesem falle steht da *. Das * steht fuer alle Spalten, die es in dieser Tabelle gibt, es koennte auch nur
Zitat`inhalt`,
`titel`,
`autor`
stehen.
Das ORDER BY gibt aus, in welcher "Reihenfolge" die Daten ausgegeben werden sollen. Das wohl am Sinnvollsten ist
datum DESC da es die Daten nach dem Datum des Eintrags ausgibt, die Neuste News zuerst.
Die Formation koennt ihr auch mit Tabellen handhaben, ich habe hier nur fuer mich CSS gewaehlt. Bei der Formation braucht ihr keine Angst davor haben, das ihr den HTML text mit dem Php-gefasel vermischt, denn der PHP-code wurde quasi "abgeklemmt"
Ihr fuegt die Daten aus der Datenbank mit dem Folgenden Code ein:
Zitat<?=$row['titel']?>
Da wo Titel steht, kommt die Gewuenschte Spalte hin. Das nl2br() sorgt dafuer, das
ihr Automatisch Zeilenumbrueche bekommt.
Dieses Script hat noch ein kleines Extra. Ihr koennt es benutzen, oder es lassen. Ihr koennt auf Knopfdruck eure Daten aus der Datenbank wieder Löschen. Da gebe ich euch aber nur den Code, mit einer Kleinen erklaerung, da es eigentlich Klar sein duerfte.
Es handelt sich hier um
Zitat
Spaetestens jetzt stellt es sich als Heldentat raus, das ihr die Spalten alle klein geschrieben habt, da euch diese Funktion sonst nicht zur Verfuegung stehen wuerde. Ich habe die datei del.php genannt. Hier der Code
del.php
<? include('config.php'); ?>
<? @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
if ($_GET['action'] == 'delete') {
mysql_query("
DELETE FROM
`news`
WHERE
`id` = '{$_GET['news_id']}'
LIMIT 1
");
echo "<script type=\"text/javascript\">window.location.href='index.php';</script>";
}
?>
Alles anzeigen
Danke an `phore` der diese Funktion fuer mich schrieb
Das wars mit der Kunst. Ihr koennt dieses Script acuh fuer ein log-in Teil nehmen, zumindest die Anmelde-Formulare, und die datei.php jedoch muesst ihr diese fuer euch abaendern, wer will schon Anstatt Kennwort - Autor stehen haben?!?
Ich hoffe ich habe es verstaendlich geschrieben, und ihr wisst jetzt, wie ihr es angehen sollt.
Dieses Script hier dient nur als Hilfe, wenn etwas nicht klappt, macht nich mich dafuer Schuldig, sondern versucht erstmal selbst den Fehler rauszusuchen. Und fuer Schaeden uebernehme ich keinerlei Haftung.
Wenn irgendwelche Fragen auftreten, oder noch Unklarheiten sind, stehe ich gerne mit Tat unr Rat zur verfuegung.
Mit Freundlichen Gruessen
Sibbi
//Edit
Ich habe vergissen die .css datei mitzu schicken. Dann habt ihr schonmal eine Vorstellung, wie es nachher alles aussieht.
Hier ist sie:
style.css
.newseintrag > .titel {
background-color: #EEEEFF;
padding: 2px;
float: left;
border-top: 1px solid darkgray;
}
.newseintrag > .inhalt {
background-color: #EEEEFF;
padding: 4px;
float: right;
border-left: 1px solid darkgray;
}
.newseintrag > .autor {
padding: 2px;
clear: both;
border-top: 1px solid darkgray;
}
.newseintrag > .link {
padding: 2px;
clear: both;
border-top: 1px solid dargray;
Alles anzeigen