Génération aléatoire puis insertion [Résolu] - PHP - Programmation
Marsh Posté le 13-10-2005 à 10:39:36
Une requête simple :
Code :
|
Marsh Posté le 13-10-2005 à 10:43:59
oui, ou un index unique sur `champ`
et un insert avec un même nb existant te fera une erreur de `duplicate key`
Marsh Posté le 13-10-2005 à 10:44:26
Citation : oui, ou un index unique sur `champ` |
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!
Marsh Posté le 13-10-2005 à 10:46:17
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
Marsh Posté le 13-10-2005 à 10:47:46
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.
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.
EDIT: Partiellement grilled.
Marsh Posté le 13-10-2005 à 11:17:06
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!
Marsh Posté le 13-10-2005 à 11:35:53
Wé, c'est de toute façon, c'est de la micro-optimisation sans intérêt pratique.
Marsh Posté le 13-10-2005 à 11:54:07
Wé cé vré mé komensé a changé du kode eksiten sa vaupala penne pou rsipeu.
Marsh Posté le 13-10-2005 à 12:03:39
lol tenke tu mé dé kom enter dan le kod sé ok lol
Marsh Posté le 13-10-2005 à 12:27:37
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!)
Marsh Posté le 13-10-2005 à 12:30:15
a wé lol ta rézon lol si sé fa sil kan tu sé pa écrir normal lol !
Marsh Posté le 13-10-2005 à 13:13:29
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
Marsh Posté le 13-10-2005 à 13:36:46
Vous avez craqué les gars???
Marsh Posté le 13-10-2005 à 13:41:15
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
Marsh Posté le 13-10-2005 à 13:43:17
limp15000 a écrit : Vous avez craqué les gars??? |
ué tro a donf 2 la bal ki tu
Marsh Posté le 13-10-2005 à 13:51:06
Sa bute tro sa mer lol
Marsh Posté le 13-10-2005 à 17:15:50
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 :
|
Marsh Posté le 13-10-2005 à 17:57:41
ç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 ...
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
Marsh Posté le 13-10-2005 à 18:30:29
J'aimerias que $trousdata['trouperdunb']; s'incrémente de 1...
C'est tout, j'ai peut être chercher à faire trop compliquer.
Marsh Posté le 14-10-2005 à 09:27:00
ENFIN Réussi!
Code :
|
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!!
Marsh Posté le 13-10-2005 à 10:32:19
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é:
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