par
Lpu8er » 05 août 2005, 18:25
Bonjour. Je sais que cette question a déjà été posée dans ce forum, mais un problème subsiste.
Voilà, je code depuis un petit moment, et tout se passait bien, la vie est belle, les oiseaux chantent, etc, etc...
J'utilise, pour gérer les personnes inscrites, une BDD (évidemment) MySQL.
Au début, j'ai créé une table de 14 champs, avec le premier nommé id, et auto-incrémenté.
J'ai du virer l'incrémentation, pour un problème simple: je tente d'insérer des ids fixes selon mon goût.
Et c'est à partir de là où tout se met à partir de travers.
Premier message d'erreur "Duplicata du champ '2' pour la clef 1".
Je connaissais cette erreur, qui me fut fatale, et m'avait forcé dans le passé à abandonner l'un des mes codes php les plus longs, n'ayant trouvé strictement aucune solution.
Après un temps de recherche, j'ai décidé de virer le Primairy Key.
Rien de nouveau.
De le remplacer par Index.
Rien de nouveau.
De supprimer la table complétement, d'en refaire une autre, cette fois, sans auto-increment ni Primairy-Key.
Rien n'y fit: le message d'erreur demeure, même en virant le INTO de la requête, et quelque soit la valeur entrée.
Voici le code:
<?php
include("bdd_connexion.php");
if(isset($_POST['race'])) /* Si la variable $_POST['race'] existe, c'est que le formulaire a été validé ! */
{
if(isset($_POST['login']) AND !empty($_POST['login'])) /* vérif du login */
{
if(isset($_POST['password1']) AND !empty($_POST['password1']) AND ($_POST['password1'] == $_POST['password2'])) /* Vérif des passwords */
{
if(isset($_POST['mail1']) AND !empty($_POST['mail1']) AND ($_POST['mail1'] == $_POST['mail2'])) /* première vérif du mail */
{
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $_POST['mail1'])) /* vérif de la validité du mail */
{
$login = htmlentities(addslashes($_POST['login']));
$password = htmlentities(addslashes($_POST['password2']));
$mail = htmlentities(addslashes($_POST['mail2']));
$race = $_POST['race'];
if($race == 'Humain')
{
$domaine_value = '1';
}
elseif($race == 'Troll')
{
$domaine_value = '6';
}
elseif($race == 'Orc')
{
$domaine_value = '6';
}
elseif($race == 'Nain')
{
$domaine_value = '3';
}
elseif($race == 'Elfe')
{
$domaine_value = '4';
}
elseif($race == 'Lycan')
{
$domaine_value = '5';
}
elseif($race == 'Mutant')
{
$domaine_value = '7';
}
elseif($race == 'Vampire')
{
$domaine_value = '2';
}
$fiche_hrp = 'Fiche HRP';
$fiche_rp = 'Fiche RP';
$credits = 2000;
$droit = 1;
$special = 0;
$etat = 'OK';
$lifepoints = 100;
$hp_max = 100;
$users_pris = mysql_query("SELECT * FROM utilisateurs WHERE login='$login'") or die(mysql_error());
$nb_users_pris = mysql_numrows($users_pris);
if($nb_users_pris != 0)
{
$infos = 'Ce nom d\'utilisateur est déjà pris.';
}
else
{
$req_last_user = mysql_query("SELECT * FROM utilisateurs ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
$array_last_user = mysql_fetch_array($req_last_user);
$last_id = $array_last_user['id'];
$nouvel_id = $last_id + 1;
mysql_query("INSERT INTO utilisateurs VALUES('$nouvel_id', '$login', '$password', '$mail', '$race', '$domaine_value', '$fiche_hrp', '$fiche_rp', '$credits', '$droit', '$special', '$etat', '$lifepoints', '$hp_max')") or die(mysql_error());
$date = date('d/m/Y');
$type = 'Inscription';
$action = 'Inscription de '.$login.' le '.$date.', de race '.$race.'. IP inscription: '.$_POST['ip'];
mysql_query("INSERT INTO log VALUES('', '$type', '$action')") or die(mysql_error());
$time_inscrit = time();
$time_last_creds = time();
$time_last_connect = time();
$time_start_state = time();
$time_last_delestage = time();
mysql_query("INSERT INTO timesystem VALUES('$nouvel_id', '$time_inscrit', '$time_last_creds', '$time_last_connect', '$time_start_state', '$time_last_delestage')") or die(mysql_error());
$infos = 'Inscription réussie.<br />Vous pouvez dès à présent vous connecter en utilisant votre login et mot de passe.';
}
}
else
{
$infos = 'Adresse Mail invalide.';
}
}
else
{
$infos = 'Veuillez saisir les adresses mail correctement.';
}
}
else
{
$infos = 'Veuillez saisir les passwords correctement, merci.';
}
}
else
{
$infos = 'Veuillez saisir un login correct.';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Unreal</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="inscription" href="unreal_design1.css" />
</head>
<body>
<?php
include("logo_epure.php");
?>
<h3>Inscription</h3>
<p><?php echo $infos; ?></p>
<p>
<a href="index.php">Retour</a>
</p>
<?php
include("pied_de_page.php");
?>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Unreal</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="inscription" href="unreal_design1.css" />
</head>
<body>
<?php
include("logo.php");
?>
<h3>Inscription</h3>
<p>Veuillez remplir le formulaire suivant pour vous inscrire, merci.</p>
<form method="post" action="inscription.php">
<p>
Nom d'utilisateur : <input type="text" name="login" size="15" maxlength="15" /><em>15 caractères maximum</em><br />
<br />
Mot de passe : <input type="password" name="password1" size="15" maxlength="15" /><em>15 carac. Max. Choisissez bien.</em><br />
<br />
Adresse Mail : <input type="text" name="mail1" /><em>Veuillez entrer une adresse valide.</em><br />
<br />
Confirmation Mail : <input type="text" name="mail2" /><em>Vous devez saisir une adresse identique à la première.</em><br />
<br />
Race du personnage : <select name="race">
<option value="Humain">Humain</option>
<option value="Nain">Nain</option>
<option value="Elfe">Elfe</option>
<option value="Mutant">Mutant</option>
<option value="Orc">Orc</option>
<option value="Lycan">Lycan</option>
<option value="Vampire">Vampire</option>
<option value="Troll">Troll</option>
</select><em>Vous ne pourrez changer de race que grâce à certains objets, donc choisissez bien. Votre race déterminera votre domaine de départ</em><br />
<br />
Confirmation Mot de Passe : <input type="password" name="password2" size="15" maxlength="15" /><em>Il doit être rigoureusement identique au premier saisi.</em><br />
<br />
<br />
<?php $ip_user = $_SERVER['REMOTE_ADDR']; ?>
<input type="hidden" name="ip" value="<?php echo $ip_user; ?>" />
<input type="submit" value="Soumettre l'inscription" />
</p>
<?php
include("pied_de_page.php");
?>
</form>
</body>
</html>
<?php
}
En comptant beaucoup sur votre aide, car je ne trouve aucune solution... Merci d'avance.
Lpu8er
Bonjour. Je sais que cette question a déjà été posée dans ce forum, mais un problème subsiste.
Voilà, je code depuis un petit moment, et tout se passait bien, la vie est belle, les oiseaux chantent, etc, etc...
J'utilise, pour gérer les personnes inscrites, une BDD (évidemment) MySQL.
Au début, j'ai créé une table de 14 champs, avec le premier nommé id, et auto-incrémenté.
J'ai du virer l'incrémentation, pour un problème simple: je tente d'insérer des ids fixes selon mon goût.
Et c'est à partir de là où tout se met à partir de travers.
Premier message d'erreur "Duplicata du champ '2' pour la clef 1".
Je connaissais cette erreur, qui me fut fatale, et m'avait forcé dans le passé à abandonner l'un des mes codes php les plus longs, n'ayant trouvé strictement aucune solution.
Après un temps de recherche, j'ai décidé de virer le Primairy Key.
Rien de nouveau.
De le remplacer par Index.
Rien de nouveau.
De supprimer la table complétement, d'en refaire une autre, cette fois, sans auto-increment ni Primairy-Key.
Rien n'y fit: le message d'erreur demeure, même en virant le INTO de la requête, et quelque soit la valeur entrée.
Voici le code:
[php]<?php
include("bdd_connexion.php");
if(isset($_POST['race'])) /* Si la variable $_POST['race'] existe, c'est que le formulaire a été validé ! */
{
if(isset($_POST['login']) AND !empty($_POST['login'])) /* vérif du login */
{
if(isset($_POST['password1']) AND !empty($_POST['password1']) AND ($_POST['password1'] == $_POST['password2'])) /* Vérif des passwords */
{
if(isset($_POST['mail1']) AND !empty($_POST['mail1']) AND ($_POST['mail1'] == $_POST['mail2'])) /* première vérif du mail */
{
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $_POST['mail1'])) /* vérif de la validité du mail */
{
$login = htmlentities(addslashes($_POST['login']));
$password = htmlentities(addslashes($_POST['password2']));
$mail = htmlentities(addslashes($_POST['mail2']));
$race = $_POST['race'];
if($race == 'Humain')
{
$domaine_value = '1';
}
elseif($race == 'Troll')
{
$domaine_value = '6';
}
elseif($race == 'Orc')
{
$domaine_value = '6';
}
elseif($race == 'Nain')
{
$domaine_value = '3';
}
elseif($race == 'Elfe')
{
$domaine_value = '4';
}
elseif($race == 'Lycan')
{
$domaine_value = '5';
}
elseif($race == 'Mutant')
{
$domaine_value = '7';
}
elseif($race == 'Vampire')
{
$domaine_value = '2';
}
$fiche_hrp = 'Fiche HRP';
$fiche_rp = 'Fiche RP';
$credits = 2000;
$droit = 1;
$special = 0;
$etat = 'OK';
$lifepoints = 100;
$hp_max = 100;
$users_pris = mysql_query("SELECT * FROM utilisateurs WHERE login='$login'") or die(mysql_error());
$nb_users_pris = mysql_numrows($users_pris);
if($nb_users_pris != 0)
{
$infos = 'Ce nom d\'utilisateur est déjà pris.';
}
else
{
$req_last_user = mysql_query("SELECT * FROM utilisateurs ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
$array_last_user = mysql_fetch_array($req_last_user);
$last_id = $array_last_user['id'];
$nouvel_id = $last_id + 1;
mysql_query("INSERT INTO utilisateurs VALUES('$nouvel_id', '$login', '$password', '$mail', '$race', '$domaine_value', '$fiche_hrp', '$fiche_rp', '$credits', '$droit', '$special', '$etat', '$lifepoints', '$hp_max')") or die(mysql_error());
$date = date('d/m/Y');
$type = 'Inscription';
$action = 'Inscription de '.$login.' le '.$date.', de race '.$race.'. IP inscription: '.$_POST['ip'];
mysql_query("INSERT INTO log VALUES('', '$type', '$action')") or die(mysql_error());
$time_inscrit = time();
$time_last_creds = time();
$time_last_connect = time();
$time_start_state = time();
$time_last_delestage = time();
mysql_query("INSERT INTO timesystem VALUES('$nouvel_id', '$time_inscrit', '$time_last_creds', '$time_last_connect', '$time_start_state', '$time_last_delestage')") or die(mysql_error());
$infos = 'Inscription réussie.<br />Vous pouvez dès à présent vous connecter en utilisant votre login et mot de passe.';
}
}
else
{
$infos = 'Adresse Mail invalide.';
}
}
else
{
$infos = 'Veuillez saisir les adresses mail correctement.';
}
}
else
{
$infos = 'Veuillez saisir les passwords correctement, merci.';
}
}
else
{
$infos = 'Veuillez saisir un login correct.';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Unreal</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="inscription" href="unreal_design1.css" />
</head>
<body>
<?php
include("logo_epure.php");
?>
<h3>Inscription</h3>
<p><?php echo $infos; ?></p>
<p>
<a href="index.php">Retour</a>
</p>
<?php
include("pied_de_page.php");
?>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Unreal</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="inscription" href="unreal_design1.css" />
</head>
<body>
<?php
include("logo.php");
?>
<h3>Inscription</h3>
<p>Veuillez remplir le formulaire suivant pour vous inscrire, merci.</p>
<form method="post" action="inscription.php">
<p>
Nom d'utilisateur : <input type="text" name="login" size="15" maxlength="15" /><em>15 caractères maximum</em><br />
<br />
Mot de passe : <input type="password" name="password1" size="15" maxlength="15" /><em>15 carac. Max. Choisissez bien.</em><br />
<br />
Adresse Mail : <input type="text" name="mail1" /><em>Veuillez entrer une adresse valide.</em><br />
<br />
Confirmation Mail : <input type="text" name="mail2" /><em>Vous devez saisir une adresse identique à la première.</em><br />
<br />
Race du personnage : <select name="race">
<option value="Humain">Humain</option>
<option value="Nain">Nain</option>
<option value="Elfe">Elfe</option>
<option value="Mutant">Mutant</option>
<option value="Orc">Orc</option>
<option value="Lycan">Lycan</option>
<option value="Vampire">Vampire</option>
<option value="Troll">Troll</option>
</select><em>Vous ne pourrez changer de race que grâce à certains objets, donc choisissez bien. Votre race déterminera votre domaine de départ</em><br />
<br />
Confirmation Mot de Passe : <input type="password" name="password2" size="15" maxlength="15" /><em>Il doit être rigoureusement identique au premier saisi.</em><br />
<br />
<br />
<?php $ip_user = $_SERVER['REMOTE_ADDR']; ?>
<input type="hidden" name="ip" value="<?php echo $ip_user; ?>" />
<input type="submit" value="Soumettre l'inscription" />
</p>
<?php
include("pied_de_page.php");
?>
</form>
</body>
</html>
<?php
}[/php]
En comptant beaucoup sur votre aide, car je ne trouve aucune solution... Merci d'avance.
Lpu8er