Aller au contenu

Rafraîchissement sous conditions


Sujets conseillés

Posté (modifié)

Bonjour,

Je souhaiterai rafraichir ma page uniquement sous certaines conditions. J'ai donc utilisé des if{ ] mais je constate qu'il me rafraîchit ma page même si je ne rentre pas dans les conditions...

Dans le code ci dessous, je voudrais que si je suis un homme dans le groupe 11, il reste simplement là où il est (en gros il ne se passe rien). Si je suis une femme (groupe 12) ou si je suis un homme dans le groupe 10, je change de page...
Si une femme n'est pas dans le groupe 12, elle y est placée, si un homme n'est pas dans le groupe 10 ou 11, il sera placé dans le groupe 11...

if ($gender === "COM_COMMUNITY_FEMALE"){	if ($group != 8 OR $group != 12 )	{		$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 12 WHERE user_id= ' . $userid . '');		header('Location: ../index.php');		exit();	}	else	{		header('Location: ../index.php');		exit();	}}else if ($gender === "COM_COMMUNITY_MALE"){	if ($group != 8 OR $group != 10 OR $groupe != 11)	{		$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 11 WHERE user_id= ' . $userid . '');		header("Refresh:0");		exit();	}	else if ($group == 10)	{		header('Location: ../index.php');		exit();	}}

Avec le code tel quel, le changement de groupe est correctement effectué : je me retrouve bien dans le groupe 11 ou 12 quand je dois y être mais quand je suis dans le groupe 10, il me place quand même dans le groupe 11 alors qu'il ne devrait pas...

Je me retrouve dans sur ma page toujours dans le groupe 11 (le groupe 12 n'a pas accès à cette page et est donc redirigé ailleurs) et la page est rafraîchie en boucle !

Je sèche un peu sur le code pour savoir ce qui ne fonctionne pas...


Merci de votre aide

Modifié par liho
Posté

Salut !



if ($group != 8 OR $group != 10 OR $groupe != 11)



Si je suis groupe 10, je ne suis pas dans groupe 8 ni 11 donc group != 8 vaut 1, group != 11 vaut 1 et group != 10 vaut 0


1 OU 0 ou 1 = 1 donc je rentre...



Essaie avec des AND ca devrait mieux fonctionner.



Bon courage !


Posté (modifié)

bonjour,


je respect tes idées pour cet algo, mais je vois au lieu d'utiliser les " != " pourquoi ne pas penser à utiliser les " == " ??


Modifié par khalid-ref
Posté

Merci pour vos réponses...

Effectivement j'aurais pu utiliser "==" au lieu de "!=" il fallait juste en choisir un...

J'essaye de modifier ça et je vois ce que ça donne

Posté

J'ai donc remplacé les "OR" par des "AND" et effectivement les changements de groupes fonctionnement parfaitement maintenant....

Par contre si je suis groupe 11, le rafraîchissement de la page est toujours en boucle...

Le refresh ne devrait se faire qu'une seule fois dans le cas où je viens d'être placé dans le groupe 11.... Si je suis déjà dans le groupe 11 en arrivant sur la page, rien ne doit se passer.

Posté (modifié)

D'ailleurs khalid-ref,

Je viens d'y repenser et si je n'avais pas utilisé les "==" c'est pour parer l'éventualité où une femme se retrouverait accidentellement dans un des groupes homme et vice-versa, un homme dans le groupe femmes... et aussi parce qu'il y aaussi le groupe 2 (celui dans lequel se trouve tout nouvel utilisateur avant d'être changé de groupe) et je trouvais donc plus simple de dire, "tous ceux qui ne sont pas dans ces groupes, on les-y met"
biggrin.gif

(Désolé pour le triple message.. je n'ai pas réfléchit)

Modifié par liho
Posté
"tous ceux qui ne sont pas dans ces groupes, on les-y met"

maintenant c'est compris, ton code est propre;

pour le triple message il y a la possibilité de modifier un message et ajouter ce que tu veux

Posté

merci...

Du coup si le code est propre, pourquoi le rafraîchissement de la page se fait en boucle ?

Je sèche :/

Posté

Il faut aussi remplacer OR par AND dans la première partie du code !

if ($gender === "COM_COMMUNITY_FEMALE")
{
if ($group != 8 OR $group != 12 )

Posté (modifié)

Oui merci mais on me l'a dit plus haut et je l'ai fait, tous les OR sont remplacés par des AND, ça fonctionne... SAUF le refresh


Modifié par liho
Posté

Remets le code complet, avec tes modifs...


On y verra plus clair ;)

Posté

C'est du code côté serveur donc rien à voir avec le navigateur.



Ceci sera toujours vrai pour le "refresh" (qui est en réalité une redirection):



if ($group != 8 AND $group != 12 ){
$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 12 WHERE user_id= ' . $userid . '');
header('Location: ../index.php');
exit();
}
else
{
header('Location: ../index.php');
exit();
}

Donne nous plus de précision. Dans quel cas le refresh se produit?


Posté


if ($group != 8 AND $group != 10 AND $groupe != 11)

{

$modif = $bdd->exec('UPDATE bdt1m_user_usergroup_map SET group_id = 11 WHERE user_id= ' . $userid . '');

header("Refresh:0");

exit();

}

Ici le rafraîchissement se fait en boucle, il faudrait qu'il ne se fasse qu'une seule fois

Posté

Il exécute les requêtes correctement puisque les users sont correctement changés de groupe et ici :



$userid = $user->id ;
echo $userid;

echo me renvoi correctement mon userid


Veuillez vous connecter pour commenter

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



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