Webdesign in Siegen

[KnowHow] Wir programmieren eine Shoutbox

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

[KnowHow] Wir programmieren eine Shoutbox

Beitragvon Malte am 14.04.2005, 20:23

Vorüberlegung:
Ein User kommt auf ihre Website und soll sich ähnlich wie in einem Gästebuch in eine Shoutbox eintragen. Dafür sind ihm die Felder "Name" und "Nachricht" zur Verfügung gestellt, mehr brauchen wir nicht. Benötigt wird erstmal ein Grundstein in reinem html:

Code: Alles auswählen

<html>
<head>
<title>Shoutbox</title>
</head>
<body>
<form action="write.php" method=post>
<center>
<h1>
Eintragen:
</h1>
<br />
<br />
Name:
<br />
<input type=text name="name"><br /><br />
Message:
<br />
<textarea rows=10 cols=70 name="msg"></textarea>
<br /><br />
<input type=submit>
</form>
</center>
<br />
<center>
<h1>
Shouts:
</h1>
<br />
<br />
Hier stehen nachher die shouts
</body>
</html>


Wie manche schon gesehen haben, nutzen wir die datei "make.php" zum eintragen der shouts. Kümmern wir uns also um diese:
Wir benutzen MySQL.

Code: Alles auswählen
<?
  $host = "localhost";
  $user = "root";
  $pass = "";
  $database = "test";  //DATENBANK AUSWÄHLEN!!1
  $dz = mysql_connect($host, $user, $pass);
  mysql_select_db($database, $dz);
?>


Diesen Code speichern wir in der Datei "mysql.inc"

Code: Alles auswählen
CREATE TABLE `shout` (
  `id` int(7) NOT NULL auto_increment,
  `name` mediumtext NOT NULL,
  `message` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;


So, damit haben wir alles, was wir für MySQL benötigen. Kommen wir zum eintragen-teil:

Code: Alles auswählen
<?
$name = $_POST['name'];
$msg = $_POST['msg'];

If (empty($name)) {
die("Der Name fehlt!!!");
}
If (empty($msg)) {
die("Die Message fehlt!!!");
}

include("mysql.inc");

$query = "INSERT INTO `shout` ( `name` , `message` ) VALUES ( '$name', '$msg' )";
$do = mysql_query($query);

header("Location: index.php?make=right");
?>


Nachdem in die Tabelle geschrieben wurde, wird der Benutzer zu Index.php weitergeleitet, wobei der Paramenter "make" auf "right" gesetzt
wurde. Also müssen wir index.php ergänzen:

Code: Alles auswählen
<?
$make = $_GET['make'];
If ($make == "right") {
print "<font color=\"red\"><h1>Shout erfolgreich eingetragen!</h1></font><br /><br />";
}
include("mysql.inc");
?>


Dieser Teil gibt ganz bequem nur eine erfolgsmeldung aus, wenn der User erfolgreich eine Message eingetragen hat. Um die Messages auszulesen, benutzen wir das SELECT-Kommando:

Code: Alles auswählen
<?
$query = "SELECT `name`, `message`, `id` FROM `shout` ORDER BY `id`";
$sql = mysql_query($query);
while ($ds = mysql_fetch_object($sql)) {
$name = $ds->name;
$msg = $ds->message;
$id = $ds->id;

print "<table border=\"1\"><tr><td>Posted by: $name</td></tr><tr><td>Message:<br />$msg</td></tr></table><br /><hr />";

}
?>


Das ganze wird ganz bequem in tabellen ausgegeben.

Fertig sehen die Dateien also so aus:

index.php
Code: Alles auswählen
<html>
<head>
<title>Shoutbox</title>
</head>
<body>
<?
$make = $_GET['make'];
If ($make == "right") {
print "<font color=\"red\"><h1>Shout erfolgreich eingetragen!</h1></font><br /><br />";
}
include("mysql.inc");
?>
<form action="write.php" method=post>
<center>
<h1>
Eintragen:
</h1>
<br />
<br />
Name:
<br />
<input type=text name="name"><br /><br />
Message:
<br />
<textarea rows=10 cols=70 name="msg"></textarea>
<br /><br />
<input type=submit>
</form>
</center>
<br />
<center>
<h1>
Shouts:
</h1>
<br />
<br />
<?
$query = "SELECT `name`, `message`, `id` FROM `shout` ORDER BY `id`";
$sql = mysql_query($query);
while ($ds = mysql_fetch_object($sql)) {
$name = $ds->name;
$msg = $ds->message;
$id = $ds->id;

print "<table border=\"1\"><tr><td>Posted by: $name</td></tr><tr><td>Message:<br />$msg</td></tr></table><br /><hr />";

}
?>
</body>
</html>



make.php
Code: Alles auswählen
<?
$name = $_POST['name'];
$msg = $_POST['msg'];

If (empty($name)) {
die("Der Name fehlt!!!");
}
If (empty($msg)) {
die("Die Message fehlt!!!");
}

include("mysql.inc");

$query = "INSERT INTO `shout` ( `name` , `message` ) VALUES ( '$name', '$msg' )";
$do = mysql_query($query);

header("Location: index.php?make=right");
?>
[x] <<< Nail here for new Monitor
Benutzeravatar
Malte
Mitglied
 
Beiträge: 365
Registriert: 01.04.2005, 10:27
Wohnort: Zuhause

Beitragvon Daniel am 14.04.2005, 20:54

Hallo Snare!

Hast Dir ja richtig Mühe gemacht!

Ich als ASPler verstehe zwar einiges, manche Codeschnipsel sind mir aber leider nicht so ganz klar.

Vor allem hab ich damit zu kämpfen:

Code: Alles auswählen
while ($ds = mysql_fetch_object($sql)) {
$name = $ds->name;
$msg = $ds->message;
$id = $ds->id;

print "<table border=\"1\"><tr><td>Posted by: $name</td></tr><tr><td>Message:<br />$msg</td></tr></table><br /><hr />";

}


Okay, eine while-Schleife kenn ich, auch den print Befehlt, aber was genau stell ich mit dem "->" an, bzw. was hat der für eine Bedeutung. Bzw. ich versuchs mal zu erklären:

So wie ich das versteh ist wird die Variable $d mit den Werten aus der Datenbank gefüllt, Zeile für Zeile, dafür haben wir ja die while-Schleife. Die Variable scheint mir dabei eine Art Array zu sein, sprich sie wird mit mehr als nur einem Wert gefüllt, nämlich name, message und id, welche dann seperat in entsprechende Variablen gesetzt werden und diese werden dann ausgegeben.

Hab ich das in etwa richtig verstanden?

Ansonsten könnte man sich noch über den HTML Code streiten, aber das gehört ja hier nicht rein ;)

Gruss Daniel
Benutzeravatar
Daniel
Mitglied
 
Beiträge: 418
Registriert: 13.02.2005, 17:46
Wohnort: Cambridge, UK

Beitragvon Rene am 14.04.2005, 21:28

Hallo Daniel

Wenn du etwas aus ner MYSQL Db liest, musst du das ja irgentwie verarbeiten.
Eine Möglichkeit wäre ein Array:
mysql_fetch_array();

Der Tag heißt hier : $row[name]

Jetzt kann man das aber auch mit

mysql_fetch_objekt machen
der Tag wäre : $row->name

Hoffe du hast das soweit verstanden

@ Snare:
Nettes Tutorials.
Fehlen vielleicht paar Erweiterungen und man könnte vielleicht das ein oder ander besser machen wenn du willst könnt ich mich mit dir mal darüber im ICQ unterhalten.
Will dir ja nicht deine ganzen Tuts weg nehmen.
Denke da kannst du auch noch einiges bei lernen +g*

LG

lg
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Daniel am 14.04.2005, 23:27

Danke Rene,

hätt ich auch sehen können, dass es um ein Objekt geht. Soweit ich das bis jetzt kenne scheint es diese Möglichkeit bei ASP jedenfalls nicht zu geben.

Gibts es einen Unterschied zwischen der Array und der Objekt-Variante? Bzw. Vor- und Nachteile?

Oder auch, was ist das besondere an der Objektvariante?

Ein nettes Tutorial zu Objekten wäre übrigens auch wünschenswert von meiner Seite :)

Danke Daniel
Benutzeravatar
Daniel
Mitglied
 
Beiträge: 418
Registriert: 13.02.2005, 17:46
Wohnort: Cambridge, UK

Beitragvon Rene am 15.04.2005, 17:27

Oh Daniel so genau weis ich die Vor und Nachteile jetzt auch nicht *g*
Aber ich werd mich schlau machen was genau der Unterschied ist.

LG
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Daniel am 15.04.2005, 19:10

Hallo Rene,

ist jetzt nicht so wichtig, hab schon bei ASP gemerkt, dass man manche Sachen auf mehrere Arten lösen kann, aber die Unterschiede nur minimal sind bzw. kaum zu spüren.

Mein nächstes Projekt wird höchstwahrscheinlich was mit php werden, deswegen mein Interesse jetzt an solchen Fragestellungen. Denke/hoffe aber, dass ich das mit einem OpenSource CMS hinbekomme und ich nicht so viel per Hand machen muss wie jetzt bei SPARC mit ASP.

Gruß Daniel
Benutzeravatar
Daniel
Mitglied
 
Beiträge: 418
Registriert: 13.02.2005, 17:46
Wohnort: Cambridge, UK

Beitragvon Rene am 15.04.2005, 19:30

Also Daniel wenn du an nem richtigen System intressiert bist dann meld dich mal.
=)
Suche ja auch paar Aufträge muss mein PC ja auch Finanzzieren.
LG
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Daniel am 15.04.2005, 19:51

Würd ich ja schon machen,

ist nur irgendwie nicht so ganz möglich, denn erstens mach ich mein nächstes Projekt ehrenamtlich für http://www.dhiverse.org.uk und zweitens bin ich ja hier in UK und damit Du mir Rechnungen schreiben könntest und ich die bezahlen kann müssten wir schon beide eine Umsatzsteuer ID (oder sowas in die Richtung) haben, damit man dann auch über die Grenzen hinweg handeln kann, ist mir nur etwas zu kompliziert das ganze. Wenn ich dann hier mal mehr Aufträge an Land zieh mach ich das vielleicht, aber für ein echtes Projekt (SPARC) lohnt sich das nicht.

Das mit dhiverse hat auch Zeit und eventuell kommen da noch mehr Leute zum Team dazu, eine die den Content macht haben wir schon.

Gruß Daniel
Benutzeravatar
Daniel
Mitglied
 
Beiträge: 418
Registriert: 13.02.2005, 17:46
Wohnort: Cambridge, UK

Beitragvon Rene am 15.04.2005, 23:46

Schöne projekte Unterstütz ich vielleicht =)
Das mit den Aufträgen können wir ja dann mal bequatschen wenns soweit ist.
Hab auch grad eine WebdesigN Firma an der Angel die an meinen "Fähigkeiten" intressiert ist.
Mal sehen was die mir so anbieten.

LG
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Daniel am 15.04.2005, 23:48

:thumbsup:

Dann mal viel Erfolg!

[/offtopic]

P.S. Wegen dem Projekt dann, ich melde mich dann eh im Forum wenn ich Probleme mit was bekomm, mach das auch nur damit ich noch ein paar Sachen dazu lern.

Gruss Daniel
Benutzeravatar
Daniel
Mitglied
 
Beiträge: 418
Registriert: 13.02.2005, 17:46
Wohnort: Cambridge, UK

Re: [KnowHow] Wir programmieren eine Shoutbox

Beitragvon Pascal am 19.10.2005, 12:50

Malte hat geschrieben:
Code: Alles auswählen

<html>
<head>
<title>Shoutbox</title>
</head>
<body>
<form action="write.php" method=post>
<center>
<h1>
Eintragen:
</h1>
<br />
<br />
Name:
<br />
<input type=text name="name"><br /><br />
Message:
<br />
<textarea rows=10 cols=70 name="msg"></textarea>
<br /><br />
<input type=submit>
</form>
</center>
<br />
<center>
<h1>
Shouts:
</h1>
<br />
<br />
Hier stehen nachher die shouts
</body>
</html>


Wie manche schon gesehen haben, nutzen wir die datei "make.php" zum eintragen der shouts.


Also ich glaub ich bin heute ein bisschen schwer von Begriff aber warum schreibst du in dem Tut das wir die datei"make.php" für die SHouts nutzen? oO wir haben doch garkeine make.php oO Ausserdem weiss ich nicht wie und wo ich die einzelnen Codeteile speichern soll..... Bitte helft mir ich muss hier auffer Firma PHP lernen damit ich den Shop weitermachen kann -.-

MFG Pascal
Nobadi is pörfäkt!

Bild
Benutzeravatar
Pascal
Mitglied
 
Beiträge: 413
Registriert: 04.01.2005, 02:22
Wohnort: nähe Hamburg

Beitragvon Rene am 19.10.2005, 13:32

So jetzt schaust mal nochmal das Tutorial an.
Ganz am Schluss macht man die make.php.

Was musst den lernen bzw. was willst den machen?
Bild
Rene
Mitglied
 
Beiträge: 1188
Registriert: 28.02.2005, 20:10
Wohnort: nähe Ravensburg

Beitragvon Pascal am 19.10.2005, 13:48

Ach ich muss nen Template für nen Shop machen und damit ich die Boxen und Einträge ändern und umschreiben kann muss ich PHP können -.-

MFG Pascal
Nobadi is pörfäkt!

Bild
Benutzeravatar
Pascal
Mitglied
 
Beiträge: 413
Registriert: 04.01.2005, 02:22
Wohnort: nähe Hamburg


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast