Voraussetzungen:
Um dieses Script gut zu verstehen sind HTML- und anfängliche PHP-Kentnisse erforderlich, des weiteren sind MySql und anfängliche JavaScript Kentnisse hilfreich.
Für dieses Script wird natürlich Webspace mit php Unterstützung
und eine sql Datenbank benötigt, dies bekommt man ohne Werbung, mit unlimeted Webspace, unlimeted Traffic und einer 2mb MySqldatenbank auf http://funpic.de und http://ohost.de vollkommen umsonst.
Falls du nur eine MySql Datenbank benötigst bekommst du diese auf http://freesql.org(Hier werde leider ab und zu die Dantenbanken geleert).
Sqltabelle:
Öffne jetzt phpmyadmin und wähle eine Datenbank im linken Frame aus, sollte noch keine vorhanden sein erstelle dir auf der Starseite eine, bzw. bei Funpic und Ohost musst du sie erst im Hauptmenü Aktiveren.
Gehe in den sql Bereich und gebe folgenden Code in dem Eingabefenster ein:
CREATE TABLE gb (
id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
mail VARCHAR(50) NOT NULL,
hp VARCHAR(50) NOT NULL,
datum VARCHAR(15) NOT NULL,
text TEXT NOT NULL
);
"CREATE TABLE gb" Erzeugt eine Tabelle mit Namen gb.
"id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY" Das erste Tabelenfeld "id" wird erzeugt, INT ist ein Zahlenfeld was hier maximal 4 Zeichen pro Eintrag haben darf
"NOT NULL" sorgt dafür, dass wenn das Feld leer bleibt, nicht automatisch als Inhalt NULL eingetragen wird.
"AUTO_INCREMENT" zählt bei jedem Eintrag automatisch um einen höher, also wird beim ersten Eintrag in diesem Feld 1 stehen im zweiten 2 usw. Um aber diesen befehl ausführen zu können muss id als "PRIMARY KEY" definiert sein.
"name VARCHAR(20)" hier wird das Textfeld name definiert das maximal 20 Zeichen haben darf.
"text TEXT" ein TEXTfeld ist ein Feld was bis zu 65535 Zeichen enthalten kann.
Anfang:
<?php
define("SERVER","server");
define("LOGIN","user");
define("PASS","passwort");
define("DATABASE","datenbank");
@mysql_connect(SERVER,LOGIN,PASS) or die("Error: ". mysql_error() ."");
@mysql_select_db(DATABASE) or die("Error: ". mysql_error() ."");
?>
Wobei server, user, passwort und datenbank noch mit den eigenen Daten angepasst werden müssen!
Jetzt zu gb.php
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="javascript" type="text/javascript">
function smile(smile)
{
window.document.form.text.value = window.document.form.text.value + " " + smile + " ";
}
</script>
<!-
in dem Script wird über window.document.form.text.value die Eingabe im textarea angesprochen und um die Variable smile erweitert.
-->
</head>
<body>
<a href="#" onclick="smile('Lachen')"><img src="smile1.gif"></a>
<a href="#" onclick="smile('Smilie')"><img src="smile2.gif"></a>
<!--
über diese links wird die Funktion smile aus dem Java Script oben ausgeführt und über die klammern wird der Java Script Variable 'smile' auf den enthaltenden Wert gesetzt.
-->
<form action="<? echo $_SERVER[PHP_SELF]; ?>" method="POST" name="form">
<table >
<tr><td>
Dein Name:</td><td><input type="text" name="name"></td></tr>
<tr><td>
Deine E-mail:</td><td><input type="text" name="mail"></td></tr>
<tr><td>
Deine Homepage:</td><td><input type="text" name="hp"></td></tr>
<tr><td>
Dein Text:</td><td><textarea name="text" cols="50" rows="5"></textarea></td></tr>
<tr><td><input type="submit"></td></tr>
</table>
</form>
<!--
Das Eingabeformular wird erzeugt und "<? echo $_SERVER[PHP_SELF]; ?>" im Parameter action gibt den Namen des Dokuments zurück.
-->
<?php
include ('conect.php');
/*hier wird über include die Datenbankverbindung erzeugt*/
if(!empty($_POST["name"]) && !empty($_POST["mail"]) && !empty($_POST["text"]))
/*Es wird geprüft ob in dem Formular in den Eingabefeldern name, mail und text etwas eingegeben und abgesendet wurde.*/
{
$datum=date("d.m.y H:i");
/*
Die Variable $datum wird mit dem aktuellem Datum belegt.
*/
$insert="INSERT INTO gb (name,mail,hp,datum,text) values ('$_POST[name]','$_POST[mail]','$_POST[hp]','$datum','$_POST[text]')";
/*
Die Variable $insert wird mit mit dem sql Befehl belegt INSERT INTO trägt immer etwas ein hier in die Tabelle gb.
Das erste Klammerpaar ist die Reinfolge in der etwas eingetragen werden soll und das zweite hinter values was eingetragen werden soll(das Feld id wird nicht erwähnt weil es ja automatisch belegt wird und somit hier unwichtig ist).
*/
If(mysql_query($insert)){
/*
mysql_query($insert); gibt den sql befehl an die Datenbank weiter und hier wird in der if Abfrage geprüft ob dies geklappt hat.
*/
echo "<p> Daten wurden eingetragen!</p>";
/*
gibt die if Abfrage true zurück wird dieser text ausgegeben.
*/
}
else
{
echo "<p>Daten wurden NICHT Eingetragen</p>";
/* gibt die if Abfrage false zurück wird dieser text ausgegeben */
}
}
/* Die Daten wurden eingetragen jetzt sollen sie ausgegeben werden */
$select="SELECT * FROM gb ORDER BY 'id' DESC";
/*
Die Variable $select wird wieder mit dem sql Befehl belegt.
'SELECT * FROM gb' bedeutet suche den Inhalt aller Tabellenfelder,
man könnte auch schreiben 'SELECT name, text FROM gb' um nur den Inhalt der beiden Felder name und text zu bekommen.
'ORDER BY id DESC' ordnet die einträge nach der id und beginnt dabei beim kleinsten Wert.
*/
$query=mysql_query($select);
/*
Diesmal wird mysql_query nur in der Variable $query gespeichert da man den Inhalt noch benötigt.
*/
$eintraege=mysql_num_rows($query);
/*
mysql_num_rows($query) zählt den die Einträge in der Sqltbelle.
Dies kann nicht über den Inhalt von id gemacht werden, denn wenn ein Eintrag gelöscht wird stimmt die Anzahl nicht mehr!
*/
echo "$eintraege";
echo "<table>";
while($row=mysql_fetch_assoc($query))
{
$text=htmlspecialchars("$row[text]");
$text=str_replace("Lachen","<img src=\"lol.lol\">",$text);
$text=str_replace("Smilie","<img src=\"lol2.lol\">",$text);
echo "<tr><td>";
echo "$row[name] ($row[mail],$row[hp])";
echo "</td></tr><tr><td>";
echo "schrieb am $row[datum] Uhr:";
echo "</td></tr><tr><td>";
echo "$ text";
echo "</td></tr>";
}
echo "</table>";
/*
Eine Schleife startet mit der Bedingung '$row=mysql_fetch_assoc($query)' jetzt kann man z.B. über $row[name] den Inhalt des Tabellenfeldes name aufrufen wobei der Inhalt nicht gleich alles auf einmal ist sondern jedes mal wenn die while neu startet der Inhalt des nächsten Eintrages gezeigt wird, also wird die wenn die Tabelle 20 Einträge hat die Schleife auch 20 mal durchlaufen.
In der whileschlefe wird als erstes die Variable $text mit 'htmlspecialchars("$row[text]")' belegt, dieser String verändert in der Variable bestimmte Zeichen z.B. '<' in < so das html Codes oder Java Scripte nicht ausgeführt werden sondern so auf der Seite angezeigt werden.
Dann wird $text 2mal überschrieben mit dem String str_replace damit wird das erste Wort in der Klammer durch das zweite im Text am der Hinten steht ersetzt.
*/
?>
</body>
</html>
So jetzt müssen nur noch die Smilies angepasst werden und eventuel die Kommentare entfernt werden.
Fertig.
221352 Besucher Insgesamt und 1 User in den letzten 30 Min.



