Fehler bei user_add() Funktion

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Yast
Mitglied
Beiträge: 2
Registriert: 15.03.2008 22:18

Fehler bei user_add() Funktion

Beitrag von Yast »

Hi,

hoffe mal das mir jemand helfen kann!
Folgendes: Ich wollte die Funktion user_add() auf meiner Seite verwenden um Benutzer im Forum gelichzeitig zu registrieren! Klappt soweit mal ganz gut! Es werden Benutzer im forum angelegt aber es wird immer folgende Fehlermeldung ausgegeben:
General Error

SQL ERROR [ mysql4 ]

Duplicate entry 'num_users' for key 1 [1062]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

Hier meine Funktion:

Code: Alles auswählen

function forum_useradd($username,$passwd1,$email1)
{ 
  define('IN_PHPBB', true);
  global $phpbb_root_path;
  global $phpEx;
  global $db;
  global $config;
  global $user;
  global $auth;
  global $cache;
  global $template;
  $phpbb_root_path = 'forum/';

  $phpEx = substr(strrchr(__FILE__, '.'), 1);
  include($phpbb_root_path . 'common.php');
  include($phpbb_root_path . 'includes/functions_user.php');
  include($phpbb_root_path . 'includes/ucp/ucp_register.php');

  $forumpassword=$passwd1;
  $forumusername=$username;
  $username_clean=strtolower($forumusername);
  $user_email=$email1;

  $sql_ary = array(
  		'user_id'           => $db->sql_nextid(),
        'username'          => $forumusername,
        'username_clean'    => $username_clean,
        'user_password'     => phpbb_hash($forumpassword),
        'user_pass_convert' => 0,
        'user_email'        => $user_email,
        'user_email_hash'   => crc32(strtolower($user_email)) . strlen($user_email),
        'group_id'          => 2,
        'user_type'         => 0,
	     'user_timezone' 	=> '1.00',
	     'user_regdate' 		=> time(),
	     'user_lang' 		=> 'de',
	     'user_dateformat' 	=> 'd M Y H:i',
	     'user_style' 		=> 3,
    );
	
  user_add($sql_ary);
}
EDIT: Es muss irgendwas mit "'user_type' => 0" zu tun haben! Weiss einer genau was man da angeben muss? wenn ich den Wert auf 2 setze, kommt zwar kein Fehler mehr aber der User ist inaktiv!

MFG
Yast
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Beitrag von phillip »

das sagt ja schon alles:
Duplicate entry 'num_users' for key 1 [1062]
Das heisst, dass dieser Eintrag schon vorhanden ist... ;-)
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

IMHO der Übeltäter:

Code: Alles auswählen

'user_id'           => $db->sql_nextid(), 
Woher soll das System denn vorher wissen, welche ID die nächste sein soll (wenn noch nicht einmal die Tabelle angegeben wird). Ich denke du brauchst diese Zeile nicht.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17412
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Korrekt.

Das Feld user_id ist autoinkrementel und muss somit nicht angegeben werden.

Das Feld user_type muss auch nicht angegeben werden, da der Standard Wert 0 ist. ( Ausser Du möchtest einen anderen Type eintragen )

Wegen dem "inaktiven" User könntest Du noch die Funktion:

Code: Alles auswählen

/**
* Flips user_type from active to inactive and vice versa, handles group membership updates
*
* @param string $mode can be flip for flipping from active/inactive, activate or deactivate
*/
function user_active_flip($mode, $user_id_ary, $reason = INACTIVE_MANUAL)
aus der includes/functions_user.php verwenden.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“