Sql-übertragungs fehler

Daensch

Erfahrenes Mitglied
Hallo =)

Ich habe ein Problem mit der Datenbankspeicherung.
Ich will das er in der Datenbank "MEMBERS" (welche mit einer von mir bereits voreingestellten tabelle existiert) eine Tabelle mit dem Namen des Nicks erzeugt, welches im Eingabeform mitunter abgefragt wird.
Soweit so gut.. er zeigt mir auch keine Fehler mehr an.

Aber er speichert keine Einträge.
Ausserdem fehlt irgendwo eine zeile wie "if (!$mysql_query($sql, $link)) { echo "Datenbankfehler"; }" die man angeblich einfach hinzufügen kann. (ab //Verbinden zur Datenbank)
oder den "sql die" befehl, nur weiss ich nicht genau wo. Wenn ich ersteres Hinzufüge kommt immer:
Code:
Fatal error: Call to undefined function: () in C:\apachefriends\xampp\htdocs\entwicklung\phpcode\data\inter_n\add_member.php on line 49
(49 = if (!$mysql_query($sql, $link)) { echo "Datenbankfehler"; } )

PHP:
<html>
<head>
<title>Member hinzufügen</title>
</head>
<body>
<?php
if($_POST[flag]==1)
{
$_POST[name]=trim($_POST[name]);
$_POST[email]=trim($_POST[email]);
$_POST[pw]=trim($_POST[pw]);
$_POST[age]=trim($_POST[age]);
$_POST[rang]=trim($_POST[rang]);
$_POST[status]=trim($_POST[status]);
$_POST[realname]=trim($_POST[realname]);
// evtl vorhandenen HTML entfernen
$_POST[name]=strip_tags($_POST[name]);
$_POST[email]=strip_tags($_POST[email]);
$_POST[pw]=strip_tags($_POST[pw]);
$_POST[age]=strip_tags($_POST[age]);
$_POST[rang]=strip_tags($_POST[rang]);
$_POST[status]=strip_tags($_POST[status]);
$_POST[realname]=strip_tags($_POST[realname]);
//Testen ob Felder ausgefüllt sind
if(!$_POST[name]){$fehler="Bitte geben Sie einen NICK ein!. <br>";}
if(!$_POST[email]){$fehler="Bitte geben Sie eine EMAIL ADRESSE ein!. <br>";}
if(!$_POST[pw]){$fehler="Bitte geben Sie ein PASSWORT ein!. <br>";}
if(!$_POST[age]){$fehler="Bitte geben Sie das Geburtsdatum ein!. <br>";}
if(!$_POST[rang]){$fehler="Bitte geben Sie einen RANG ein!. <br>";}
if(!$_POST[status]){$fehler="Bitte geben Sie einen STATUS ein!. <br>";}
if(!$_POST[realname]){$fehler="Bitte geben Sie den richtigen Namen ein!. <br>";}
//Falls fehler vorhanden sind :
if($fehler)
{
$meldung="<font color=red>".$fehler."</font>";
unset($_POST[flag]);
}
else
{
//SQL string
$tb_member= $name;
$sql="INSERT INTO $tb_member (name, email, pw, age, rang, status, realname) values ('".$_POST[name]."', '".$_POST[email]."', '".$_POST[pw]."', '".$_POST[age]."', '".$_POST[rang]."', '".$_POST[status]."', '".$_POST[realname]."', now())";

//Verbinden zur Datenbank
$link= mysql_connect("localhost", "root", "test");
mysql_select_db("members", $link);
mysql_query($sql, $link);
$meldung="<font color=red> Ihr Angaben wurden gespeichert!</font>";
}

//Ausgeben der Meldung
echo $meldung;
}// Ende des POST[flag]

if(!$_POST[flag])
{
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" >
<input type="hidden" name="flag" value="1">
<p>Nick des Member:<br>
<input type="text" name="name" value="<?php echo $_POST[name];?>"></p>
<p>Email des Member:<br>
<input type="text" name="email" value="<?php echo $_POST[email];?>"></p>
<p>Passwort des Member:<br>
<input type="text" name="pw" value="<?php echo $_POST[pw];?>"></p>
<p>Geburtsdatum des Member:<br>
<input type="text" name="age" value="<?php echo $_POST[age];?>"></p>
<p>Rang des Member: (0=Normales Member, 1=Leader, 2=Ehrenmember)<br>
<input type="text" name="rang" value="<?php echo $_POST[rang];?>"></p>
<p>Status des Member: (0=Inaktiv, 1=Aktiv, 2=Admin)<br>
<input type="text" name="status" value="<?php echo $_POST[status];?>"></p>
<p>Realname des Member:<br>
<input type="text" name="realname" value="<?php echo $_POST[realname];?>"></p>
<input type="submit" value="Eintragen">
</form>
<?php
}
?>
</body>
</html>

Eigentlich is das ein Abgewandeltes Gästebuchscript, falls das was hillft.

Meine Sorge is wahrscheinlich das ich zu dumm für das Erstellen einer Datenbank bin. =)

mfg.
 
hi,

versuch mal:
Code:
$sql="INSERT INTO ".$tb_member." (name, email, pw, age, rang, status, realname) values ('".$_POST[name]."', '".$_POST[email]."', '".$_POST[pw]."', '".$_POST[age]."', '".$_POST[rang]."', '".$_POST[status]."', '".$_POST[realname]."', now())";

Wenn das nicht hilft, dann mach mal

echo $sql;

und Poste die Ausgabe.

Mfg Strike!
 
Original geschrieben von Daensch
Ich habe ein Problem mit der Datenbankspeicherung.
Ich will das er in der Datenbank "MEMBERS" (welche mit einer von mir bereits voreingestellten tabelle existiert) eine Tabelle mit dem Namen des Nicks erzeugt, welches im Eingabeform mitunter abgefragt wird.
Soweit so gut.. er zeigt mir auch keine Fehler mehr an.
Hm, nur mal der Verständlichkeit halber: Du willst für jeden Eintrag eine seperate Tabelle erstellen und darin den Eintrag abspeichern lassen? :rolleyes:

Ok, mal angenommen, ich hab Dich richtig verstanden, ich finde nirgendwo in Deinem Script die Stelle, an der Du der Variable $tb_member irgendeinen Wert zuweist.
 
im "vorigen thread" bzw http://de.php.net/mysql_error gabs den befehl:

echo mysql_errno() . ": " . mysql_error() . "\n";

Ausgabe:
1146: Table 'members.hg' doesn't exist Ihr Angaben wurden gespeichert!

Jetzt glaub ich weis ich was ich falsch mache =) @chino.
allerdings will ich was anderes.

$tb_member = $name;
sprich tabellen name = eingegebener nick

Ich will eig. eine Tabelle (name des member) erzeugen. die restlichen Daten sollten dann in der Tabelle eingespeichert werden. =)

DB TABELLE INFOS
MEMBERS NICKNAME1 name,email,pw,etc
NICKNAME2 name,email,pw,etc

wobei die Abfrage von NICKNAME und NAME die gleiche ist.
 
Also Du möchtest für jeden User eine neue Tabelle anlegen?
Das ist aber nicht sehr sinnvoll!

Bzw. kannst du dann mit INSERT INTO eh nicht arbeiten!
mach doch immer eine neue Reihe in die Tabellen 'MEMBERS'.
-> INSERT INTO members (..... ) values .....
 
Original geschrieben von Daensch
$tb_member = $name;
sprich tabellen name = eingegebener nick

Ich will eig. eine Tabelle (name des member) erzeugen. die restlichen Daten sollten dann in der Tabelle eingespeichert werden. =)
Ok, dann erklär mir doch bitte mal, wie Du dann alle Daten wieder auslesen willst. Weil, Du weißt ja nich, welche Tabellen alle in Deiner Datenbank existieren (ja, ich weiß dass man mit mySQL alle vorhandenen Tabellen abfragen kann, aber darum gehts mir gerade nich ;) ).

Zweites Problem: Was macht Du, wenn sich in einem Namen, den Du für die Tabellenbezeichnung verwendest, Umlaute befinden? Dann wirst Du mit Sicherheit eine mySQL-Fehlermeldung bekommen.

Also, falls Du immer noch nicht verstanden haben solltest, worauf ich hinaus will: Du legst eine (!) Tabelle an, und darin speicherst Du alle Einträge aus dem Formular.
 
ok.. d.h. (in der EINEN Tabelle)
Pro Member eine Zeile?
Oder meinst du dann 7 Zeilen alleine für ein Mitglied !?

Mit sql bin ich grad dabei alles zu lesen =) Ich habe versucht ein Script aus meinem Buch was ich lese abzuwandeln. Viele Begriffe sind mir zwar bekannt, aber leider noch nich alles.

Wie müsste ich das denn dann Deiner Meinung nach umschreiben !?
Man könnte doch dann auch (wegen den Umlautproblemen(daran hab ich im ersten Moment gar nich gedacht *g*)) Pro Member eine fortlaufende ID
sprich Tabelle1 für den, Tabelle2 für den..

mfg.. und vielen dank übrigens für die schnelle Antwort! =)
 
Lege eine Tabelle an mit dem Namen 'member'.
- Spaltenzahl 5 (horizontal)
- 1. spalte -> user_id, int 11, autoincrement
- 2.spalte -> user_nick, vaharchar 32
- 3.spalte -> user_name, varharchar 32
- 4.spalte -> user_email, varharchar 75
- 5.spaltte -> user_telefon, varharchar 25

usw.

nun schreibt Dein Script die Daten immer in eine neue REIHE (vertikal)
user _id wird automatisch generiert -> muss also nicht mit übergeben werden und stellt somit einen eindeutigen Schlüssel dar (autoincrement).

MfG Strike.
 
Zurück