Formular mysql problem

Caine666

Grünschnabel
Hallo,

ich hoffe ich bin hier richtig und ihr könnt mir helfen.
Ich sitze jetzt seit ca. 12 std. nonstop an einem Formular dessen Daten ich in einer mysql Tabelle speichern möchte.
Ich hab hier und bei google einfach zuviel gefunden und nix hat funktioniert.

Das formular besteht aus 18 Feldern (text, dropdown, radio)
es soll wie eine art Registration funktionieren. Die Daten sollen in einer mysql db gespeichert und später durch den member via login auch geändert werden können.
Da ich eher neuling im gebiet PHP bin weis ich einfach nicht weiter.
Hat mir jemand einige PHP codes womit ich das lösen kann, oder Tipps ?
Momentan besteht nur noch das Formular.

Bitte helft mir !
Danke im voraus
 
also, hier mal ein kleines Beispiel, wie du daten von einer Seite auf eine andere transferieren kannst:
Das folgende Beispiel wäre nur für einen Benuter mit einem festen Passwort, kann aber natürlich angepasst werden ;)


Index.php (enthält das Loginformular)
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>Login</title>
		<link rel="stylesheet" type="text/css" href="default.css">
	</head>
	<body>
		<h3 align="center">Dieser Bereich ist nur f&uuml;r registrierte Mitglieder</h3>
		<div align="center">
			<table border="1">
				<tr>
					<td>
						<?php 
							if (isset ($_REQUEST["fehler"])) 
							{ 
							  echo "<font color='red'>Ung&uuml;ltige Zugangsdaten / Session abgelaufen.</font>"; 
							} 
						?> 
						<form name="login" action="login.php" method="post">
							<table border="0">
								<tr>
									<td><b>Benutzername:</b></td>
									<td><input type="text" name="name"></td>
								</tr>
								<tr>
									<td><b>Passwort:</b></td>
									<td><input type="password" name="pwd"></td>
								</tr>
								<tr>
									<td colspan="2">
										<div align="center">
											<input type="submit" value="Login">
										</div>
									</td>
								</tr>
							</table>
						</form>
					</td>
				</tr>
			</table>
		</div>
	</body>
</html>

Login.php
Code:
<?php 
// Session starten
session_start ();

if ($_REQUEST["name"] == "fi2007" && $_REQUEST["pwd"] == "Nummer1") 
{ 
	
	/* Verbindung aufbauen, auswählen einer Datenbank */
	$link = mysql_connect("127.0.0.1", "<MYSQL-USER>", "<PASSWORD>")
						or die("Keine Verbindung möglich: " . mysql_error());
	mysql_select_db("chat") or die("Auswahl der Datenbank fehlgeschlagen");

	/* ausführen einer SQL Anfrage */
	$query = "........"');"; 
	$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
	
	/* schliessen der Verbinung */
	mysql_close($link);

  header ("Location: gueltig.php"); 
} 
else 
{ 
  header ("Location: index.php?fehler=1"); 
} 
?>

Auf der ersten Seite gibt man seine Daten ein, daraufhin wird die zweite Seite aufgerufen, wo die Daten per mysql abgefragt und überprüft werden.

Wie du die Abfrage machst, wießt du sicherlich eh ;)

Genau so, wie du die Daten der Felder "Benutzername" und "Passwort" überträgst, kannst du auch beliebige andere Daten auf eine andere Seite übertragen, welche dann die Daten in die MySQL DB einträgt.
 
Zuletzt bearbeitet:
naja das is halt schon etwas ungenau, vielleicht beschreibst du allgemeiner was genau du brauchst.

wenn die connection zur Datenbank steht is es eigentlich ned schwer.

als erstes wird natürlich abgefragt, ob ein submit button gedrückt wurde (also Formular absenden oder speicher oder was auch immer du hast.

So jetzt kommt drauf an, willst du die Daten als neue Datensätze einfügen so machst du folgenden Query:

PHP:
$variable = "INSERT INTO `eintr` (`betreff`, `nachricht`) VALUES('heute','hab keine zeit')";

Um vorhandéne Datensätze zu ändern musst du mit UPDATE und SET arbeiten
--> kuck hier mal das tutorial an, da gibts alles : http://tut.php-quake.net/

Das is recht gut.

Ansonsten poste etwas genauer, dann kann dir auch genauer geholfen werden.
gruß dg87
 
Danke für die schnelle Hilfe und auch für das Tutorial.
Leider hat mir das alles nur bedingt geholfen.
Ich find einfach den fehler nicht.
Ich möchte jetzt einfach nur die zu übermittelnde Daten des Formulars (mit button) in eine mysql tabelle speichern. Damit ich sie später mit einem anderen script wieder aufrufen (auslesen) kann. (ähnlich wie eine Memberverwaltung)
Hab auch die tabelle angelegt, nur irgendwie ist da wieder der Wurm drin.
Bin mysql unerfahren und auch nicht php-fest.

Hier mal die scripte:
Formular:
<html>
<head>
<script language="Javascript">
function act_input(feld) {
if(document.getElementById(feld).disabled==true) {
document.getElementById(feld).disabled=false;
document.getElementById(feld).value="";
} else {
document.getElementById(feld).disabled=true;
document.getElementById(feld).value="Eingabe nicht möglich";
}
}
</script>
</head>


<body bgcolor="#000000">

<form action="work.php" method=post>
<table width="350" cellpadding="5" align="center" border="0">

<!-- Benutzerdaten -->

<tr>
<td bgcolor="#c0c0c9">Name:</td>
<td bgcolor="#c0c0c9"><input type="text" size="20" name="Array[name]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Alter:</td>
<td bgcolor="#c0c0c0"><input type="text" size="2" name="Array[alter]" maxlength="2"> Jahre</td>
</tr>

<tr>
<td bgcolor="#c0c0c9">e-mail:</td>
<td bgcolor="#c0c0c9"><input type="text" size="20" name="Array[mail]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c0">ICQ:</td>
<td bgcolor="#c0c0c0"><input type="text" size="20" name="Array[icq]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Telefon:</td>
<td bgcolor="#c0c0c9"><input type="text" size="20" name="Array[tel]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Web:</td>
<td bgcolor="#c0c0c0"><input type="text" size="20" name="Array[web]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Wohnort:</td>
<td bgcolor="#c0c0c9"><input type="text" size="20" name="Array[ort]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Geschlecht:</td>
<td bgcolor="#c0c0c0">m&auml;nnlich<input type="radio" name="Array[gender]">&nbsp;&nbsp;
weiblich<input type="radio" name="Array[gender]">
</td>
</tr>

<tr bgcolor="#c0c0c9"><td colspan="2">&nbsp;</td></tr>

<!-- Sonstige Daten -->

<tr>
<td bgcolor="#c0c0c0">Instrument:</td>
<td bgcolor="#c0c0c0"><select size="1" name="Array[instrument]">
<option value="" selected>Bitte ausw&auml;hlen</option>
<option value=""></option>
<option value="Drums">Drums</option>
<option value="Guitar">E-Guitar</option>
<option value="Bass">Bass</option>
<option value="Keyboard">Keyboard</option>
<option value="Vocals">Vocals</option>
<option value="Andere">Andere</option>
</select></td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Equipment</td>
<td bgcolor="#c0c0c9"><textarea rows="4" name="Array[equipment]"></textarea></td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Erfahrungsgrad:</td>
<td bgcolor="#c0c0c0"><select size="1" name="Array[grad]">
<option value="" selected>Bitte ausw&auml;hlen</option>
<option value=""></option>
<option value="Anf&auml;nger">Anf&auml;nger</option>
<option value="so lala">so lala</option>
<option value="Mittel">Mittel</option>
<option value="brauchbar / gut">brauchbar / gut</option>
<option value="sehrgut">sehrgut</option>
<option value="Semi / Profi">Semi / Profi</option>
</select></td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Ich spiele seit:</td>
<td bgcolor="#c0c0c9"><input type="text" size="5" name="Array[play]" maxlength="5"> Jahr(en)</td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Genre:</td>
<td bgcolor="#c0c0c0"><select size="1" name="Array[genre]">
<option value="leer" selected>Bitte ausw&auml;hlen</option>
<option value=""></option>
<option value="egal">egal</option>
<option value="Mixed">Mixed</option>
<option value="Pop">Pop</option>
<option value="Punk">Punk</option>
<option value="Rock">Rock</option>
<option value="Heavy Metal">Heavy Metal</option>
<option value="Metal (allgemein)">Metal (allgemein)</option>
<option value="Hard Rock">Hard Rock</option>
<option value="melodic Deathmetal">melodic Deathmetal</option>
<option value="Deathmetal">Deathmetal</option>
<option value="Blackmetal">Blackmetal</option>
<option value="Andere">andere</option>
</td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Banderfahrung:</td>
<td bgcolor="#c0c0c9">Ja<input type="radio" size="5" value="Ja" name="Array[band]" onClick="act_input('feld1')">&nbsp;&nbsp;&nbsp;
Nein <input type="radio" value="Nein" size="5" name="Array[band]" checked onClick="act_input('feld1')"><br>
Band 1: <textarea id="feld1" type="text" name="Array[bands]" rows="4" disabled>Eingabe nicht m&ouml;glich</textarea>
</td>
</tr>

<tr>
<td bgcolor="#c0c0c0">Studioerfahrung:</td>
<td bgcolor="#c0c0c0">Ja<input type="radio" value="Ja" size="5" name="Array[studio]">&nbsp;&nbsp;&nbsp;
Nein <input type="radio" value="Nein" size="5" name="Array[studio]"></td>
</tr>

<tr>
<td bgcolor="#c0c0c9">Verf&uuml;gbar:</td>
<td bgcolor="#c0c0c9">Ja<input type="radio" value="Ja" size="5" name="Array[status]">&nbsp;&nbsp;&nbsp;
Nein <input type="radio" value="Nein" size="5" name="Array[status]"></td>
</tr>

<tr><td bgcolor="#c0c0c0" colspan="2">&nbsp;</td></tr>
<!--
<tr>
<td bgcolor="#c0c0c9">Hörprobe:</td>
<td bgcolor="#c0c0c9"><input accept="*.mp3" name="r_file" type="file"></td>
</tr>
-->
<tr>
<td bgcolor="#c0c0c9">Passwort:</td>
<td bgcolor="#c0c0c9"><input name="Array[passwort]" type="password"></td>
</tr>

<tr><td bgcolor="#c0c0c9" colspan="2">&nbsp;</td></tr>

<tr>
<td bgcolor="#c0c0c0" colspan="2" align="center">
<input type="submit" name="send" value="Eintragen">&nbsp;&nbsp;&nbsp;
<input type="reset" name="reset" value="Nee doch net"></td>
</tr>
</table>
</form>
</body>

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

<?php

include ('config.php');

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

$dbanfrage = "INSERT into $tabelle values ('0', '$Array[name]', '$Array[alter]', '$Array[mail]', '$Array[icq]', '$Array[web]', '$Array[ort]', '$Array[gender]', '$Array[instrument]', '$Array[equipment]', '$Array[grad]', '$Array[play]', '$Array[genre]', '$Array[band]', '$Array[bands]', '$Array[studio]', '$Array[status]', '$Array[passwort]')";

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

?>

</body>
</html>
db erstellen:
<html>
<head>
<title>Tabellen erzeugen</title>
</head>
<body>

<?php

include ('config.php');

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

$dbanfrage = "CREATE table $tabelle (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name TEXT, alter TEXT, mail TEXT, icq TEXT, tel TEXT, web TEXT, ort TEXT, gender TEXT, instrument TEXT, equipment TEXT, grad TEXT, play TEXT, genre TEXT, band TEXT, bands TEXT, studio TEXT, status TEXT, passwort TEXT)";

if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Tabellenerzeugung erfolgreich.");
} else {
print ("Konnte Tabelle nicht erstellen.");
}
mysql_close ($dbverbindung);
?>

</body>
</html>
config:
<?php

$host = "localhost";
$user = "****";
$password = "****";
$dbname = "****";
$tabelle ="datenbank";

?>

Sorry das das so lang ist. Könnt ihr mir bitte helfen ?
 
Meines Wissens geht es nicht wenn du als formularnamen "Array[name]" etc zuweist.

Gib deinen Formularfeldern eindeutige namen und les diese dann mit $_POST['feldname'] aus.

Zur Sicherheit würde ich dir empfehlen beim eintragen der daten htmlspecialchars zu benutzen

"INSERT INTO .... VALUE ". htmlspecilchars($_POST['name']) . ....

So seh ich auf anhieb sonst nix falsches
 
Sorry aber ich versteh grad nur Bahnhof.
Heisst das dass ich z.B.
<input type="text" size="20" name="Array[mail]">
durch
<input type="text" size="20" name="mail">
ersetze ?

Und wie darf ich das verstehen ?
"INSERT INTO .... VALUE ". htmlspecilchars($_POST['name']) . ....
ersetzen mit ?
"INSERT into $tabelle values ('0', '$_POST[mail]',

Mit der db_erstellen erstellt er mir aber auch keine tabelle. Hab sie jetzt von Hand erstellt.
Muss ich für das Feld Passwort was bestimmtes beachten ?
 
PHP:
<?php
if(isset($_POST['submit_test']))  {
  $test = mysql_real_escape_string($_POST['form_test']);

  $sql = "INSERT INTO `databas` (TestFeld) VALUES ('".$test."')";
  $qry = mysql_query($sql) or die(mysql_error());
}
?>
<form action="" method="POST">
<input type="text" name="form_test">
<input type="submit" name="submit_test" value="go">
</form>

Usereingaben sind prinzipiell immer unsichere Daten und sollten vor Abspeichern in der Datenbank geprüft werden.
Passwörter am besten als Hash in die Datenbank ablegen.
 
Zuletzt bearbeitet:
Hmm hoffe das ich jetzt nicht falsch poste, also sofort verbessern wenn ich mich täusche, aber speichere das passwort mit hilfe von md5 ab, beispiel:
PHP:
.... kennwort=md5($_POST['passwort']);

Hier wird das vom Formular benannte feld 'passwort' verschlüsselt und in kennwort gespeichert.
--> Wie gesagt, falls falsch, dann bitte umgehend melden ;-)

Aber trotzdem noch nen tipp am Rande, tu deine Codes mit PhP tags versehen, damit dies übersichtlicher wird.
beispiel

[code=php]Dein Code[/code]
 
Du hast insofern recht, dass er die Passwörter mit md5 bearbeiten sollte.

ABER: MD5 ist keine Verschlüsslung sondern eine Hash-Funktion. Beliebig lange Strings werden dabei in 128 Bit lange Hashes konvertiert. Diese Konvertierung ist irreversibel. Das wäre bei einer Verschlüsselung sinnbefreit, da man diese ja gerne wieder entschlüsseln würde ;)
 
Zurück