liho Posté 7 Octobre 2014 Posté 7 Octobre 2014 (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é 7 Octobre 2014 par liho
BlackPage Posté 7 Octobre 2014 Posté 7 Octobre 2014 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 !
khalid-ref Posté 7 Octobre 2014 Posté 7 Octobre 2014 (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é 7 Octobre 2014 par khalid-ref
liho Posté 7 Octobre 2014 Auteur Posté 7 Octobre 2014 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
liho Posté 7 Octobre 2014 Auteur Posté 7 Octobre 2014 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.
liho Posté 7 Octobre 2014 Auteur Posté 7 Octobre 2014 (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" (Désolé pour le triple message.. je n'ai pas réfléchit) Modifié 7 Octobre 2014 par liho
khalid-ref Posté 8 Octobre 2014 Posté 8 Octobre 2014 "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
liho Posté 8 Octobre 2014 Auteur Posté 8 Octobre 2014 merci...Du coup si le code est propre, pourquoi le rafraîchissement de la page se fait en boucle ? Je sèche :/
Dan Posté 8 Octobre 2014 Posté 8 Octobre 2014 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 )
liho Posté 8 Octobre 2014 Auteur Posté 8 Octobre 2014 (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é 8 Octobre 2014 par liho
Dan Posté 8 Octobre 2014 Posté 8 Octobre 2014 Remets le code complet, avec tes modifs... On y verra plus clair
Message populaire. liho Posté 8 Octobre 2014 Auteur Message populaire. Posté 8 Octobre 2014 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();}?> 1
khalid-ref Posté 11 Octobre 2014 Posté 11 Octobre 2014 je peut pas voir l'erreur dans ce code, t'as essayer plusieurs navigateurs?
liho Posté 14 Octobre 2014 Auteur Posté 14 Octobre 2014 Bonjour,Je viens de voir votre message.Le problème est le même sur Chrome, IE 11 et Firefox
Portekoi Posté 15 Octobre 2014 Posté 15 Octobre 2014 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?
liho Posté 15 Octobre 2014 Auteur Posté 15 Octobre 2014 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
captain_torche Posté 15 Octobre 2014 Posté 15 Octobre 2014 Dans ce cas, c'est que ta requête n'est pas exécutée (Ou que $userid est vide)
liho Posté 15 Octobre 2014 Auteur Posté 15 Octobre 2014 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
Message populaire. captain_torche Posté 15 Octobre 2014 Message populaire. Posté 15 Octobre 2014 Tu as un "e" de trop dans la vérification de $groupe != 11 1
khalid-ref Posté 15 Octobre 2014 Posté 15 Octobre 2014 $groupe != 11 groupe est toujours différent de 11 puisqu'il n'existe pas, donc à mon avis ça pose pas problème
liho Posté 15 Octobre 2014 Auteur Posté 15 Octobre 2014 Et bien après avoir supprimé ce "e" en trop, le rafraîchissement à l'air de se faire correctement...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant