Doublons dans base
claudio38
Messages postés
42
Statut
Membre
-
IDNoires -
IDNoires -
Bonsoir,
j'ai une bdd avec remplissage via un formulaire php
avec notamment de 2 champs dans ma bdd essentiel nommé msg_id qui s'incrémente de 1 à chaque enregistrement (définit en auto incrément dans mysql) et un 2nd appelé num qui lui aussi s'ajoute de 1 à chaque enregistrement, mon problème est l'apparition de doublons sur le champ num
voilà une partie de mon script
<form method='post' action='registre2.php' name='registre'>
<?php
// Cette requête permet de récupérer le dernier numéro entré et de lui ajouter 1 -- remplacer text par hidden pour cacher le numéro
$req1="SELECT num FROM `registre2` ORDER BY msg_ID desc limit 1";
$res = mysql_query ($req1);
while($val=mysql_fetch_array($res,$bdd))
{
$num = $val['num'];
$num++;
echo "<INPUT name=\"num\" maxlength=\"8\" type=\"text\"";
echo " size=\"8\" align=\"right\" value=\"$num\">";
}
?>
<input type='submit' value='Enregistrer' name='op1'">
Ce script peut être appelé par plusieurs personnes à la fois et donc chacune se voit retournée le même numéro
Auriez-vous une idée pour éviter ce désagrément ?
Par avance merci
j'ai une bdd avec remplissage via un formulaire php
avec notamment de 2 champs dans ma bdd essentiel nommé msg_id qui s'incrémente de 1 à chaque enregistrement (définit en auto incrément dans mysql) et un 2nd appelé num qui lui aussi s'ajoute de 1 à chaque enregistrement, mon problème est l'apparition de doublons sur le champ num
voilà une partie de mon script
<form method='post' action='registre2.php' name='registre'>
<?php
// Cette requête permet de récupérer le dernier numéro entré et de lui ajouter 1 -- remplacer text par hidden pour cacher le numéro
$req1="SELECT num FROM `registre2` ORDER BY msg_ID desc limit 1";
$res = mysql_query ($req1);
while($val=mysql_fetch_array($res,$bdd))
{
$num = $val['num'];
$num++;
echo "<INPUT name=\"num\" maxlength=\"8\" type=\"text\"";
echo " size=\"8\" align=\"right\" value=\"$num\">";
}
?>
<input type='submit' value='Enregistrer' name='op1'">
Ce script peut être appelé par plusieurs personnes à la fois et donc chacune se voit retournée le même numéro
Auriez-vous une idée pour éviter ce désagrément ?
Par avance merci
A voir également:
- Doublons dans base
- Doublons photos - Guide
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Gigaset as470h base ✓ - Forum telephonie fixe
- Formules excel de base - Guide
1 réponse
Plusieurs choses :
- si tu ne veux pas plusieurs fois le même numéro pour différentes personnes, tu dois le réserver. c-a-d après ton select tu incrémentes ta base de numéro de 1 (update registre2 set num = num+1)
Inconvénient : si ton utilisateur ne soumet pas le formulaire tu perds le numéro affecté.
- si tu as besoin d'avoir des numéros qui se suivent là ça devient plus compliqué car il est très dur de gérer les accès concurrentiels. tu devrais donné les numéros à posteriori du formulaire.
- tu fais un while pour ton fetch array alors que tu as une requête qui ne te renvoie qu'un seul enregistrement (LIMIT 1) c'est pas nécessaire
- si tu ne veux pas plusieurs fois le même numéro pour différentes personnes, tu dois le réserver. c-a-d après ton select tu incrémentes ta base de numéro de 1 (update registre2 set num = num+1)
Inconvénient : si ton utilisateur ne soumet pas le formulaire tu perds le numéro affecté.
- si tu as besoin d'avoir des numéros qui se suivent là ça devient plus compliqué car il est très dur de gérer les accès concurrentiels. tu devrais donné les numéros à posteriori du formulaire.
- tu fais un while pour ton fetch array alors que tu as une requête qui ne te renvoie qu'un seul enregistrement (LIMIT 1) c'est pas nécessaire