|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
Bonjour à tous !
J'explique mon problème. J'ai 2 tables dans ma base. La première contient les champs: - id (auto increment) - pseudo - message - ip La seconde: - id (auto increment) - ville - lat - lon - date L'inscription de l'utilisateur se réalise en 2 étapes. Lorsqu'il a fini la première étape, les données s'enregistrent dans la première table et on passe à la seconde étape. Les données de la seconde étape sont enregistrées dans la seconde table. Ensuite, l'affichage se fait en 1 fois avec un select sur les 2 tables, lorsque les id sont égaux (where table1.id = table2.id en gros). Mais le problème est là: - Disons qu'un utilisateur valide la première étape et fasse une pause (pipi, café,etc.) - Disons qu'un autre utilisateur commence l'inscription et valide la première ET la seconde étape AVANT le premier utilisateur. -> Il y aura un échange de données, ou même un décalage si notre premier utilisateur ne finit pas son inscription... Etant débutant avancé, est-ce que quelqu'un peut me dire comment "bloquer" l'id d'un utlisateur, j'entends par là empêcher l'enregistrement dans la seconde table, à la ligne correspondant à son id ? Je ne sais pas si je me suis fait comprendre mais je reste dispo pour des question et/ou des sources ^^ Merci ! |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : juin 2002 Messages : 577 ![]() |
je ne comprends pas comment tu vas avoir un échange de données , ou un décalage ...
|
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Inscription : avril 2006 Messages : 833 ![]() |
Pourquoi tu n'enleve pas l'id a auto increment de la seconde table ?
Comme ca tu n'as qu'a garder le meme id qu'a lla premiere table en allant le chercher ou en le passant en parametre. c'est ca que tu veux ? |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() |
Une question se souleve en voyant ton schema des tables.
Pourquoi avoir fait deux table ? Pourquoi n'avoir pas fait une seul table qui contient l'ensemble des données de l'utilisateur. Lors de la premier etape tu crée l'utilisateur (et donc l'ID avec) avec les champ a null pour les informations non connue lors de cette etape. Lors de la deuxieme etape tu fait un simple update des différents champs a null. La seul contrainte est de passé l'ID en paramettre lors du passage des deux pages. Bref ton modele de donnée est bizare ^^. |
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() |
Citation:
On arrive au même résultat si le premier utilisateur ne valide pas la seconde étape. Citation:
Mais maintenant, j'ai ce problème. J'ai vu au plus simple, pas forcément le plus rapide Citation:
|
|||
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : avril 2006 Messages : 833 ![]() |
Tu recupere ton id en selectionnant l'id qui vient d'etre créé.
je m'explique: Si l'utilisateur valide la premiere etape et que les donnees sont enregistrées dans ta table, à ce moment la tu recupere l'id le plus grand (car tu est en auto increment). Avec une requete mysql du style ca te va ? |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : avril 2007 Messages : 23 ![]() |
mysql_insert_id te renvoie le dernier identifiant généré par une requete si je ne m'abuse, tu peux te pencher la dessus pour recup l'id qui vient d'etre crée sur ta 1ere table, puis l'injecter dans ta 2eme table (en prennant soin de virer l'auto increment),
Je ne sais pas si ca peut aider (j'avoue j'ai lu les posts un peu en diagonal ;p ) mais on peut toujours essayer ^^ |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() |
Ok je vais essayer ces solutions, je donne des nouvelles bientôt ^^
Merci pour la rapidité en tous cas ! |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() |
Voilà ça fonctionne ^^
J'ai utilisé le mysql_insert_id() pour choper le dernier numéro utilisé Merci à tous pour votre rapidité et votre aide !! A+!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com