Formular mit PHP und mysql

macflirty

Grünschnabel
Hallo Tutorials.de User,

Ich bitte um Mithilfe bei einem Problem.
Ich würde gerne ein Formular bauen, welches folgende Eigenschaften haben soll.

1.) Statische Felder Vorname Nachname Strasse PLZ etc. etc......erledigt
2.) Daten die im Formular eingegeben werden an mysql übergeben und speichern....erledigt
3.) Daten wieder Auslesen und als Liste anzeigen......erledigt
4.) In einem Datensatz mehrere Unterdatensätze anlegen......1 - n Verbindung ?

Zu Punkt 4 eine Erklärung:
------------------------------------
Ich muss zu meinen Daten Vorname Nachname Strasse PLZ, eine nicht definierbare Anzahl an zusätzlichen Feldern vom selben Typ hinzufügen einmal 5 und einmal 100.
Beispiel1:
VNAME, NNAME, STREET, PLZ
Hans, Mustermann, Musterstrasse 10, 12345

FRUIT, PEACE, DATE
Waldbeere, 10, 2009
Himbeere, 12, 2008
Kirsche, 20, 2009
Birne, 25, 2007

Beispiel2:
VNAME, NNAME, STREET, PLZ
mac, flirty, flirtystrasse 28, 23456

FRUIT, PEACE, DATE
Apfel, 18, 2008
Bananen, 12, 2008
Weintrauben, 13, 2007
----------------------------------------------
Jetzt meine Frage wie kann ich dass mit PHP u. mysql am besten realisieren.
Ich schätze mal dass ich 2 Tables brauche und eine abfrage mit LEFT JOIN über zwei Datenbanken mache muss, jedoch weiß ich nicht wie ich eine EINDEUTIGE Verknüpfung zwischen den beiden Tables herstellen kann.
Mit dem AUTO INCREMET Feld 'id' kann ich keine Eindeutigkeit herstellen.
Ich hoffe dass Ihr wisst was ich meine....
Bitte um Vorschläge.
Das eigentliche Formular umfasst ca. 70 - 150 Felder und ist etwas komplexer als dieses Apfel Birnen beispiel

Danke im Voraus
--
lg macflirty
 
Also wenn ich das richtig verstanden habe, dann möchtest du eine Datenbank mit zwei Table´s

Table 'user'

user_id, INT, AUTO INCREMET, Primary
user_firstname, VarChar(60)
user_lastname, VarChar(60)
[..]

Table 'fruits'

fruit_id, INT, AUTO INCREMENT, Primary
user_id, INT, 13
fruit_name, VarChar(120)
fruit_peaces, INT(5)
[..]

Ich erkenne in deinem Thread nicht ob du die Daten auslesen oder speichern möchtest.

speichern.php:
PHP:
<?

if(isset($User_Name)){
	$dbc = mysql_connect("hostname","username","passwort");  
	@mysql_select_db("Datenbankname"); 
	$query = "INSERT INTO 'user_table' (user_firstname, user_lastname...) VALUES ('".$_POST['User_Name']."',...)";
	mysql_query($query,$dbc);
	
	/* Jetzt hat das PHP-Script einen Eintrag in die Datenbank-Tabelle 'user_table' vorgenommen, der beim anlegen der Tabelle 
	   ausgewählte Befehl 'AUTO INCREMENT' für 'user_id' sorgt nun dafür das jeder neue Datensatz eine fortlaufende Nummer bekommt
	*/
	
	$query = "SELECT user_id FROM user_table ORDER BY user_id DESC LIMIT 1";
	$User_ID = mysql_query($query,$dbc);
	if(count($Fruit_Name)>=1){
		
		for($i=0;$i<count($Fruit_Name);$i++){
			$query = "INSERT INTO fruit_table (user_id, fruit_name, fruit_peaces, ...) VALUES
				      ('".$User_ID."','".$Fruit_Name[$i]."','".$Fruit_Count[$i]."',...)";
		}
		
	}
	
	/* Nun wurde in die fruit_table eine unbestimmte Anzahl an Datensätzen eingefügt, wo jeder dieser DS über die 'user_id'
	   des zuvor gespeicherten Benutzers (in der user_table) verfügt und somit problemlos später wieder ausgelesen werden kann.
	*/
}
?>
<form action="speichern.php" method="post">
	
	Name: <input type="text" name="User_Name">
	Vorname: <input type="text" name="User_FName">

	Fruchtname: <input type="text" name="Fruit_Name[]">
	Fruchtmenge: <input type="text" name="Fruit_Count[]">


	Fruchtname: <input type="text" name="Fruit_Name[]">
	Fruchtmenge: <input type="text" name="Fruit_Count[]">
	

	Fruchtname: <input type="text" name="Fruit_Name[]">
	Fruchtmenge: <input type="text" name="Fruit_Count[]">
	
	<input type="submit" value="Speichern">
</form>

wenn du als 'name' zb: 'Fruit_Name[]' vergibst, werden die Daten später als Array verschickt, somit kannst du beliebig viele INPUTs in dein Formular einbauen.


PS: Ich habe den Code nicht gestestet sollte aber reibungslos funktionieren.

gruß,
Marco
 
Du brauchst für die User eine eindeutige ID und die kannst du als Fremdschlüssel für die Fruits Tabelle verwenden. Egal, wie viele Einträge da reinkommen. Da hat xamunrax völlig recht.
Ich würde nur für den Fall, daß die Einträge nicht von einem Admin erzeugt werden, sondern sich die User selbst eintragen, das Auslesen der UserID ändern.
PHP:
$query ="SELECT last_insert_id() as user_id FROM user_table limit 1;";
Sonst könnte es bei gleichzeitigen Eintragungen zu Überschneidungen kommen.
 
Du brauchst für die User eine eindeutige ID und die kannst du als Fremdschlüssel für die Fruits Tabelle verwenden. Egal, wie viele Einträge da reinkommen. Da hat xamunrax völlig recht.
Ich würde nur für den Fall, daß die Einträge nicht von einem Admin erzeugt werden, sondern sich die User selbst eintragen, das Auslesen der UserID ändern.
PHP:
$query ="SELECT last_insert_id() as user_id FROM user_table limit 1;";
Sonst könnte es bei gleichzeitigen Eintragungen zu Überschneidungen kommen.


danke den Befehl hatte ich gestern Nacht gesucht, aber er war mir irgendwie entfallen :)
 
Erstmal will ich mich bei den Usern bedanken, für diese Rasche und Ausführliche Erklärung.
Ich werde dass mal alles Probieren und euch dann berichten wie es mir bei meinem Formular geht.

lg
--
macflirty
 
Hallo,

Ich habe im Anhang mal meine Zukünftige Datenbank in einem Excel realisiert, und wollte euch fragen ob es intelligent wäre für jede der eingefärbten Rahmen einen table zu erstellen.

Zu der Frage was ich genau machen möchte:

In der ersten Maske will ich in die Felder Daten einfügen (inputdb.php)
In der zweiten Maske will ich eine Übersicht der Datensätze haben (overviewdb.php)
In einer dritten Maske will ich eine Datail Ansicht der eingegebenen Datensätze anzeigen (outputdb.php)


lg
--
macflirty
 

Anhänge

super konzept macfly,

Klar ist es möglich. Aber du solltest dir erstmal gedanken machen, was es alles können soll, da es nicht mal eben so ein dreizeiler ist, sondern schon ein großes Projekt.
 
Hallo,

Kann mir eben mal jemand einen Wink in die richtige Richtung geben wie ich mit meinem Formular in 2 oder mehrere Tables DS schreiben kann.
Mein php code hier:

PHP:
<html>
<head>
<title>Daten verarbeiten</title>
</head>
<body>

<?php

$host = "mysql.host";
$user = "username";
$password = "passwort";
$dbname = "dbname";
$tabelle ="test1";
$tabelle2 ="test2";

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

$dbanfrage =    "INSERT into $tabelle  values ('0','$Array[nname]','$Array[vname]','$Array[adress]','$Array[city]','$Array[fon]','$Array[mobile]')";

$dbanfrage2 =   "INSERT into $tabelle2 values ('0','$Array[user]')";

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

?>

</body>
</html>

Und hier meine Eingabemaske in HTML:

HTML:
<html>
<head>
<title>Dateneingabe</title>
</head>
<body>
<form action="work.php" method=post>
Nachname <br>
<input type=text name="Array[nname]" size=50>
<br>
<br>
Vorname<textarea name="Array[vname]" size=40></textarea>
<br>
<br>
Adresse<textarea name="Array[adress]" size=40></textarea>
<br>
<br>
PLZ<textarea name="Array[city]" size=40></textarea>
<br>
<br>
Telefon<textarea name="Array[fon]" size=40></textarea>
<br>
<br>
Handy<textarea name="Array[mobile]" size=40></textarea>
<br>
<br>
User<textarea name="Array[user]" size=40></textarea>
<br>
<br>

<input type=submit name="SUBMIT" value="ok">
</form>
</body>
</html>

In der mysql Datenbank, habe ich folgende Felder:
test1:

id
nname
vname
adress
city
fon
mobile

test2:

id
user

Vielleicht kann mir da ja jemand helfen.
Danke im Voraus.

lg
--
macflirty
 
Hallo Leute,

Kann mir jemand helfen.
Versuche gerade anhand einiger Tutorials mich an mein Formular heranzutasten.
Folgendes Tutorial habe ich eben durchgearbeitet aber beim editieren von einem Datensatz bekomme ich die Fehlermeldung Error 404 Seite nicht vorhanden.
Hier der Link zu dem Tut.
Lief alles super, aber dass mit dem editieren und löschen schaffe ich nicht.
Wenn ich anstatt des
PHP:
$id = $_GET['id'];

$sql = "SELECT * FROM guestbook WHERE ID ='$id'";
im Browser steht dann folgendes gbookdelete.php&id=6

direkt die ID verwende funktioniert es
PHP:
$id = 6;

$sql = "SELECT * FROM guestbook WHERE ID ='$id'";
im Browser steht dann folgendes gbookdelete.php (direkt eingabe ohne &id=6)

Hab auch schon etwas gegoogled aber bin zu keiner Vernünftigen Lösung gekommen.
Hier noch der Link zu meiner Testseite.
Danke

lg
--
macflirty
 
Zuletzt bearbeitet:
Hallo,

der erste GET Parameter in der URL wird mit einem ? angehängt. Erst eventuelle weitere Werte verwenden das &. Es muß also heißen:

gbookdelete.php?id=6
 
Zurück