Sie sind nicht angemeldet.

Andy

Trusted Members

  • »Andy« ist männlich
  • »Andy« ist ein verifizierter Benutzer
  • »Andy« ist der Autor dieses Themas

Beiträge: 4 409

Aktivitätspunkte: 23 450

Registrierungsdatum: 22. März 2008

Wohnort: Lohr

WBB Version: alle

Danksagungen: 97 / 11

  • Nachricht senden

Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied

1

Montag, 7. September 2009, 14:17

Tutorial: Erstellen eines Adressbuchs mit PHP und MySQL

Da ich schon länger mal PHP und MySQL lernen wollte und sich zeitlich mal die Gelegenheit ergab etwas zu experimentieren hab ich nach dem durchlesen einiger Tutorials im Internet mir mal so ne Art Miniadressbuch gebastelt.

Evtl. ist so ein Tutorial für hier auch mal interessant.

Für diejenigen die das ebenfalls mal ausprobieren liste ich hier mal alle Arbeitsschritte die dazu notwendig waren auf.



Um die Adressen zu speichern brauchen wir als erstes mal ne Datenbank. Wie man die in phpMyAdmin anlegt dürfte den meisten bekannt sein. Deswegen erspar ich mir mal die Erklärung hierzu.

Wer die Datenbank allerdings von Hand anlegen möchte führt auf dem Datenbankserver folgende Abfrage aus:

Quellcode

1
CREATE DATABASE adressbuch;


Nun haben wir die Datenbank aber noch keine Tabelle in der wir die Daten ablegen können.

Also erstellen wir uns eine Tabelle die die Spalten adresse, vorname, nachname, strasse, hausnummer, postleitzahl und ort enthält. Dazu führen wir folgenden Befehl in der Datenbank aus:

Quellcode

1
2
3
4
5
6
7
8
CREATE TABLE `adressbuch`.`adresse` (
`vorname` TEXT NOT NULL ,
`nachname` TEXT NOT NULL ,
`strasse` TEXT NOT NULL ,
`hausnummer` INT( 5 ) NOT NULL ,
`postleitzahl` INT( 10 ) NOT NULL ,
`ort` TEXT NOT NULL
) ENGINE = MYISAM ;


Somit haben wir schonmal unsere Datenbank mit Tabelle in die wir die Daten eintragen können. Da das eintragen der Datensätze direkt über die Datenbank zu umständlich ist schreiben wir uns nun ein kleines Formular das das für uns erledigt.

Hierfür brauchen wir 2 Dateien.

Zuerstmal das Formular an sich:

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
<html>
<head>
<title>Dateneingabe</title>
<body>
<form action="uebergabe.php" method="POST">
<p>Vorname:
<input type="text" name="vorname" size="50" maxlength="150" />

Nachname:
<input type="text" name="nachname" size="50" maxlength="150" />
</p>

<p>Stra&szlig;e:
<input type="text" name="strasse" size="50" maxlength="150" />

Hausnummer:
<input type="text" name="hausnummer" size="3" maxlength="4" />

<p>Postleitzahl:
<input type="text" name="plz" value="" size="5" maxlength="8" />

Ort:
<input type="text" name="ort" value="" size="50" maxlength="150" />
</p>

<input type="Submit" name="SUBMIT" value="speichern" />
</form>
</body>


Zur Erklärung:

Mit

Quellcode

1
<form action="uebergabe.php" method="POST">


legen wir fest das die ins Formular eingegebenen Daten an die Datei uebergabe.php zur weiteren Verarbeitung übergeben werden.

Quellcode

1
<input type="Submit" name="SUBMIT" value="speichern" />


sorgt dafür das die Daten an die Datei ubergabe.php zur weiteren Verarbeitung übergeben werden.

Jetzt haben wir auf jeden Fall schonmal die Möglichkeit Daten einzugeben. Nur müssen die jetzt noch in die Datenbank.

Dazu erstellen wir eine Datei mit dem Namen uebergabe.php

PHP-Quelltext

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
<html>
<head>
<title>Daten verarbeiten</title>
</head>
<body>

<?php
// Verbindung zur Datenbank herstellen
$host "localhost";
$user "root";
$password "";
$dbname "adressbuch";
$tabelle ="adresse";

$dbverbindung mysql_connect ($host$user$password);

// Übergabe der Daten an die Datenbank
$vorname $_POST['vorname'];
$nachname $_POST['nachname'];
$strasse $_POST['strasse'];
$hausnummer $_POST['hausnummer'];
$postleitzahl $_POST['plz'];
$strasse $_POST['strasse'];
$ort $_POST['ort'];

//Eintrag der Daten in die Datenbank
$dbanfrage "INSERT into $tabelle values ('$vorname', '$nachname', '$strasse', '$hausnummer', '$postleitzahl', '$ort')";

if (mysql_db_query ($dbname$dbanfrage$dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
mysql_close ($dbverbindung);

?>
<br />
<a href="anzeige.php">Daten anzeigen</a>
</body>
</html>


Erklärung:

Zuerstmal müssen wir die Verbindung zur Datenbank herstellen. Dafür brauchen wir die Zugangsdaten.

PHP-Quelltext

1
2
3
4
5
6
// Verbindung zur Datenbank herstellen
$host "localhost";
$user "root";
$password "";
$dbname "adressbuch";
$tabelle ="adresse";


Nachdem wir die Zugangsdaten haben können wir jetzt die Verbindung zur Datenbank herstellen mit

PHP-Quelltext

1
$dbverbindung mysql_connect ($host$user$password);


Jetzt müssen wir noch die Daten aus dem Formular korrekt an die Datenbank übergeben. Hierzu benötigen wir die Namen der Eingabefelder.

PHP-Quelltext

1
2
3
4
5
6
7
$vorname $_POST['vorname'];
$nachname $_POST['nachname'];
$strasse $_POST['strasse'];
$hausnummer $_POST['hausnummer'];
$postleitzahl $_POST['plz'];
$strasse $_POST['strasse'];
$ort $_POST['ort'];


Die Variable $strasse bekommt hier den Wert des Eingabefeldes mit dem Namen strasse zugewiesen.

PHP-Quelltext

1
$strasse $_POST['strasse'];



Nachdem wir nun die Daten auf dem Feld verarbeitet haben können wir sie nun in die Datenbank eintragen.

PHP-Quelltext

1
$dbanfrage "INSERT into $tabelle values ('$name', '$strasse', '$hausnummer', '$postleitzahl', '$ort')";


Jetzt überprüfen wir noch ob alles funktioniert hat oder ob Fehler aufgetreten sind.

PHP-Quelltext

1
2
3
4
5
6
if (mysql_db_query ($dbname$dbanfrage$dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
mysql_close ($dbverbindung);


Am Ende lassen wir uns dann noch einen Link anzeigen mit dem wir die Seite aufrufen können die die in der Datenbank vorhandenen Datensätze anzeigt.

Quellcode

1
2
<br />
<a href="anzeige.php">Daten anzeigen</a>


Somit wären wir hier eigentlich fertig. Da wir aber gerne wissen möchten welche Adressen sich schon in der Datenbank befinden basteln wir uns jetzt also noch ein Skript das uns die Daten aus der Datenbank ausliest und anzeigt.

Hierfür erstellen wir uns die Datei anzeigen.php

PHP-Quelltext

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
<?php
// Verbindung zum Datenbankserver herstellen
$host "localhost";
$user "root";
$password "";
$dbname "adressbuch";
$tabelle ="adresse";

$dbverbindung mysql_connect ($host$user$password);

//Auswahl der Datenbank
$db_sel mysql_select_db$dbname )
    or die("Auswahl der Datenbank fehlgeschlagen");

// Anforderung der bereits vorhandenen Daten aus der Datenbank
// SQL-Befehl für den Zugriff
$sql "
    SELECT
        *
    FROM $tabelle
    ORDER BY vorname
";

// ausführen des mysql-Befehls
$db_erg mysql_query$sql );
if ( ! $db_erg )
{
    die('Ungültige Abfrage: ' mysql_error());
}

// Anzeige der Anzahl der Einträge
$anzahl_eintraege mysql_num_rows($db_erg);
echo "<p>Anzahl der Einträge: $anzahl_eintraege </p>";

// Ausgabe der Daten

while ($daten mysql_fetch_array$db_ergMYSQL_ASSOC))
{
    // Aushabe der Daten
    echo "Vorname: ";
    echo $daten['vorname'];
    echo "<br />";
    
    echo "Nachname: ";
    echo $daten['nachname'];
    echo "<br />";

    echo "Strasse: ";
    echo $daten['strasse'];
    echo "<br />";

    echo "Hausnummer: ";
    echo $daten['hausnummer'];
    echo "<br />";

    echo "Postleitzahl: ";
    echo $daten['postleitzahl'];
    echo "<br />";

    echo "Ort: ";
    echo $daten['ort'];
    echo "<br />";
    echo "<br />";
    echo "<br />";

}

//Schliessen der Datenbankverbindung
mysql_free_result$db_erg );

?>


Erklärung:

Zunächstmal müssen wir (da neue Datei) wieder die Verbindung zum Datenbankserver aufbauen. Das geschieht wie in der vorherigen Datei mit

PHP-Quelltext

1
2
3
4
5
6
7
$host "localhost";
$user "root";
$password "";
$dbname "adressbuch";
$tabelle ="adresse";

$dbverbindung mysql_connect ($host$user$password);


Jetzt wählen wir noch die Datenbank aus, aus der die Daten ausgelesen werden sollen.

PHP-Quelltext

1
2
$db_sel mysql_select_db$dbname )
    or die("Auswahl der Datenbank fehlgeschlagen");


Jetzt fordern wir die Daten aus der Datenbank an.

PHP-Quelltext

1
2
3
4
5
6
$sql "
    SELECT
        *
    FROM $tabelle
    ORDER BY vorname
";


Und führen die Abfrage aus.

PHP-Quelltext

1
2
3
4
5
$db_erg mysql_query$sql );
if ( ! $db_erg )
{
    die('Ungültige Abfrage: ' mysql_error());
}


Nachdem wir die Daten nun haben wärs interessant zu wissen wieviele Einträge sich schon in der Datenbank befinden. Das lassen wir uns mit

PHP-Quelltext

1
2
$anzahl_eintraege mysql_num_rows($db_erg);
echo "<p>Anzahl der Einträge: $anzahl_eintraege </p>";


anzeigen.

Nachdem wir das nun wissen müßten wir uns dann nur noch die in der Datenbank bereits vorhandenen Daten anzeigen lassen.

PHP-Quelltext

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
    echo "Vorname: ";
    echo $daten['vorname'];
    echo "<br />";
    
    echo "Nachname: ";
    echo $daten['nachname'];
    echo "<br />";

    echo "Strasse: ";
    echo $daten['strasse'];
    echo "<br />";

    echo "Hausnummer: ";
    echo $daten['hausnummer'];
    echo "<br />";

    echo "Postleitzahl: ";
    echo $daten['postleitzahl'];
    echo "<br />";

    echo "Ort: ";
    echo $daten['ort'];
    echo "<br />";
    echo "<br />";
    echo "<br />";

}


In der Spalte Postleitzahl wird der Wert des Feldes Postleitzahl angezeigt, usw.

PHP-Quelltext

1
2
3
    echo "Postleitzahl: ";
    echo $daten['postleitzahl'];
    echo "<br />";


Zu guter letzt schließen wir noch die Verbindung zur Datenbank.

PHP-Quelltext

1
mysql_free_result$db_erg );



Das wars.

Wenn ihr alles richtig gemacht habt sieht das ganze dann so aus wie auf den Screenshots. Designtechnisch gesehen nicht wirklich schön. Aber es erfüllt seinen Zweck.
»Andy« hat folgende Bilder angehängt:
  • formular.jpg
  • uebergabe.jpg
  • anzeige.jpg

DrPCox

Supported User

  • »DrPCox« ist männlich

Beiträge: 12

Aktivitätspunkte: 65

Registrierungsdatum: 10. Juli 2009

Wohnort: Essen

  • Nachricht senden

Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied Seit über 33 Monaten Mitglied

2

Samstag, 13. März 2010, 20:49

Mir ist beim drüber gucken aufgefallen, dass dein Code in sachen MySQL-Injections ziemlich anfällig ist, da du die User-Daten ohne weitere Überprüfung an die DB übergibst. Vielleicht könnte das ja mal aktualisiert werden, da das Script sonst echt praktisch ist.
Signatur von »DrPCox«
-- I reject your reality and substitute my own --

Andy

Trusted Members

  • »Andy« ist männlich
  • »Andy« ist ein verifizierter Benutzer
  • »Andy« ist der Autor dieses Themas

Beiträge: 4 409

Aktivitätspunkte: 23 450

Registrierungsdatum: 22. März 2008

Wohnort: Lohr

WBB Version: alle

Danksagungen: 97 / 11

  • Nachricht senden

Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied Seit über 48 Monaten Mitglied

3

Samstag, 13. März 2010, 21:11

Danke für den Hinweis. :)

Das war für mich eher so ein Experiment um zu sehen was ich schon kann und da andere das evtl. interessant finden könnten hab ichs hier mal gepostet.

Als ich das Tutorial geschrieben hab hatte ich noch nicht so gute
Kentnisse in PHP und MySQL-Programmierung. Bin auch jetzt immernoch am
lernen. Werd mir aber auf jeden Fall wenn ich demnächst mal Zeit habe
das ganze nochmal überarbeiten.

Lesezeichen: