Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2672 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Génération aléatoire puis insertion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]Génération aléatoire puis insertion

n°1221833
limp15000
www.geneva-racing.ch
Posté le 13-10-2005 à 10:32:19  profilanswer
 

Bonjour,
 
J'ai un script qui génére un nombre aléatoire compris entre 0 et 1000000000. Le script fonctionne super bien. J'ai un formulaire avec 2 champs. L'un que l'on rempli manuellement et l'autre qui prend ce chiffre aléatoire.  
Ensuite j'insère ces chiffres dans ma table. Tout ceci fonctionne sans problème. Mais maintenant j'ai un prob. J'aimerais qu'une fois qu'un nombre aléatoire a été rentré on ne puisse plus le rerentrer...  
Je pense donc mettre un while avec un if avant mon insertion.
Voici ce à quoi j'ai pensé:

Code :
  1. if ($_POST['ajouter'] == "Ajouter" )
  2. {
  3. if ((!empty($troucont)) && (!empty($troucode)))
  4. {
  5. While($troudata = mysql_fetch_assoc($sql_results))
  6. {
  7. if ($troudata['troucode']!=$nb)
  8. {
  9. $sql = "INSERT INTO `trousseau` (`troucontnum`, `troucode`) VALUES ('$troucont', '$troucode')";
  10. mysql_query($sql) or die (mysql_error());
  11. echo "<div align='center'>";
  12. echo "Les infos du trousseau ont bien &eacute;t&eacute; sauvegard&eacute;es!";
  13. echo "</div>";
  14. mysql_close();
  15. }
  16. }
  17. }
  18. }


Bonne approche ou pas??? Si vous avez besoin de tous le code dite le moi...


Message édité par limp15000 le 14-10-2005 à 09:42:19
mood
Publicité
Posté le 13-10-2005 à 10:32:19  profilanswer
 

n°1221836
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 10:39:36  profilanswer
 

Une requête simple :

Code :
  1. $query = mysql_query("SELECT `champ` WHERE `champ` = '".$_POST["le_nbe"]."';" );
  2. if ( !mysql_num_rows($query) > 0 ) {
  3.   // On fait l'ajout
  4. }


Message édité par dwogsi le 13-10-2005 à 10:40:13

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1221845
shakpana
des fois, j'me demande ...
Posté le 13-10-2005 à 10:43:59  profilanswer
 

oui, ou un index unique sur `champ`
et un insert avec un même nb existant te fera une erreur de `duplicate key`

n°1221848
limp15000
www.geneva-racing.ch
Posté le 13-10-2005 à 10:44:26  profilanswer
 

Citation :

oui, ou un index unique sur `champ`
et un insert avec un même nb existant te fera une erreur de `duplicate key`


Je pensais avoir mis unique en créant ma table, mais je m'étais trompé, je l'ai rajouté et maintenant c'est bon il me met bien:
 Duplicate entry '551640312' for key 2  
Merci beaucoup!


Message édité par limp15000 le 13-10-2005 à 10:47:57
n°1221850
shakpana
des fois, j'me demande ...
Posté le 13-10-2005 à 10:46:17  profilanswer
 

bah non ...
avec la requête de dwogsi, tu vérifies si la clé existe déjà
avec l'index le serv. SQL te dira que tu ne peux insérer cette clé ...
edit: typo


Message édité par shakpana le 13-10-2005 à 10:48:21
n°1221853
sircam
I Like Trains
Posté le 13-10-2005 à 10:47:46  profilanswer
 

Plus fort encore :
 
Tu fais en sorte que la DB n'accepte pas de doublons (unique index). Tu fais d'office l'ajout et tu testes le code de retour. Si tu as violé la contrainte de duplicate, tu essayes avec un autre nombre. [:dawa]
 
Très dirty mais un seul accès DB au lieu de 2.
 
Maintenant, vu ton range, le risque de collision est assez minime a priori. Ta méthode n'est certainement pas à généraliser si le range venait à se remplir !
 
Sans doute la méthode de dwogsi est-elle plus simple si la question des perfs ne se pose pas. Sauf que j'aurais fait if (n = 0) plutôt que if (! n > 0), mais bon, hein.
 
[:pingouino]
 
 
EDIT: Partiellement grilled.

Message cité 1 fois
Message édité par sircam le 13-10-2005 à 10:48:24

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1221894
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 11:17:06  profilanswer
 

