fingolfin Posté 27 Janvier 2007 Posté 27 Janvier 2007 Bien le bonjour à tous ! Alors voilà, j'ai un petit (gros) problème, il s'avère que j'ai grand besoin de faire une boucle dans une requête pour ne pas avoir à faire l'inverse qui demanderait bien plus de puissance (requête dans une boucle ), le seul problème, vous l'aurez compris, réside dans le faites que je ne connais pas et que je n'arrive pas à trouver la syntaxe de ce genre de requête ... (en l'occurence il s'agit d'une boulce dans une requête de type UPDATE), donc du coup je suis bloqué à attendre bêtement de trouver comment faire cela Voilà, donc merci d'avance
Portekoi Posté 27 Janvier 2007 Posté 27 Janvier 2007 Bonsoir, Sois plus précis. Que veux tu faire ne suffit pas. Donne nous un cas concret du genre "je voufrais mettre à jour les users de telle date etc...." Merci Portekoi
fingolfin Posté 27 Janvier 2007 Auteur Posté 27 Janvier 2007 (modifié) Pas de problème Donc en faites il s'agit de la gestion des autorisations d'accès aux différentes pages , donc j'ai une table nommé "groupe_autorisation" ayant pour le moment cette structure : CREATE TABLE `groupe_autorisation` ( `id` mediumint(9) NOT NULL, `index_membre` tinyint(4) NOT NULL, `compte` tinyint(4) NOT NULL, `index_admin` tinyint(4) NOT NULL, `non_actif` tinyint(4) NOT NULL, `gestion_groupe` tinyint(4) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Donc dans ma page de gestion des groupes, une fois que l'on a décidé quelle est le groupe dont on veut modifier les accès et que l'on a fait les modifications, je voudrais faire une requête de type UPDATE avec une boucle prenant comme argument un tableau dont chaque case a pour valeur un champ de la table "groupe_autorisation" (à part id), le but serait donc de modifier tout les champs dans la boucle. Pour être précis j'ai besoin de cela, car à chaque fois que je rajouterai une page dans le site, il y aura un champ de plus dans la BDD, et si je ne veux pas m'ennuyer à modifier le script à chaque fois il faut que le nombre de champ modifiable soit infini grâce à la boucle. Modifié 27 Janvier 2007 par fingolfin
fingolfin Posté 27 Janvier 2007 Auteur Posté 27 Janvier 2007 Mysql 5.0, sa change quelque chose au niveau du code ? (n'étant pas d'un bon niveau je ne connais franchement pas les différences entre les deux versions )
fingolfin Posté 28 Janvier 2007 Auteur Posté 28 Janvier 2007 (modifié) Bon, n'arrivant toujours pas à faire une boucle dans une requête j'ai trouvé un autre moyens, faire une requête dynamique généré par PHP, donc si sa intérresse quelqu'un, voici le code en question : /* On construit la requête qui aura pour but de mettre à jour les champs de la table */ $req = 'UPDATE groupe, groupe_autorisation SET groupe.nom = "' . $nom . '", groupe.description = "' . $description . '",'; $i = 0; while(!empty($tableau_autorisation[$i])) { $i_suivant = $i + 1; if(empty($tableau_autorisation[$i_suivant])) { $req.= ' groupe_autorisation.' . $tableau_autorisation[$i] . ' = "' . $_POST[$tableau_autorisation[$i]] . '"'; } else { $req.= ' groupe_autorisation.' . $tableau_autorisation[$i] . ' = "' . $_POST[$tableau_autorisation[$i]] . '",'; } $i++; } $req.= ' WHERE groupe.id = "' . $id_groupe . '" AND groupe_autorisation.id = "' . $id_groupe . '"'; echo $req; mysql_query($req) or die(mysql_error()); Ce code générant une requête dans ce style : UPDATE groupe, groupe_autorisation SET groupe.nom = "admin", groupe.description = "Kawa !!", groupe_autorisation.index_membre = "1", groupe_autorisation.compte = "1", groupe_autorisation.index_admin = "1", groupe_autorisation.non_actif = "1", groupe_autorisation.gestion_groupe = "1" WHERE groupe.id = "1" AND groupe_autorisation.id = "1" Voilà, par contre si quelqu'un connais la structure d'une boucle SQL je suis toujours preneur Modifié 28 Janvier 2007 par fingolfin
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant