Aller au contenu
liho

Rafraîchissement sous conditions

Noter ce sujet :

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !


Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites
"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

Partager ce message


Lien à poster
Partager sur d’autres sites

merci...

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

Je sèche :/

Partager ce message


Lien à poster
Partager sur d’autres sites

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 )

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Remets le code complet, avec tes modifs...


On y verra plus clair ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai juste remplacé les OR par des AND mais oui ok voici le code modifié :

if (!$user->guest){	$userid = $user->id ;	echo $userid;	try	{		$bdd = new PDO('');	}	catch(Exception $e)	{		die('Erreur : '.$e->getMessage());	}	$reponse = $bdd->query('SELECT group_id FROM bdt1m_user_usergroup_map WHERE user_id= ' . $userid . '');	$reponse2 = $bdd->query('SELECT value FROM bdt1m_community_fields_values WHERE user_id= ' . $userid . ' AND field_id=2');	while ($donnees = $reponse->fetch())	{		$group = $donnees['group_id'];		echo $group;		while ($donnees2 = $reponse2->fetch())		{ 			$gender = $donnees2['value'];			echo $gender;						if ($gender === "COM_COMMUNITY_FEMALE")			{				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();				}			}			else if ($gender === "COM_COMMUNITY_MALE")			{				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();				}				else if ($group == 10)				{					header('Location: ../index.php');					exit();				}			}		}		$reponse2->closeCursor();	}	$reponse->closeCursor();	mysql_close();}?>
  • Vote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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?


Partager ce message


Lien à poster
Partager sur d’autres sites


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

Partager ce message


Lien à poster
Partager sur d’autres sites

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


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×