sircam a écrit :

Sauf que j'aurais fait if (n = 0) plutôt que if (! n > 0), mais bon


Bah en fait j'avais pas mis de négation dans ma condition à la base, mais j'ai du éditer parcequ'en fait ce que j'avais écrit ne correspondait pas vraiment à la question. Alors plutot que de réécrire le code j'ais mis une négation... De la grosse flemme pour résumer!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1221920
sircam
I Like Trains
Posté le 13-10-2005 à 11:35:53  profilanswer
 

Wé, c'est de toute façon, c'est de la micro-optimisation sans intérêt pratique.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1221926
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 11:40:37  profilanswer
 

Si! D'un point de vu relecture ca peut aider!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1221935
sircam
I Like Trains
Posté le 13-10-2005 à 11:54:07  profilanswer
 

Wé cé vré mé komensé a changé du kode eksiten sa vaupala penne pou rsipeu. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 13-10-2005 à 11:54:07  profilanswer
 

n°1221949
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 12:01:21  profilanswer
 

ba tu c d foa sa pe édé


Message édité par dwogsi le 13-10-2005 à 12:01:35

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1221955
sircam
I Like Trains
Posté le 13-10-2005 à 12:03:39  profilanswer
 

lol tenke tu mé dé kom enter dan le kod sé ok lol


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1221986
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 12:27:37  profilanswer
 

ué c vré mé je préfér qan mém corrigé se genr derere kom sa c + kler pr mua é lé otr perso ki seré amené a lir mon cde!
 
(C'est quand même assez diffile d'écrire comme ca, vraiment je ne les comprend pas!)


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1221990
sircam
I Like Trains
Posté le 13-10-2005 à 12:30:15  profilanswer
 

a wé lol ta rézon lol si sé fa sil kan tu sé pa écrir normal lol !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1222040
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 13:13:29  profilanswer
 

ué mé g jamé apri kom sa alor ba c dur kan mém
 
mém kan je reli ce ke j'vien d'ecrir d fua g du mal a savuar ce ke je voulé dir
 
du cou d fua kan yan a ki ecri kom ca on c mm pa ce kil voulé dir é du cou il par en disen ke l'abiense et pouri, ba kil parte
 
alé jaréte la ca dvi1 tro dur pr mua 7 fason décrir


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1222063
limp15000
www.geneva-racing.ch
Posté le 13-10-2005 à 13:36:46  profilanswer
 

Vous avez craqué les gars???

Message cité 1 fois
Message édité par limp15000 le 13-10-2005 à 13:37:14
n°1222067
sircam
I Like Trains
Posté le 13-10-2005 à 13:41:15  profilanswer
 

lol j u bezwin 2 30s pour lir ton mesaj é en ariven o bou ja v oubliyé le débu lol j con pren pa ceu ki pouri l'anbiens ki di ke jékri mal lol sé pa sa ké inportan sé mon pb lol lol lol
 
:hello:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1222069
dwogsi
Défaillance cérébrale...
Posté le 13-10-2005 à 13:43:17  profilanswer
 

limp15000 a écrit :

Vous avez craqué les gars???


 
ué tro a donf 2 la bal ki tu


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1222083
sircam
I Like Trains
Posté le 13-10-2005 à 13:51:06  profilanswer
 

Sa bute tro sa mer lol


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1222352
limp15000
www.geneva-racing.ch
Posté le 13-10-2005 à 17:15:50  profilanswer
 

Bon, je reviens avec une nouvelle question, maintenant que l'insertion fonctionne bien, j'ai fait un formulaire qui permet de rechercher le numéro de contrat et d'afficher le numéro de clé correspondant. Ca de nouveau ça marche sans autre.
J'ai ensuite fait une page qui me permet de regénérer un nouveau code de clé... La génération et la mise à jour avec le update marche bien parcontre j'arrive pas à incrémenter la variable qui me permet de voir combien de changement il y a eu!
L'echo me donne 1 alors que ça devrait être 0, enfin je capte pas...

Code :
  1. include('lib/erreur.lib.php');
  2. include('lib/connection.lib.php');
  3. if ($_POST['Modifier'] == "Modifier" )
  4. {
  5. $rqtsRechTrousseau = "SELECT * FROM trousseau WHERE troucontnum ='$contnum'";
  6. $rep2RechTrousseau = mysql_query($rqtsRechTrousseau) or die ($errCli);
  7. $trousdata = mysql_fetch_assoc($rep2RechTrousseau);
  8. $trouperdu = $trousdata['trouperdunb'];
  9. $trouperdus = $trouperdu++;
  10. $nouvcode= $_POST['troucodegenere'];
  11. $contratnum= $_POST['contnumgenere'];
  12. $sql = "UPDATE `trousseau` SET `troucode`='$nouvcode',`trouperdunb`='$trouperdus' WHERE `troucontnum`='$contratnum'";
  13. mysql_query($sql) or die (mysql_error());
  14. echo "<div align='center'>";
  15. echo "Le code du trousseau a bien &eacute;t&eacute; modifi&eacute;!";
  16. echo $trouperdu;
  17. echo "</div>";
  18. mysql_close();

n°1222383
shakpana
des fois, j'me demande ...
Posté le 13-10-2005 à 17:57:41  profilanswer
 

ça je le comprends pas bien
# $trouperdu = $trousdata['trouperdunb'];
# $trouperdus = $trouperdu++
affecter une valeur à une variable, incrémenter cette dernière, affecter cette dernière à une autre ...
[:pingouino]
 
et toi tu n'as pas bien lu le chapitre sur l'incrémentation ...
> $trouperdus = $trouperdu++;
pas pareil que
> $trouperdus = ++$trouperdu;
 
alors du coup spa très clair tout ça ... pas évident de comprendre ton fonctionnement
tu veux modifier un enregistrement, incrémenter de 1 le champs qui stocke le nb de changements ?
pourquoi pas faire les choses en une fois
UPDATE truc SET champs1 = new, compteur = compteur + 1 WHERE champs1 = old

n°1222405
limp15000
www.geneva-racing.ch
Posté le 13-10-2005 à 18:30:29  profilanswer
 

J'aimerias que $trousdata['trouperdunb'];  s'incrémente de 1...
C'est tout, j'ai peut être chercher à faire trop compliquer.

n°1222434
flo850
moi je
Posté le 13-10-2005 à 19:37:03  profilanswer
 

$trousdata['trouperdunb']++;

n°1222733
limp15000
www.geneva-racing.ch
Posté le 14-10-2005 à 09:27:00  profilanswer
 

ENFIN Réussi!

Code :
  1. if ($_POST['Modifier'] == "Modifier" )
  2. {
  3. $rqtsRechTrousseau = "SELECT * FROM trousseau WHERE troucontnum ='$contratnum'";
  4. $rep2RechTrousseau = mysql_query($rqtsRechTrousseau) or die ($errCli);
  5. $trousdata = mysql_fetch_assoc($rep2RechTrousseau);
  6. $trouperdu = $_POST['fucking']+=1;
  7. $nouvcode= $_POST['troucodegenere'];
  8. $contratnum= $_POST['contnumgenere'];
  9. $sql = "UPDATE `trousseau` SET `troucode`='$nouvcode',`trouperdunb`='$trouperdu' WHERE `troucontnum`='$contratnum'";
  10. mysql_query($sql) or die (mysql_error());
  11. echo "<div align='center'>";
  12. echo "Le code du trousseau a bien &eacute;t&eacute; modifi&eacute;!";
  13. echo $trouperdu;
  14. echo "</div>";
  15. mysql_close();
  16. }


 
Comme vous le voyez, j'ai de superbe nom de variable comme fu*" ou fuç*"ing
Bref, l'incrémentation avec ++ n'a pas fonctionner, donc j'ai essayé +=1 et ça marche!!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Génération aléatoire puis insertion

 

Sujets relatifs
[RESOLU][Access/VBA] Selectionner onglet access ?swf aleatoire dans page html
[RESOLU][Access / SQL] Erreur OVERFLOW lors de l'update de ma BDD ![resolu] Petit souci sur le php de mon formulaire
Zoomer une image puis la dézoomer [résolu][resolu] Centrer une image vertical dans une <div> ??
IP de connexion internet [Résolu][résolu] IE 5.5 problème avec une ancre "top" dans le body
[RESOLU][SQL/Access]Impossibilité de modifier le contenu de mes tables[RESOLU] Petit probleme debutant sur constructeur
Plus de sujets relatifs à : [Résolu]Génération aléatoire puis insertion


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR