Aller au contenu

Faire une boucle dans une requête


Sujets conseillés

Posté

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 :P ), 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 :unsure:

Voilà, donc merci d'avance :)

Posté

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

Posté (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é par fingolfin
Posté

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 :P )

Posté (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é par fingolfin

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...