Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: AnnoZone Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Tom Sailor

Schatzjäger

  • »Tom Sailor« ist der Autor dieses Themas

Beiträge: 1 102

Registrierungsdatum: 7. Juni 2003

  • Nachricht senden

1

Montag, 14. Dezember 2009, 12:24

PHP-Hilfe dringend!!!!

Ich habe ein großes Problem. Ich soll für die Uni für einen Webdevelopmentkurs eine Shoutbox programmieren. Wir haben auch eine Beispiellösung (allerdings für ein einfachereres Konstrukt). PHP haben wir auch des längeren besprochen, es ist aber keiner so wirklich durchgestiegen. Die HTML-Seite zu erstellen war ja noch einfach:

http://www.spikydesign.net/webdevelopment/index.php

Dazu habe ich schon mal eine Datenbank 'project2db' mit der Tabelle 'shoutbox' angelegt:
http://www.spikydesign.net/webdevelopment/mysqldatenbank.jpg

Nun müssen die Daten mittels PHP in der Datenbank gespeichert und auf der Seite wieder ausgegeben werden. Die Sprache soll mit einem versteckten Fedl abgefragt werden. Ausgegeben werden soll sie also nicht.

Ich bin vollkommen verzweifelt, wo ich anfangen soll ;( Könnte gerade einfach mal heulen. Wenn mir jemand eine Musterlösung für mein Problem geben könnte wäre ich sehr dankbar. Ich will dann natürlich Versuchen, das ganze zu verstehen. Im Moment sehe ich aber den Wald vor lauter Bäumen nicht. Und dann auch noch Radio-Buttons und Drop-Down :(

Das hier ist der Samplecode, den wir bekommen haben:

Zitat


<?php

// IMPORTANT: Before you can run this script, you need to create the table 'shoutbox' in PHPMyAdmin
// first, according to the instructions provided on the Practical sheet.

// The following code is only executed if the form has been submitted (i.e. if the array $_POST contains values)
if (!empty($_POST)) {

// (1) Assign submitted form field values to variables
$form_nick = $_POST['nickname'];
$form_shout = $_POST['message'];

// (2) Create timestamp and date
$timestamp = time();
$dtime = date( 'Y-m-d H:i:s', $timestamp );

// (3) Connect to the database server
$server = 'localhost';
$username = 'root'; // name of the user owning the server process
$password = '';
$db_id = @mysql_connect($server, $username, $password) or die('Connection failed!');

// (4) Select the database
$dbname = 'practicalsdb';
@mysql_select_db($dbname, $db_id) or die("Can't use $dbname!");

// (5) INSERT the submitted values
// Sample: INSERT INTO `shoutbox` (`ID`, `Nickname`, `Shout`, `Time`) VALUES (NULL, 'Helen', 'test 123', '2009-12-07 10:33:46');
$query = "INSERT INTO shoutbox (`Nickname`, `Shout`, `Time`) VALUES ('" . $form_nick . "', '" . $form_shout . "' ,'" . $dtime . "')";
$result = @mysql_query($query, $db_id) or die('Invalid query: ' . mysql_error());
$inserted_id = mysql_insert_id($db_id);

// (6) Close the database server connection
@mysql_close($db_id) or die("Can't disconnect!");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Practical: The Shoutbox</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>
<body>
<h1>Web Development - Practical 7 - "The Shoutbox"</h1>
<div style="border: medium none ; position: relative;" id="text_container">

<!-- Top Outer Corners -->
<div style="margin: -10px -10px 0px;">
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 6px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 4px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 3px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 2px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
</div>

<!-- Inner Part of the rounded rectangle -->
<div style="border: medium none ; position: relative;" id="demo">
<div id="shoutbox">

<div id="shoutbox-list">
<?php

// This code retrieves and displays the entries in the 'shoutbox' table.

// (1) Connect to the database server
$server = 'localhost';
$username = 'root'; // name of the user owning the server process
$password = '';
$db_id = @mysql_connect($server, $username, $password) or die('Connection failed!');

// (2) Select the database
$dbname = 'practicalsdb';
@mysql_select_db($dbname, $db_id) or die("Can't use $dbname!");

// (3) Select the entries from the shoutbox table
$query = 'SELECT * FROM shoutbox';
$result = @mysql_query($query, $db_id) or die('Invalid query: ' . mysql_error());

// (4) Loop over the result set
$num_entries = mysql_num_rows($result);

for ($i = 0; $i < $num_entries; $i++) {
$row = mysql_fetch_array($result, MYSQL_ASSOC);

// Available fields: `ID`, `Nickname`, `Shout`, `Time`

?>
<div class="jcomments-items" id="jcomments-item-<?php echo $i;?>">
<div class="jcomments-item-postno" ><?php echo ($i+1); ?></div>
<div class="jcomments-item-intro" ><?php echo $row['Nickname']; ?>
<div style="float: right;"><?php echo $row['Time'];?></div>
</div>
<span class="jcomments-item-message"><?php echo $row['Shout'];?></span><br /><br />
</div>
<?php
}
?>
</div>

<!-- Form section -->
<form id="shoutbox-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Nick: <input type="text" name="nickname" /> Shout: <input type="text" name="message" />
<input type="submit" value="Submit" />
</form>
</div>
</div>

<!-- Bottom Outer Corners -->
<div style="margin: 0pt; padding: 0pt; position: absolute; left: 0pt; bottom: 0pt; width: 100%;">
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 2px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 3px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 4px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 6px; overflow: hidden; height: 1px; background-color: transparent;"></div>
</div>

</div>
</body>
</html>

KillingSoftly

Landratte

Beiträge: 1

Registrierungsdatum: 19. August 2009

  • Nachricht senden

2

Montag, 14. Dezember 2009, 18:10

Hier ist ein gutes PHP-Tutorial

http://tut.php-quake.net/de/

Das Prinzip ist aber relativ einfach: Wenn man ein Formular absendet, wird die PHP-Seite wieder aufgerufen. Dort gibt es dann die Variablen $_POST bzw. $_GET je nach dem was du beim Formular als "method" angegeben hast. Mit $_POST["formular_feld_name"] kannst du dann auf die Variablen zugreifen und sie in der Datenbank speichern, wie das geht steht ja in dem example-skript.
Für das große Textfeld musst du dann einfach alle Einträge aus der Datenbank auslesen und darein schreiben.

EDIT: eigentlich steht das aber auch alles schon in dem skript drin...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »KillingSoftly« (14. Dezember 2009, 18:13)


Tom Sailor

Schatzjäger

  • »Tom Sailor« ist der Autor dieses Themas

Beiträge: 1 102

Registrierungsdatum: 7. Juni 2003

  • Nachricht senden

3

Mittwoch, 16. Dezember 2009, 12:53

Danke, ich habe eine einigermaßen ansprechende Shoutbox zusammengeschustert.
Eine Frage hätte ich aber noch: Wie exportiere ich eine MSQL-Datenbank, sodass jemand anders (der Tutor) sie dann bei sich im PHPMyAdmin unter Xampp wieder funktionstüchtig hat. Geht das, wenn ich sie als .txt speichere oder wie? Ich steige bei der Exportfunktion nicht so ganz durch... Danke! :wedel:
  Tom :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tom Sailor« (16. Dezember 2009, 12:54)


Nayo

Meereskenner

Beiträge: 812

Registrierungsdatum: 1. November 2006

  • Nachricht senden

4

Mittwoch, 16. Dezember 2009, 14:14

php-resource.de ist eine sehr gute community für PHP. Ich denke da findest du mehr Hilfe als hier.
  Zuviele Anno Installationen auf deinem Rechner? Anno Installationsmanager schafft Ordnung :)

IAAM 1404 funktioniert nicht? IAAM Testtool verrät uns ob etwas nicht richtig installiert ist.

nils

Frisch Angeheuert

Beiträge: 2

Registrierungsdatum: 13. Februar 2007

  • Nachricht senden

5

Mittwoch, 16. Dezember 2009, 18:00

wenn du mit phpmyadmin arbeitest einfach datenbank auswählen auf Exportiren und dort dann SQL auswählen. Das was du Ausgegeben bekommst kannst du mit dem Texteditor als txt speichern. (In der Datei sollten viele SQL komandos stehen.

Nils
  Nils

Karotte

Ausguck

Beiträge: 85

Registrierungsdatum: 28. März 2008

  • Nachricht senden

6

Sonntag, 20. Dezember 2009, 18:57

Falls du PHP noch nicht so ganz verstehst, ich hab hier mal die Befehle kommentiert:

Ein paar Sachen vorraus:

Alles, was mit $_POST übermittelt wird, sieht man nicht in der Adresse-Leiste, bei $_GET sieht man dies alles (mit was es übermittelt werden kann , kann man in <form> festlegen (<form ... method="get">, <form ... method="post">).

Das @ vor Befehlen verhindert eine Fehlermeldung.

Falls du das alles schon weißt, ist der Beitrag hier sinnlos und sollte gelöscht werden.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php

//empty() prüft, ob die Variable leer ist, das ! ändert true in false und false in true
if (!empty($_POST)) {//Wenn es Daten mit $_POST übermittelt wurden, dann

//Dürfte klar sein
$form_nick = $_POST['nickname'];
$form_shout = $_POST['message'];

//time() ist die aktuelle Zeit in Sekunden seit 1970
$timestamp = time();
//Die Zeit wird in das Format Jahr-Monat-Tag Stunde:Minute:Sekunde geändert
$dtime = date( 'Y-m-d H:i:s', $timestamp );

//Serverdaten
$server = 'localhost';
$username = 'root'; // name of the user owning the server process
$password = '';

//Verbindung wird aufgebaut, wenn es nicht möglich ist, wird das Script beenden (die) und der Fehlertext wird ausgegeben.
$db_id = @mysql_connect($server, $username, $password) or die('Connection failed!');

//Verbindung zur Datenbank wird aufgebaut, der 2te Parameter in mysql_select_db kann weggelassen werden
$dbname = 'practicalsdb';
@mysql_select_db($dbname, $db_id) or die("Can't use $dbname!");

//Daten werden eingetragen in die Tabelle shoutbox, verstehst du den SQL-Teil, oder soll ich den auch auskommentieren?
$query = "INSERT INTO shoutbox (`Nickname`, `Shout`, `Time`) VALUES ('" . $form_nick . "', '" . $form_shout . "' ,'" . $dtime . "')";
$result = @mysql_query($query, $db_id) or die('Invalid query: ' . mysql_error());

//Die eingetragene Id wird ermittelt
$inserted_id = mysql_insert_id($db_id);

//Verbindung wird beendet
@mysql_close($db_id) or die("Can't disconnect!");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Practical: The Shoutbox</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>
<body>
<h1>Web Development - Practical 7 - "The Shoutbox"</h1>
<div style="border: medium none ; position: relative;" id="text_container">

<!-- Top Outer Corners -->
<div style="margin: -10px -10px 0px;">
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 6px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 4px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 3px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 2px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
</div>

<!-- Inner Part of the rounded rectangle -->
<div style="border: medium none ; position: relative;" id="demo">
<div id="shoutbox">

<div id="shoutbox-list">
<?php

//Verbindung wird aufgebaut
$server = 'localhost';
$username = 'root'; // name of the user owning the server process
$password = '';
$db_id = @mysql_connect($server, $username, $password) or die('Connection failed!');

//Datenbank wird ausgewählt
$dbname = 'practicalsdb';
@mysql_select_db($dbname, $db_id) or die("Can't use $dbname!");

//Alle Daten in der Tabelle shoutbox werden ausgewählt
$query = 'SELECT * FROM shoutbox';
$result = @mysql_query($query, $db_id) or die('Invalid query: ' . mysql_error());

//Anzahl der Datensätze wird ermittelt
$num_entries = mysql_num_rows($result);

//Alle Datensätze werden abgearbeitet
for ($i = 0; $i < $num_entries; $i++) {
$row = mysql_fetch_array($result, MYSQL_ASSOC);

?>//Felder werden erstellt
<div class="jcomments-items" id="jcomments-item-<?php echo $i;?>">
<div class="jcomments-item-postno" ><?php echo ($i+1); ?></div>
<div class="jcomments-item-intro" ><?php echo $row['Nickname']; ?>
<div style="float: right;"><?php echo $row['Time'];?></div>
</div>
<span class="jcomments-item-message"><?php echo $row['Shout'];?></span><br /><br />
</div>
<?php
}
?>
</div>

//$_SERVER['PHP_SELF']; ist die Adresse + Dateiname
<!-- Form section -->
<form id="shoutbox-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Nick: <input type="text" name="nickname" /> Shout: <input type="text" name="message" />
<input type="submit" value="Submit" />
</form>
</div>
</div>

<!-- Bottom Outer Corners -->
<div style="margin: 0pt; padding: 0pt; position: absolute; left: 0pt; bottom: 0pt; width: 100%;">
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 0px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 1px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 2px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 3px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 4px; overflow: hidden; height: 1px; background-color: transparent;"></div>
<div style="border-style: none solid; border-color: rgb(222, 238, 246); border-width: 0pt 6px; overflow: hidden; height: 1px; background-color: transparent;"></div>
</div>

</div>
</body>
</html>