Problème affichage info bulle et date_vue
Résolu
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
-
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
1/ J'aimerai que lorsque une personne a cliqué sur l'onglet invitation sur laquelle il y avait une info bulle, elle s'efface après que l'utilisateur aie vu l'invitation, qu'est ce quii cloche sur ma function ?
2/ Pour ce qui est de l'onglet "messages", le "1" ne s'affiche même pas pour que j'y puis styliser son info bulle, comme résoudre ceci ? après cela j'aimerai faire la même chose pour le 1/
voilà et ce sera vraiment terminé pour ce qui est du tuto :)
Merci d'avance ;)
1/ J'aimerai que lorsque une personne a cliqué sur l'onglet invitation sur laquelle il y avait une info bulle, elle s'efface après que l'utilisateur aie vu l'invitation, qu'est ce quii cloche sur ma function ?
<?php //-----------------------------------------------// // Fichier : ibi.func.php //-----------------------------------------------// /* //la function qui va nous permettre d'afficher l'info-bulle des invitations */ function afficher_ibi_invitations(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_invitation = date_confirmation AND pseudo_dest=:pseudo_session) OR (pseudo_exp=:pseudo_session AND date_confirmation > date_vue) "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; } /* //la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle */ function update_date_vue(){ global $bdd; //récupération des variables PROPREMENT ! $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_exp){ $sql = "UPDATE amis SET active=1 , date_vue=NOW() WHERE pseudo_exp = :session_pseudo"; // je place les params dans une variable avant de l'utiliser : $params = array('session_pseudo' => $pseudo_exp); try{ $query = $bdd->prepare($sql); $query ->execute($params); }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } } /** *la function qui va nous permettre d'afficher l'info-bulle des messages */ function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_conversation) as NB FROM conversations WHERE pseudo_dest=:pseudo_session OR (pseudo_exp=:pseudo_session > date_vue) "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
2/ Pour ce qui est de l'onglet "messages", le "1" ne s'affiche même pas pour que j'y puis styliser son info bulle, comme résoudre ceci ? après cela j'aimerai faire la même chose pour le 1/
voilà et ce sera vraiment terminé pour ce qui est du tuto :)
Merci d'avance ;)
A voir également:
- Problème affichage info bulle et date_vue
- Crystal disk info - Télécharger - Informations & Diagnostic
- Info pc - Guide
- Wifi info view - Télécharger - Divers Réseau & Wi-Fi
- Problème affichage photo messenger - Forum Facebook Messenger
- Affichage double ecran - Guide
6 réponses
Bonjour,
1/
Je suppose que lorsque le user click sur l'onglet invitation
ça lances cette fonction la : update_date_vue()
Déjà... que contient ta BDD avant et après avoir lancé la fonction ??
- est-ce qu'en BDD les valeurs sont bonnes ?
Ensuite... es tu sûr qu'il faille utiliser cette requête ci :
C'est le active=1 qui me choque.... Cela signifie que tu valide directement le fait qu'ils deviennent amis..... ça m'étonne .. vu que tu as normalement un "bouton" prévu à cet effet.
Et puis... ça ne mets à jour QUE si c'est l'expéditeur qui cliques sur l'onglet invitation... pas le destinataire ... est-ce normal ??
2/
Autre question = Nouvelle discussion.
Merci de t'en souvenir à l'avenir.
1/
Je suppose que lorsque le user click sur l'onglet invitation
ça lances cette fonction la : update_date_vue()
Déjà... que contient ta BDD avant et après avoir lancé la fonction ??
- est-ce qu'en BDD les valeurs sont bonnes ?
Ensuite... es tu sûr qu'il faille utiliser cette requête ci :
UPDATE amis SET active=1 , date_vue=NOW() WHERE pseudo_exp = :session_pseudo
C'est le active=1 qui me choque.... Cela signifie que tu valide directement le fait qu'ils deviennent amis..... ça m'étonne .. vu que tu as normalement un "bouton" prévu à cet effet.
Et puis... ça ne mets à jour QUE si c'est l'expéditeur qui cliques sur l'onglet invitation... pas le destinataire ... est-ce normal ??
2/
2/ Pour ce qui est de l'onglet "messages", le "1" ne s'affiche même pas
Autre question = Nouvelle discussion.
Merci de t'en souvenir à l'avenir.
comment corriger cela ? :/
Et bien...
Ta requête actuelle :
insère dans la table "amis", dans les champs :
id_invitation,
pseudo_exp,
pseudo_dest,
date_invitation,
date_confirmation,
date_vue,
active
Les valeurs (dans le même ordre que les champs cités ci-dessus
''
,:sessPseudo,
:getPseudo,
NOW(),
NOW(),
NOW(),
0
....
Donc... vu que ton souci c'est que les champs date_confirmation et date_vue ... ont une date d'enregistrée .. alors qu'ils ne devraient pas...... il te suffit de modifier la requête en les retirant !
(au passage... on peut également retirer l'ID !! )
Bref.. ça donne :
Ta requête actuelle :
INSERT INTO amis(id_invitation,pseudo_exp,pseudo_dest,date_invitation,date_confirmation,date_vue,active) VALUES ('',:sessPseudo,:getPseudo,NOW(),NOW(),NOW(),0)
insère dans la table "amis", dans les champs :
id_invitation,
pseudo_exp,
pseudo_dest,
date_invitation,
date_confirmation,
date_vue,
active
Les valeurs (dans le même ordre que les champs cités ci-dessus
''
,:sessPseudo,
:getPseudo,
NOW(),
NOW(),
NOW(),
0
....
Donc... vu que ton souci c'est que les champs date_confirmation et date_vue ... ont une date d'enregistrée .. alors qu'ils ne devraient pas...... il te suffit de modifier la requête en les retirant !
(au passage... on peut également retirer l'ID !! )
Bref.. ça donne :
function enreg_invitation() { global $bdd; // déclaration globale de BDD $sess_pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; $get_pseudo = isset($_GET['pseudo'])?$_GET['pseudo']:NULL; if($sess_pseudo && $get_pseudo) { $sql = "INSERT INTO amis (pseudo_exp ,pseudo_dest ,date_invitation ,active) VALUES (:sessPseudo ,:getPseudo ,NOW() ,0)"; $params = array(":sessPseudo" =>$sess_pseudo ,":getPseudo" => $get_pseudo ); try { $query = $bdd->prepare($sql); $req = $query->execute($params); }catch(Exception $e){ // en cas de soucis dans la requete : echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } }//fin du if ! }//fin de la fonction
Donc là ...ça me semble mieux.
Maintenant... peux tu tester la requête suivante ( avec jean ou zak)
.. ce qui devrait afficher les demandes qui sont destinées à Jean (ou xzak47..si tu changes dans la requêtee) ET qui n'ont pas encore été vues (date_vue =00 ) Ou celles qui ont déjà été vues... mais qui n'ont pas encore été confirmées (ou supprimées) ..
Maintenant... peux tu tester la requête suivante ( avec jean ou zak)
SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest='jean'
.. ce qui devrait afficher les demandes qui sont destinées à Jean (ou xzak47..si tu changes dans la requêtee) ET qui n'ont pas encore été vues (date_vue =00 ) Ou celles qui ont déjà été vues... mais qui n'ont pas encore été confirmées (ou supprimées) ..
cette requete marche, donc je l'ai appliquée à mon code :
mais j'ai : Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\rs\functions\ibi.func.php on line 25
<?php //-----------------------------------------------// // Fichier : ibi.func.php //-----------------------------------------------// /* //la function qui va nous permettre d'afficher l'info-bulle des invitations */ function afficher_ibi_invitations(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue AND pseudo_dest=:session_pseudo)"; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; } /* //la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle */ function update_date_vue(){ global $bdd; //récupération des variables PROPREMENT ! $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_exp){ $sql = "UPDATE amis SET date_vue=NOW() WHERE pseudo_exp = :session_pseudo AND active=1"; // je place les params dans une variable avant de l'utiliser : $params = array('session_pseudo' => $pseudo_exp); try{ $query = $bdd->prepare($sql); $query ->execute($params); }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } } /** *la function qui va nous permettre d'afficher l'info-bulle des messages */ function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_conversation) as NB FROM conversations WHERE pseudo_dest=:pseudo_session OR (pseudo_exp=:pseudo_session > date_vue) "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
mais j'ai : Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\rs\functions\ibi.func.php on line 25
- Tu as testé la requête en direct dans ta BDD ? qu'est-ce que ça donne ?
- La demande... actuellement... elle est acceptée (c'est à dire active=1 ) ou pas (active = 0 )?
- Que contiennent les champs dans ta table pour la demande que tu essaies de faire afficher ?
-Tu dis que tu as toujours les mêmes soucis... c'est à dire ??? pourrais tu être un peu plus précis ?
- La demande... actuellement... elle est acceptée (c'est à dire active=1 ) ou pas (active = 0 )?
- Que contiennent les champs dans ta table pour la demande que tu essaies de faire afficher ?
-Tu dis que tu as toujours les mêmes soucis... c'est à dire ??? pourrais tu être un peu plus précis ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
- j'ai : 1 ligne affectée. (Traitement en 0.0640 sec)
avec cette requete :
-je n'ai ni accepté ni refusé l'invitation, elle est toujours en cours (car je teste le date_vue)
- date_vue est à 00000000 de même que date_confirmation
- meme probleme du dessus : rien n'a changé (meme en bdd), j'ai même refais un test en refusant l'invitation et la renvoyant avec le pseudo jean, il recoit lui meme une info bulle sur l'onglet invitation alors que c'est l'expediteur..
avec cette requete :
UPDATE amis SET date_vue=NOW() WHERE pseudo_dest = 'xzak47' AND active=0
-je n'ai ni accepté ni refusé l'invitation, elle est toujours en cours (car je teste le date_vue)
- date_vue est à 00000000 de même que date_confirmation
- meme probleme du dessus : rien n'a changé (meme en bdd), j'ai même refais un test en refusant l'invitation et la renvoyant avec le pseudo jean, il recoit lui meme une info bulle sur l'onglet invitation alors que c'est l'expediteur..
Je n'avais pas vu... mais tu avais fait n'importe quoi sur ta fonction :
function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest= :pseudo_session "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
oui pardon... c'est ta fonction afficher_ibi_invitations() qui est fausse ....
Il faut y mettre la requête
.. la position des parenthèses a son importance !!
Il faut y mettre la requête
$sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest= :pseudo_session ";
.. la position des parenthèses a son importance !!
j'ai : Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\rs\functions\ibi.func.php on line 25
<?php //-----------------------------------------------// // Fichier : ibi.func.php //-----------------------------------------------// /* //la function qui va nous permettre d'afficher l'info-bulle des invitations */ function afficher_ibi_invitations(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest= :pseudo_session "; // je place les params dans une variable avant de l'utiliser : $params = array(':session_pseudo' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; } /* //la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle */ function update_date_vue(){ global $bdd; //récupération des variables PROPREMENT ! $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_exp){ $sql = "UPDATE amis SET date_vue=NOW() WHERE pseudo_dest = :session_pseudo AND active=0"; // je place les params dans une variable avant de l'utiliser : $params = array('session_pseudo' => $pseudo_exp); try{ $query = $bdd->prepare($sql); $query ->execute($params); }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } } /** *la function qui va nous permettre d'afficher l'info-bulle des messages */ function afficher_ibi_messages(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_conversation) as NB FROM conversations WHERE pseudo_dest=:pseudo_session OR (pseudo_exp=:pseudo_session > date_vue) "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
Tu as déjà eu ce message d'erreur... c'est lié à tes noms de variables ....
bon.. essaye avec ça :
bon.. essaye avec ça :
function afficher_ibi_invitations(){ global $bdd; $result=0; //Variables $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo_session){ $sql = "SELECT COUNT(id_invitation) as NB FROM amis WHERE (date_vue = '0000-00-00 00:00:00' OR date_confirmation < date_vue ) AND pseudo_dest= :pseudo_session "; // je place les params dans une variable avant de l'utiliser : $params = array(':pseudo_session' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); $req= $query->fetchall(); $result= count($req)>0 ? $req[0]['NB']:0; }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } // Fin du if($pseudo_session) // le return return $result; }
http://www.noelshack.com/2015-27-1435609611-erreur.jpg
le date_vue fonctionne dans la table mais pas sur le site!!
le date_vue fonctionne dans la table mais pas sur le site!!
On est d'accord que tu utilises bien cette fonction :
//la function qui va nous permettre de mettre à jour la date_vue dans la bdd pour pouvoir cacher l'info-bulle */ function update_date_vue(){ global $bdd; //récupération des variables PROPREMENT ! $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if( $pseudo_session){ $sql = "UPDATE amis SET date_vue=NOW() WHERE pseudo_dest = :session_pseudo AND active=0"; // je place les params dans une variable avant de l'utiliser : $params = array(':session_pseudo' => $pseudo_session); try{ $query = $bdd->prepare($sql); $query ->execute($params); }catch(Exception $e) { echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } }
et ma fonction pdo :
des remarques ?
Regarder les valeurs AVANT ...puis APRES avoir cliqué sur ton lien d'update ?????