Petit probléme pointu

sky_striker Messages postés 41 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 28 octobre 2005 - 10 mars 2005 à 12:03
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 11 mars 2005 à 10:19
Bonjour à tous,

Voila j'ai un script qui effectu une boucle et qui ajoute des traduction pour un certain texte (on simplifie pour l'explication). Lors d'une mise à jour si la traduction existe je fais un UPDATE classique mais si elle n'existe pas je la créé en faisant un INSERT jusqu'ici pas de problémes. Je voudrais faire l'économie du test d'existence en exécutant de toute façon un update ensuite j'aimerais récupéré le nombre de ligne testés par mysql si il est égal à 1 alors je ne fait pas le INSERT.

Mon probléme et qu'il n'existe pas de fonctions pour faire ça le mysql_affected_rows() renvoit 0 si la personne n'effectue pas de modifications.

Existe il un moyen de tester l'existence d'un tuple en faisant un update ou suis je obligé de passer par un SELECT d'abord ...???

Merci d'avance pour vos réponses

Tout les hommes meurent un jour mais peu d'entre eux vivent vraiment

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mars 2005 à 12:39
hello,



je ne suis pas sur d'avoir tout compris, mais pourquoi n'utilises tu pas simplement un compteur...?
0
sky_striker Messages postés 41 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 28 octobre 2005
10 mars 2005 à 14:46
De quel maniére utiliser un compteur pour faire cela ?
Tout les hommes meurent un jour mais peu d'entre eux vivent vraiment
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mars 2005 à 15:42
Tu veux tester quoi ? le nombre d'update ?
0
sky_striker Messages postés 41 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 28 octobre 2005
10 mars 2005 à 17:28
Au lieu de faire un SELECT pour savoir si il existe puis en fonction du résultat un INSERT ou un UPDATE. Je voudrais :

- De toute façon faire un update
- Si le nbre de champs MAJ est égal à 1 alors je ne fait pas d'INSERT

ce la permet une économie du select d'autant que c requétes sont éxécutés dans une boucle

Probléme : La fonction mysql_affected_rows() ne réponds pas à mon attente car elle renvoit que le nombre de champs effectivement MAJ c'est à dire qu'elle renvoit nb=0 dans le cas d'une mise à jour avec les même donnée (Ce qui peut arriver dans mon cas et fausserait le test car je ne teste pas les contenus avant de les insérer, de toute façon mysql ne fait la mise à jour que si les contenu sont différents et c bien pour ça que dans ce cas là ça renvoi 0)

Début de solution : mysql_info() revoit une string ou le premier chiffre est le nombre de champs trouvés lors d'un essais de MAJ. C'est exactement ce que j'ai besoin mais comment extraire à coup sur ce nombe de la string renvoyé ???

Ex : Enregistrements correspondants: 1 Modifiés: 0 Warnings: 0

c'est un copié collé de ce que me renvoit la foncion dans le cas d'une mise à jour avec les mêmes donnés le probléme c que le format de la string varie d'une langue à l'autre ... Donc pour extraire les chiffres qui m'intéresse cela risque d'être une bidouille que je voudrais éviter

voila merci de ton aide

les hommes meurent un jour mais peu d'entre eux vivent vraiment
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 mars 2005 à 10:19
Ah ben voila...lol. Tu vas donc pouvoir extraire ce nombre de mysql_info() grace au code que je t'ai donne dans ton autre post.
0
Rejoignez-nous