éviter enregistrement multiple dans mysql
Résolu/Fermé
Flohti
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
-
14 janv. 2008 à 10:13
msi79 - 16 oct. 2011 à 21:33
msi79 - 16 oct. 2011 à 21:33
A voir également:
- éviter enregistrement multiple dans mysql
- Éviter pub youtube - Accueil - Streaming
- Liste déroulante choix multiple excel - Guide
- Mysql community server - Télécharger - Bases de données
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Ecran multiple pc - Guide
11 réponses
Flohti
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
15
14 janv. 2008 à 18:44
14 janv. 2008 à 18:44
Ce system est en fait un systeme de commande, ce qui fait aussi qu'il m'affiche, par la suite, plusieurs fois la même commande^^
TRES TRES GROS PROBLEME !!!
Merci à vous
TRES TRES GROS PROBLEME !!!
Merci à vous
CHAP26
Messages postés
35
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2011
11
14 janv. 2008 à 23:59
14 janv. 2008 à 23:59
Bonjour,
Pourrais-tu réexpliquer ton problème car je ne suis pas sûr d'avoir bien compris.
Tu entre un 1er enregistrement avec 1, puis le deuxième avec 2, etc...
Ou alors tu entre un 1er enregistrement avec 1, puis le deuxième peut être 3 et dans ce cas là le troisième enregistrement doit s'incrémenter à partir de 3.
Réexplique pour que je sois sûr.
Autrement en attendant quelques pistes :
autoincrémenter la champs id de ta base
Requête permettant de sélectionner le dernier id :
SELECT LAST_INSERT_ID() FROM table ou
ORDER BY id DESC LIMIT 0,1
Cordialement
David
Pourrais-tu réexpliquer ton problème car je ne suis pas sûr d'avoir bien compris.
Tu entre un 1er enregistrement avec 1, puis le deuxième avec 2, etc...
Ou alors tu entre un 1er enregistrement avec 1, puis le deuxième peut être 3 et dans ce cas là le troisième enregistrement doit s'incrémenter à partir de 3.
Réexplique pour que je sois sûr.
Autrement en attendant quelques pistes :
autoincrémenter la champs id de ta base
Requête permettant de sélectionner le dernier id :
SELECT LAST_INSERT_ID() FROM table ou
ORDER BY id DESC LIMIT 0,1
Cordialement
David
Flohti
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
15
15 janv. 2008 à 09:34
15 janv. 2008 à 09:34
Salut CHAP26,
En fait ce n'est pas tout à fait ça, je n'ai pas d'autoincrément sur cette table, id est en réalité ma variable session qui identifie un utilisateur.
J'enregistre donc un id qui peut être à n'importe quel moment 103, 5062, 56 (ou d'autre, si tu vois ce que je veux dire).
Mon problème est que ma requête d'enregistrement, on va dire, s'exécute plusieurs fois. Puisque je me retrouve à avoir 4 enregistrements identiques.
Pour être très très précis :
- Je commence par compter les enregistrements qui ont été fait sous un identifiant dans la journée.
- Je génère ensuite automatiquement un numéro de commande du type 2 aa mm jj id +le numéro de l'entrée. J'explique ce point :
° aa = année avec deux chiffres (en ce moment : 08)
° mm = mois en cours (pareil : 01)
° jj = le jour (donc aujourd'hui : 15)
° id = ma variable de session sur quatre chiffres (exemple pour 103 : 0103)
° et ensuite le numéro de l'entrée dans la journée (et c'est la le gros problème : le premier, aucun, mais le deuxième peut être n'importe quoi suivant le nombre de fois qu'il m'a enregistré le premier.
ça donne un truc du genre : 2 08 01 15 0103 01 (génération automatique d'un numéro de commande forcément unique qui en plus contient certaines informations).
Mon petit script de génération de ce numéro :
_________________________________________________________
// je met mon id sur quatre chiffres :
if ($_SESSION['id'] < 10) {
$ident = '000' . $_SESSION['id']; }
elseif ($_SESSION['id'] < 100) {
$ident = '00' . $_SESSION['id']; }
elseif ($_SESSION['id'] < 1000) {
$ident = '0' . $_SESSION['id']; }
else { $ident = $_SESSION['id']; }
// je prépare la partie date de mon numéro :
$jour = date('d'); $mois = date('m'); $an = date('y');
// pour le compte des entrée de la journée :
$time = mktime(0, 0, 0, $mois, $jour, $an);
// je compte donc les entrée de la journée pour cet id :
mysql_connect("****", "****", "****");
mysql_select_db("****");
$compte = mysql_query("SELECT COUNT(*) AS nombre FROM en_cours WHERE id='$id' AND date>'$time'");
$combien = mysql_fetch_array($compte);
$combien = $combien['nombre'] + 1;
// ma dernière partie, pour l'avoir sur deux chiffres :
if ($combien < 10) { $combien = '0' . $combien; }
else {}
// et enfin je monte mon numéro unique de commande :
$numerocom = '2 ' . $an . ' ' . $mois . ' ' . $jour . ' ' . $ident . ' ' . $combien; $ht = ''; $tva = '';
// sur la fin la partie enregistrement :
mysql_query("UPDATE devis SET numerocom='$numerocom' WHERE numero='$numero' AND id='$id'");
mysql_query("INSERT INTO en_cours VALUES('$id', '$numerocom', '$total', '$numcom', '$date', 'attente')");
_________________________________________________________
J'espère avoir réussi à être des plus explicite possible afin que tout le monde comprenne (des fois qu'un plus débutant que moi ai la solution^^).
Je vous remercie tous (surtout toi CHAP26) de vous pencher dessus, ce truc est plutôt embêtant :
même si je reprennais la dernière entrée pour générer, au moment d'afficher les commandes du client, il y a plusieurs fois la même commande (...).
Voilou voili voilà.
En fait ce n'est pas tout à fait ça, je n'ai pas d'autoincrément sur cette table, id est en réalité ma variable session qui identifie un utilisateur.
J'enregistre donc un id qui peut être à n'importe quel moment 103, 5062, 56 (ou d'autre, si tu vois ce que je veux dire).
Mon problème est que ma requête d'enregistrement, on va dire, s'exécute plusieurs fois. Puisque je me retrouve à avoir 4 enregistrements identiques.
Pour être très très précis :
- Je commence par compter les enregistrements qui ont été fait sous un identifiant dans la journée.
- Je génère ensuite automatiquement un numéro de commande du type 2 aa mm jj id +le numéro de l'entrée. J'explique ce point :
° aa = année avec deux chiffres (en ce moment : 08)
° mm = mois en cours (pareil : 01)
° jj = le jour (donc aujourd'hui : 15)
° id = ma variable de session sur quatre chiffres (exemple pour 103 : 0103)
° et ensuite le numéro de l'entrée dans la journée (et c'est la le gros problème : le premier, aucun, mais le deuxième peut être n'importe quoi suivant le nombre de fois qu'il m'a enregistré le premier.
ça donne un truc du genre : 2 08 01 15 0103 01 (génération automatique d'un numéro de commande forcément unique qui en plus contient certaines informations).
Mon petit script de génération de ce numéro :
_________________________________________________________
// je met mon id sur quatre chiffres :
if ($_SESSION['id'] < 10) {
$ident = '000' . $_SESSION['id']; }
elseif ($_SESSION['id'] < 100) {
$ident = '00' . $_SESSION['id']; }
elseif ($_SESSION['id'] < 1000) {
$ident = '0' . $_SESSION['id']; }
else { $ident = $_SESSION['id']; }
// je prépare la partie date de mon numéro :
$jour = date('d'); $mois = date('m'); $an = date('y');
// pour le compte des entrée de la journée :
$time = mktime(0, 0, 0, $mois, $jour, $an);
// je compte donc les entrée de la journée pour cet id :
mysql_connect("****", "****", "****");
mysql_select_db("****");
$compte = mysql_query("SELECT COUNT(*) AS nombre FROM en_cours WHERE id='$id' AND date>'$time'");
$combien = mysql_fetch_array($compte);
$combien = $combien['nombre'] + 1;
// ma dernière partie, pour l'avoir sur deux chiffres :
if ($combien < 10) { $combien = '0' . $combien; }
else {}
// et enfin je monte mon numéro unique de commande :
$numerocom = '2 ' . $an . ' ' . $mois . ' ' . $jour . ' ' . $ident . ' ' . $combien; $ht = ''; $tva = '';
// sur la fin la partie enregistrement :
mysql_query("UPDATE devis SET numerocom='$numerocom' WHERE numero='$numero' AND id='$id'");
mysql_query("INSERT INTO en_cours VALUES('$id', '$numerocom', '$total', '$numcom', '$date', 'attente')");
_________________________________________________________
J'espère avoir réussi à être des plus explicite possible afin que tout le monde comprenne (des fois qu'un plus débutant que moi ai la solution^^).
Je vous remercie tous (surtout toi CHAP26) de vous pencher dessus, ce truc est plutôt embêtant :
même si je reprennais la dernière entrée pour générer, au moment d'afficher les commandes du client, il y a plusieurs fois la même commande (...).
Voilou voili voilà.
CHAP26
Messages postés
35
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2011
11
15 janv. 2008 à 10:24
15 janv. 2008 à 10:24
Re,
Ton numéro de commande arrive correctement dans ta table (2 08 01 15 0103 01), si je comprend bien.
En exécutant seulement une fois ton code, tu te retrouves avec 4 enregistrements ?
Si oui, essayes de regarder si ta requête insert into ne se trouve pas dans une boucle de type for, do while ou while.
Sinon donne moi la structure de tes tables que je fasse un essai.
Cordialement
David
Ton numéro de commande arrive correctement dans ta table (2 08 01 15 0103 01), si je comprend bien.
En exécutant seulement une fois ton code, tu te retrouves avec 4 enregistrements ?
Si oui, essayes de regarder si ta requête insert into ne se trouve pas dans une boucle de type for, do while ou while.
Sinon donne moi la structure de tes tables que je fasse un essai.
Cordialement
David
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
15 janv. 2008 à 10:28
15 janv. 2008 à 10:28
salut,
si c'est identifiant tu devrais peut être commencer par ajouter une contrainte d'unicité sur le champ de ta table, non ?
ça ne résout pas le problème actuel (quoique…) mais ce sera plus sûr en production.
si c'est identifiant tu devrais peut être commencer par ajouter une contrainte d'unicité sur le champ de ta table, non ?
ça ne résout pas le problème actuel (quoique…) mais ce sera plus sûr en production.
Flohti
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
15
15 janv. 2008 à 10:34
15 janv. 2008 à 10:34
oh p..... mais quel c.., tu as raison, j'ai même pas regardé cette con.....
et beh voui, je suis effectivement dans une boucle^^. sniff.
je suis désolé les gars, je m'incline humblement.
Merci David.
Ben ça fonctionne maintenant quoi, j'y ai pensé hier soir, mais j'avais pas mon pc, et puis ce matin, ben...
des fois il y a des trucs^^
Ben résolu quoi.
et beh voui, je suis effectivement dans une boucle^^. sniff.
je suis désolé les gars, je m'incline humblement.
Merci David.
Ben ça fonctionne maintenant quoi, j'y ai pensé hier soir, mais j'avais pas mon pc, et puis ce matin, ben...
des fois il y a des trucs^^
Ben résolu quoi.
CHAP26
Messages postés
35
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2011
11
15 janv. 2008 à 10:57
15 janv. 2008 à 10:57
for ($coup_de_fouet=1; $coup_de_fouet<=100; $coup_de_fouet++) {
echo 'Flohti vient de dire Aïïïïïïe'.<br />;
}
T'as de la chance aujourd'hui je suis de bonne humeur et j'ai arrêté le compteur à 100 ;-)))))))))))))))))))))))
Bonne continuation
David
echo 'Flohti vient de dire Aïïïïïïe'.<br />;
}
T'as de la chance aujourd'hui je suis de bonne humeur et j'ai arrêté le compteur à 100 ;-)))))))))))))))))))))))
Bonne continuation
David
Flohti
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
15
15 janv. 2008 à 11:05
15 janv. 2008 à 11:05
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe...
lol, excuse moi encore, bonne journée.
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe
Flohti vient de dire Aïïïïïïe...
lol, excuse moi encore, bonne journée.
moi j'ai le meme problème . j'ai pas mi de boucle . mais je remarque dans myql que mes enregistrement sont repetés plusieurs fois
CHAP26
Messages postés
35
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2011
11
16 oct. 2011 à 20:15
16 oct. 2011 à 20:15
Wahouuuu un post de 2008 :-)))
Peux-tu donner un ptit bout de code pour essayer de comprendre ?
Cordialement
David
Peux-tu donner un ptit bout de code pour essayer de comprendre ?
Cordialement
David
voici mon code :
<?php $date = date("d-m-Y"); $heure = date("H:i"); echo 'Nous sommes le '.$date.' et il est '.$heure; ?> <?php if (isset($_POST["valider"])) { //$matricule=trim($_POST["matricule"]) $questionnaire=trim($_POST["questionnaire"]); $region=trim($_POST["region"]); $departement=trim($_POST["departement"]); $sousprefecture=trim($_POST["sousprefecture"]); $secteur=trim($_POST["secteur"]); $village=trim($_POST["village"]); $nom=trim($_POST["nom"]); $zone=trim($_POST["zone"]); $pere=trim($_POST["pere"]); $mere=trim($_POST["mere"]); $doc=trim($_POST["doc"]); $ndoc=trim($_POST["ndoc"]); $autredoc=trim($_POST["autredoc"]); $datarriv=trim($_POST["datarriv"]); $postale=trim($_POST["postale"]); $tel=trim($_POST["tel"]); $cel=trim($_POST["cel"]); $nom_rep=trim($_POST["nom_rep"]); $tel_rep=trim($_POST["tel_rep"]); $cel_rep=trim($_POST["cel_rep"]); //$age=trim($_POST["age"]); //$agent_sid=trim($_POST["agent_sid"]); //$tuteur_sid=trim($_POST["tuteur_sid"]); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $agentcol=trim($_POST["agentcol"]); $chef=trim($_POST["chef"]); $agentcod=trim($_POST["agentcod"]); $operateur=trim($_POST["operateur"]); $agentval=trim($_POST["agentval"]); $agentcor=trim($_POST["agentcor"]); //$dateagenttrim($_POST["dateagent"]); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $regionf=trim($_POST["regionf"]); $departementf=trim($_POST["departementf"]); $prefecturef=trim($_POST["prefecturef"]); $communef=trim($_POST["communef"]); $statutav=trim($_POST["statutav"]); $villagef=trim($_POST["villagef"]); $autrestatav=trim($_POST["autrestatav"]); $npiecef=trim($_POST["npiecef"]); $npers_av=trim($_POST["npers_av"]); $statut_av=trim($_POST["statut_av"]); $autre_av=trim($_POST["autre_av"]); $ndoc=trim($_POST["ndoc"]); $autredoc=trim($_POST["autredoc"]); $npiece_ap=trim($_POST["npiece_ap"]); $npers_ap=trim($_POST["npers_ap"]); $santef=trim($_POST["santef"]); $nbrepdgif=trim($_POST["nbrepdgif"]); $problemef=trim($_POST["problemef"]); $autreproblemef=trim($_POST["autreproblemef"]); $enceintef=trim($_POST["enceintef"]); $pkquitte=trim($_POST["pkquitte"]); $autrepkquitte=trim($_POST["autrepkquitte"]); $priorite1=trim($_POST["priorite1"]); $priorite2=trim($_POST["priorite2"]); $priorite3=trim($_POST["priorite3"]); $autrepriorite=trim($_POST["autrepriorite"]); $acceptef=trim($_POST["acceptef"]); $conditionf=trim($_POST["conditionf"]); $ret=trim($_POST["ret"]); $incitationf=trim($_POST["incitationf"]); $autre_ret=trim($_POST["autre_ret"]); $structuref=trim($_POST["structuref"]); $autre_strut=trim($_POST["autre_strut"]); $piececours=trim($_POST["piececours"]); $ouipreciser=trim($_POST["ouipreciser"]); $expirationf=trim($_POST["expirationf"]); $docadm=trim($_POST["docadm"]); $extraitf=trim($_POST["extraitf"]); $preciser_ext=trim($_POST["preciser_ext"]); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (empty($questionnaire)) { $msg="<font color=red>Veuillez saisir le numero du questionnaire!!!!!!!!!</font>"; } else { mysql_connect("localhost","root","") or die("erreur de connexion"); mysql_select_db("nosvictimes") or die("Erreur de selection de la BD"); $sql = "INSERT INTO agent(id_agent,agentcol,chef,agentcod,operateur,agentval,agentcor,dateagent) VALUES('','".$agentcol."','".$chef."','".$agentcod."','".$operateur."','".$agentval."','".$agentcor."','')"; //on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo 'Les informations sur les agents ont été ajoutées dans la base de données.</br>'; $agent_sid= mysql_insert_id(); $sql = "INSERT INTO info(id_info,regionf,departementf,prefecturef,communef,villagef,statutav,autrestatav,npiecef,npers_av,statut_av,autre_av,npiece_ap,npers_ap,santef,nbrepdgif,problemef,autreproblemef,enceintef,pkquitte,autrepkquitte,priorite1,priorite2,priorite3,autrepriorite,acceptef,conditionf,ret,incitationf,autre_ret,structuref,autre_strut,piececours,ouipreciser,expirationf,docadm,extraitf,preciser_ext) VALUES('','".$regionf."','".$departementf."','".$prefecturef."','".$communef."','".$villagef."','".$statutav."','".$autrestatav."','".$npiecef."','".$npers_av."','".$statut_av."','".$autre_av."','".$npiece_ap."','".$npers_ap."','".$santef."','".$nbrepdgif."','".$problemef."','".$autreproblemef."','".$enceintef."','".$pkquitte."','".$autrepkquitte."','".$priorite1."','".$priorite2."','".$priorite3."','".$autrepriorite."','".$acceptef."','".$conditionf."','".$ret."','".$incitationf."','".$autre_ret."','".$structuref."','".$autre_strut."','".$piececours."','".$ouipreciser."','".$expirationf."','".$docadm."','".$extraitf."','".$preciser_ext."')"; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo 'Les informations supplémentaire sur la victime ont été ajoutées dans la base de données.</br>'; $info_sid = mysql_insert_id(); $sql="INSERT INTO victime(matricule,questionnaire,region,departement,sousprefecture,secteur,village,zone,nom,pere,mere,doc,ndoc,autredoc,datarriv,postale,tel,cel,nom_rep,tel_rep,cel_rep,agent_sid,info_sid) VALUES('','".$questionnaire."','".$region."','".$departement."','".$sousprefecture."','".$secteur."','".$village."','".$zone."','".$nom."','".$pere."','".$mere."','".$doc."','".$ndoc."','".$autredoc."','".$datarriv."','".$postale."','".$tel."','".$cel."','".$nom_rep."','".$tel_rep."','".$cel_rep."','".$agent_sid."','".$info_sid."')"; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo 'Les informations sur les victimes ont été ajoutées dans la base de données.</br>'; } } ?>