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

  FORUM HardWare.fr
  Programmation
  PHP

  [php/mysql] exiger la réussite d'une requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php/mysql] exiger la réussite d'une requete

n°1809643
Profil sup​primé
Posté le 07-11-2008 à 18:54:32  answer
 

Yo,
 
Admettons jean-michou gagne le jackpot d'un jeu imaginaire, ce jackpot s'eleve a 45 640€
 
Impressionant n'est-ce pas ?
 
J'ai une requete qui va inserer dans la table PaieTaMoule le gagnant jean-michou et sa somme 45 640€
 
Si jamais ma base/mon site plante/un reboot ou je ne sais quoi d'autres
 
est ce que ce genre d'algorithme est correcte ou deconseillé ?
 
 

Code :
  1. while($result==0)
  2. {
  3. $result=INSERT 45640€,jean-michou INTO PaieTaMoule
  4. }


Tant que l'insertion echoue je continue a faire un insert :o
 
Est-ce que ca peut résoudre le pb dans des cas particuliers ? Mini Panne, mini reboot, mini faille spatio temporel
 
Ou bien cela est completement inutile, etant donné que si la requete échoue c'est que mon site / bdd est down et que le client aura de toute maniere un timeout ?
 
 
Sinon comment contourner le pb ?
 
J'ai pensé (mais c'est vraiment con pour michou) a faire l'annonce de son gain seulement en fin de code si toutes les données ont été enregistrée correctement:
 

Code :
  1. ->insert le gain de michou dans bdd
  2. ->si réussi echo "ta gagner mec"
  3. ->si echec echo "perdu" :lol: 
  4. //en gros en code ca ferais simplement ca
  5. $result=INSERT 45640€,jean-michou INTO PaieTaMoule
  6. if ($result)
  7. {
  8.     echo "ouais ta gagner!"
  9. }
  10. else
  11. {
  12.     echo "tain c'est con t'avais gagné mais ta aucune preuve erf !"
  13. }


Je crois que cette derniere solution est la meilleure :o c'est dégueulasse pour celui qui tomberai sur un crash au moment de l'attribution du gain, :o


Message édité par Profil supprimé le 07-11-2008 à 18:57:43
mood
Publicité
Posté le 07-11-2008 à 18:54:32  profilanswer
 

n°1809646
masklinn
í dag viðrar vel til loftárása
Posté le 07-11-2008 à 19:14:53  profilanswer
 

Tu ne peux pas exiger la réussite d'une requête. C'est pas possible. Prenons l'example simple que ta DB crash en plein milieu de l'exécution (parce que le CPU du server prend feu), ben même avec la meilleure volonté du monde tu vas avoir du mal à finaliser la query.
 
Par contre en utilisant des transactions (et sous MySQL des tables InnoDB, vu que MyISAM est une daube et ne supporte pas ce genre de choses) tu peux t'assurer que ta DB reste cohérente: soit toutes les opérations de la transaction s'exécutent correctement, soit aucune ne s'exécute., mais tu ne te retrouves jamais avec des opérations à moitié exécutées.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1809647
flo850
moi je
Posté le 07-11-2008 à 19:16:46  profilanswer
 

regarde du cote des transaction/commit/rollback


---------------

n°1809648
Profil sup​primé
Posté le 07-11-2008 à 19:33:38  answer
 

Les transactions sous mysql j'aimerais bien les utiliser, sous sql server c'est super simple, mais du peu que j'ai réussi a comprendre pour mysql ca me semble usine a gaz
 
Il y aurais une doc/un tuto pour mysql sur les transactions ?
 
Je me souviens avoir chercher longtemps sur google et pas moyen de trouver qqchose de clair a ce sujet, c'est nouveau non ?  
 
 
 
[edit] Je confonds avec les procédure stockées et déclencheurs qui sont tres difficile a gerer avec mysql :o


Message édité par Profil supprimé le 07-11-2008 à 20:22:04
n°1809649
Profil sup​primé
Posté le 07-11-2008 à 19:35:27  answer
 

masklinn a écrit :

Tu ne peux pas exiger la réussite d'une requête. C'est pas possible. Prenons l'example simple que ta DB crash en plein milieu de l'exécution (parce que le CPU du server prend feu), ben même avec la meilleure volonté du monde tu vas avoir du mal à finaliser la query.
 
Par contre en utilisant des transactions (et sous MySQL des tables InnoDB, vu que MyISAM est une daube et ne supporte pas ce genre de choses) tu peux t'assurer que ta DB reste cohérente: soit toutes les opérations de la transaction s'exécutent correctement, soit aucune ne s'exécute., mais tu ne te retrouves jamais avec des opérations à moitié exécutées.


Ok merci pour vos msg, je vais m'attarder sur les transactions et tenter de coder au mieux  :whistle:


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

  [php/mysql] exiger la réussite d'une requete

 

Sujets relatifs
Mysql/phpmyadmin Exportation csv (plus d'options?)Equivalent mysql_insert_id() pour MDB2 ?
Aide sur requête SQLMySql 4.0 - Imbrication de Select avec In()
requete sql en francaisAlléger une requête SQL
-:[mSQL ou mySQL]:-requete mysql categorie et sous cat affichage des produits
Plus de sujets relatifs à : [php/mysql] exiger la réussite d'une requete


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