Zahl automatisch weiterführen lassen?

paulee

Erfahrenes Mitglied
Hallooo! :)


Habe ein kleines login- System.
In einer Datei kann man die Benutzer automatisch in die mySQL DB eintragen lassen.
So, nun möchte ich das aber nicht immer in der PHP- Datei eingeben, sondern ein Formular dafür machen.


Die Datei, in der man die Benutzer Anlegen kann. Wenn man diese Datei ausführt, werden die Werte in die Datenbank geschrieben.
PHP:
<?php 
// Definition der Benutzer 
$benutzer[0]["Nickname"] ="testname"; 
$benutzer[0]["Kennwort"] = "test"; 
$benutzer[0]["Nachname"] = "testbenutzer"; 
$benutzer[0]["Vorname"] = "testvorname"; 

$benutzer[1]["Nickname"] ="testname"; 
$benutzer[1]["Kennwort"] = "test"; 
$benutzer[1]["Nachname"] = "testbenutzer"; 
$benutzer[1]["Vorname"] = "testvorname"; 

// Verbindung herstellen
$connectionid  = mysql_connect ("xxxx", "xxxx", "xxxxx"); 
if (!mysql_select_db ("xxxxxx", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

mysql_query ("DELETE FROM benutzerdaten"); 

while (list ($key, $value) = each ($benutzer)) 
{ 
  $sql = "INSERT INTO ". 
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
  "VALUES ('".$value["Nickname"]."', '". 
                       md5 ($value["Kennwort"])."', '". 
                       $value["Nachname"]."', '". 
                       $value["Vorname"]."')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
} 
?>

Das Problem:
Ich will das ja nun mit einem Formular machen ... , aber man muss bei:
PHP:
$benutzer[0]["Nickname"] ="testname";
für jeden Benutzer eine Zahl höher eingeben , also so:

PHP:
$benutzer[1]["Nickname"] ="testname"; 
$benutzer[2]["Nickname"] ="testname"; 
...

Nun meine Frage, kann ich diese Nummer automatisch weiterführen lassen?



lg
 
Zuletzt bearbeitet:
Wenn du nur einen Benutzer auf einmal anlegen willst, sind die Zahlen unwichtig. Wenn du mehrere anlegen willst, musst du irgendwie alle Usernamen zählen, und dann mit einer for-Schleife die Zahl erhöhen, aer ob das klappt und wie genau man das jetzt machen muss, kann ich dir auch (noch) nicht sagen.
 
Ich kann mit dem Formular ja immer nur einen Benutzer anlegen.
Aber wie ich vermutet habe, überschreibt die PHP- Datei den Wert in der Datenbank immer!
 
Ich denke mal die Datenbank ist folgendermaßen augebaut.
ID | USER | PASSWORT.
Wenn du nun der Splate ID den Wert autoincrement und primaryschlüssel gibst, wird immer eine neuer Eintrag mit einer neuen ID angelegt. Da wird also nichts überschrieben. Auch sonst nicht, da du mit INSERT INTO immer neue Einträge anlegst.
 
Bei mir gehts irgendwie nicht.
Habe den Wert Id als Primärschlüssel definiert!


Wenn ich nun im PHP- code
statt:
PHP:
$benutzer[0]["Nickname"] ="testname"; 
$benutzer[0]["Vorname"] ="vorname";

PHP:
$benutzer["Nickname"] ="testname"; 
$benutzer["Vorname"] ="vorname";

...schreibe, generiert er für jeden Wert eine eigene Zeile.
 
Hier. Das hab ich mal vor langer Zeit gemacht. Hab mal das gleiche Login verwendet.
Musst die Dateien noch in PHP Dateioen umbennen. Dann sollte es klappen. Datenbank verbindung musst du auch noch berichtigen.
Zum testen die user_anlegen.php aufrufen.
 

Anhänge

Hallo,

sorry erstmal, dass ich den uralten Thread ausgrabe aber ich habe da ein Problem mit den Scripten von fanste. Ich weiß nich ob es an dem Hoster liegt oder am Script, jedenfalls bekomme ich bei Verwendung von fanstes beiden Scripten(ja hab alles beachtet, Datenbank erstellt, Datenbank-Daten eingetragen usw..) auf den Lycos Tripod Servern diesen Fehler:

Code:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1


Hier das Script:
PHP:
<?php

$benutzer[1]["Email"] = $_POST['email'];
$benutzer[1]["Passwort"] = $_POST['passwort'];
$benutzer[1]["CharName"] = $_POST['charname'];

$connectionid  = mysql_connect ("localhost", "XXXXXX", ""); 
if (!mysql_select_db ("XXXXXXXXX", $connectionid))  
{
  die ("Can't connect to the database.");
}


while (list ($key, $value) = each ($benutzer))
{
  $sql = "INSERT INTO ".
    "accounts (mail, pass, charn) ".
  "VALUES ('".$value["Email"]."', '".
                       $value["Passwort"]."', '".
                       $value["CharName"]."', '";
  mysql_query ($sql) or die(mysql_error());

  if (mysql_affected_rows ($connectionid) > 0)
  {
    echo "Your account was successfully created.<br>\n";
  }
  else
  {
   echo "Wasn't able to create account.<br>\n";
  }
}
?>

(Das kein Passwort eingetragen ist und noch localhost da steht ist richtig so, laut Lycos braucht man das nicht.)
Ich habe keine Ahnung spezifisch PHP und MySQL, da ich normalerweise nur scripte.

Ich hoffe auf Hilfe.:)
 
Fehler liegt in folgender Zeile:
PHP:
  $sql = "INSERT INTO ". 
    "accounts (mail, pass, charn) ". 
  "VALUES ('".$value["Email"]."', '". 
                       $value["Passwort"]."', '". 
                       $value["CharName"]."', '";
In der letzen Zeile hast du $value["CharName"]."', '"; stehen, nach dem letzen übergebenden Argument machst du ein Komma und ein '. Das ist für SQL normalerweise ein Zeichen, dass noch was kommt, nachdem aber nichts folgt mault es natürlich. Die ganze Zeile müsste also so aussehen:
PHP:
  $sql = "INSERT INTO ". 
    "accounts (mail, pass, charn) ". 
  "VALUES ('".$value["Email"]."', '". 
                       $value["Passwort"]."', '". 
                       $value["CharName"]."'";


Der Doc!
 
Danke für deine Hilfe, aber leider funktioniert es immer noch nicht, ich bekomme den selben Fehler.
Hier könnt ihr euch ''live'' ein Bild davon machen.
 
Zuletzt bearbeitet:
Zurück