Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- ...:::Trainingscenter-wbb2:::... (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=75)
-- mysql (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=82)
--- Datenbank füllen (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=2048)


Geschrieben von haumi am 05.04.2012 um 19:53:

  Datenbank füllen

Weil wir ja nun nicht nur Daten eingeben und sofort anzeigen wollen haben wir heute eine bestehende Datenbank erweitert.
und zwar wie folgt:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
CREATE TABLE IF NOT EXISTS `christina` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `name` varchar(30) NOT NULL,
  `passwort` varchar(50) NOT NULL,
  `gruppe` varchar(30) NOT NULL,
  `land` varchar(20) NOT NULL,
  `sport` varchar(255) NOT NULL,
  `interessen` varchar(255) NOT NULL,
  `kommentar` text,
  `bedingung` int(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM; 

Nun sind wir in der Lage, diese Tabelle mit den Daten aus unserem Formular zu füllen.
Wie stellen wir das aber an?
Nun es gibt nicht allzuviele SQL-Befehle die wir benötigen.
Zum beschreiben, also neue Datensätze hinzufügen, verwenden wir den SQL-Befehl: "INSERT INTO"
hier müssen wir noch die Datenbank und die Tabelle angeben in die der Datensatz eingeschrieben werden soll.
INSERT INTO christina! (eigendlich muss hier noch die Datenbank angegeben werden ,
aber da in fast allen Fällen die aktuelle Datenbank schon geöffnet ist und wir uns darauf beziehen,
können wir die Datenbankbezeichnung weglassen.)
Als nächstes müssen die zu beschreibenden Felder der Tabelle aufgelistet werden.
Diese werden in runden Klammern und durch Komma getrennt angegeben: (name,passwort,gruppe,land,sport,interessen,kommentar,bedingung)
anschließend werden mit dem Befehlswort VALUES die einzuschreibenden Werte ebenfalls in runden Klammern angegeben.
VALUES ('$name','$pass','$alter','$land','$sport','$interesse','$kommentar','$bedi
ngung')
zu Beachten ist auch hier, das Zeichenketten in einfache oder doppelte Hochkommas zu setzen sind.
Die ganze SQL-Anweisung sieht denn so aus:
code:
1:
"INSERT INTO christina (name,passwort,gruppe,land,sport,interessen,kommentar,bedingung) VALUES ('$name','$pass','$alter','$land','$sport','$interesse','$kommentar','$bedingung')";

Da wir die Daten ja von unserem Formular formular.html an die php-Datei test2 schicken, so erweitern wir diese um den SQL-String, den wir in der Variablen $abfrage speichern.
code:
1:
$abfrage = "INSERT INTO christina (name,passwort,gruppe,land,sport,interessen,kommentar,bedingung) VALUES ('$name','$pass','$alter','$land','$sport','$interesse','$kommentar','$bedingung')";

Mit dem Befehl mysql_query senden wir denn diese Abfrage an den Datenbankserver und speichern das zurückgelieferte Ergebnis in der Variablen $send ab.
code:
1:
$send = mysql_query($abfrage);

War die Abfrage erfolgreich so wird true zurück geliefert und war die Abfrage nicht erfolgreich so wird false zurück geschickt-
Das nutzen wir, um (jedenfalls in der Testphase) die Rückmeldung auszuwerten.
code:
1:
2:
3:
4:
5:
if($send) {
echo "Alles Klar";
}else{
echo "Fehler:  " .mysql_error();
}

War die Aktion erfolgreich, so wird Alles Klar ausgegeben und wenn nicht dann wird Fehler: mit der mysql-Fehlermeldung angezeigt.

Bevor wir jedoch überhaupt mit der Datenbank korrespondieren können,
müssen wir eine Verbindung zu dieser herstellen.
Dazu schreiben wir einen 8-Zeiler in die Datei config.inc.php welche im gleichen Verzeichnis abgelegt wird wie unsere Test2.php.
Die config.inc.php hat folgenden Inhalt:
code:
1:
2:
3:
4:
5:
6:
7:
8:
<?php	
$sqlhost = "localhost";
$sqluser = "uebung_fb";
$sqlpassword = "das Passwort";		
$connid = mysql_connect($sqlhost, $sqluser, $sqlpassword);			
$sqldb ="uebung_fb";
$dummy = mysql_select_db($sqldb)	or die("Auswahl der Datenbank ist fehlgeschlagen");		
?>

Diese confic.inc.php wird in unsere Test2.php mit require eingebunden.
Eine mit require eingebunden Datei wird an der Stelle wo sie eingebunden ist ausgeführt; es ist denn so als würde der Code aus dieser Datei an der Position require stehen.

Unsere test2.php sieht nun wie folgt aus:
code:
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:
<?php
require("./config.inc.php");

$name = $_POST['Name'];
$pass = $_POST['Passwort'];
$alter = $_POST['Alter'];
$land = $_POST['Land'];
$anzahl = count($_POST['Interessen']);
$menge = count($_POST['sport']);
$kommentar = $_POST['Kommentar'];
$bedingungen = $_POST['Bedingungen'];

if($bedingungen != "ja") $bedingungen = "nein";

echo "<br>Name:  " .$name ."<br><br>";
echo "Passwort:  " .$pass ."<br><br>";
echo "Alter:  " .$alter ."<br><br>";
echo "Land: " . $land ."<br><br>";
echo "Sport: ";
for($n=0;$n<$menge;$n++) {
echo $_POST['sport'][$n] ."  ";
$sport .= $_POST['sport'][$n];
}
echo "<br><br>";
echo "Interessen: ";
for($i=0;$i<$anzahl;$i++) {
echo $_POST['Interessen'][$i] ."  ";
$interessen[] = $_POST['Interessen'][$i];

}

$interesse = implode(",",$interessen);

echo "<br><br>";

echo "Kommentar:  " .$kommentar ."<br><br>";
echo "Bedingungen: " .$bedingungen;

$abfrage = "INSERT INTO christina (name,passwort,gruppe,land,sport,interessen,kommentar,bedingung) VALUES ('$name','$pass','$alter','$land','$sport','$interesse','$kommentar','$bedingung')";
$send = mysql_query($abfrage);

if($send) {
	echo "Alles Klar";
	}else{
		echo "Fehler" .mysql_error();
	}
?>

Auf zwei Neuerungen möchte ich noch hinweisen.
Beim array "sport" werden die Daten aus dem Formular nahtlos aneiander gehängt (FußballSchwimmenFechten)
Im Fall des arrays interessen erstellen wir intern ein neues array
code:
1:
$interessen[] = $_POST['Interessen'][$i];

und fügen mittels des Befehls inplode ein Trennzeichen (hier ein Komma) zwischen den Wörtern ein.
code:
1:
$interesse = implode(",",$interessen);

(HTML,CSS,mysql)

Somit sind wir später beim auslesen in der Lage diese Wörter wieder einzeln herzustellen.

Dann liefert der Wert bedingung "ja" an unsere php-Datei, wenn ein Häkchen dort gesetzt wurde und einen leeren String, wenn die Checkbox leer bleibt.
Damit im Falle des Leerstrings ein nein in die Datenbank geschrieben wird ergänzen wir das mit folgendem Befehl:

code:
1:
if($bedingungen != "ja") $bedingungen = "nein";


Soweit unsere Übertragung vom Formular bis hin zur Datenbank.

LG
haumi


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH