JeuWeb - Crée ton jeu par navigateur
[Résolu] Update multiples - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Update multiples (/showthread.php?tid=2376)



[Résolu] Update multiples - comg - 05-02-2008

Juste pour savoir, comment on fait un update de plusieurs entrées d'une table ?

C'est à dire, j'édite 25 cases de ma map, nom/description par exemple.
Mais une boucle qui pour chaque champs de formulaire associe un UPDATE ça fait lourd (d'ailleurs ça plante :S)

Comment qu'on fait ? Exemple encore plus simple, je veux mettre la forme (champ forme) de tout mes joueurs (table users) à 100, comment on fait... ? La je bug...

Merci de votre aide (en attendant je me tape une boucle de formulaire... horrible)


RE: Update multiple - Ziliev - 05-02-2008

Tout est dans le contenu de ton WHERE. Tu peux y mettre des AND, des OR ou même rien du tout si tu veux toucher toutes les entrées de la table. Quelques exemples:

UPDATE table SET champs='valeur' WHERE (id='1') OR (id='2')
Pour changer les joueurs d'id 1 ou 2.

UPDATE table SET champs='valeur' WHERE (id<'10')
Pour changer les jioueurs d'idi plus petit que 10

UPDATE table SET champs='valeur'
Pour changer tous les joueurs de la table

Après j'ai pas bien saisi ton histoire de 25 cases, si c'est des valeurs différentes qu'il faut mettre dans des entrées différentes, j'vois pas bien comment tu peux éviter de faire 25 requêtes différentes ... 'fin bon de toute facon des requêtes avec un WHERE sur un index c'est éxécuté en une fraction de seconde donc c'est pas génant d'en faire plusieurs. Sauf si t'as un serveur en carton quoi Tongue


RE: Update multiple - comg - 05-02-2008

Bah alors ecoute, mon server local (MAMP) a planté (temps excedant 30sec)... Donc je sais pas...
En tout cas, c'est vrai que pour mettre toute les valeurs à 0 c'est tout bête, merci.
Et effectivement je vois pas pourquoi j'ai imaginé qu'il existerai une solution plus simple qu'une requete par case...
Merci bien en tout cas Ziliev


RE: [RESOLU] Update multiple - Plume - 05-02-2008

Si tu connais les identifiants des 25 cases, et que la valeur est la même pour ces 25 cases, une seule requête suffit.
Si les valeurs sont différentes, alors il faut une requête par cases.

Ceci dit, même pour 25 cases, l'exécution du script n'excède pas les 30 secondes. Si ça t'arrives, c'est que ta boucle tourne à l'infini => erreur de codage

L.


RE: [RESOLU] Update multiple - keke - 06-02-2008

Heu, je rajouterais que tu peux aussi faire ce type d'update suivant :

UPDATE table SET champs= champs + 'valeur' WHERE (id='1') OR (id='2')

Ce qui peut modifier des résultats différents en une seule requête. C'est réelement plus rapide qu'une boucle, et bien évidement tu peux t'amuser à faire des opérations sur les champs, des jointures de tables, etc.

Cependant, si ton but est de charger ta carte, je crois que tu n'y coupes pas. Un update par case.

J'espère que ce complément peut aider des gens.

Kéké.


RE: [RESOLU] Update multiple - comg - 06-02-2008

En fait c'est surtout un update du nom et de la description de chaque case. Mais c'est pas grave. J'ai fait un form par case, j'ai tout modifié (c'était pour une tite carte de toute façons, 25 cases) et pour l'affichage je fais une boucle qui va de 1 à 5 pour y, qui affiche un nouvelle ligne, et dans chaque ligne je fais une boucle de 1 à 5 pour x qui separe chaque cellule en affichant nom/description/image...
merci de votre aide en tout cas