Problème d'invitation et function recup_invitation
RésoluZakarya93 Messages postés 1026 Statut Membre -
1/ Quand je me connecte sur mon site avec le compte xzak47 qui recoit l'invitation, normalement il devrait y avoir sur le profil de l'émetteur (jean) : Demande en cours, verifiez vos invitations / quand il clique sur le profil qui lui a envoyé la demande
voici mon code :
<?php
//-----------------------------
//Profile.php
//-----------------------------
include_once('body/header.php');
include_once('body/menu.php');
$pseudo = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$arr_infos = recuperer_info_membre_choisi($pseudo);
$accepter_demande = accepter_demande();
$demande_existe = demande_existe();
$verifier_expediteur = verifier_expediteur();
// Le temps des tests :
echo "<div id='debug'>
<br>accepter_demande => ".$accepter_demande."
<br>demande_existe => ".$demande_existe."
<br>verifier_expediteur => ".$verifier_expediteur."
</div>";
echo "<div class='info'>";
if(count($arr_infos)>0 && $pseudo != $_SESSION['pseudo']){
foreach($arr_infos as $R) {
if($demande_existe == 0){
echo "<div class='error'>
Vous n'êtes pas ami(e) avec ".$R['pseudo']."<br />
<a href='index.php?page=envoi&pseudo=".$R['pseudo']."'>Envoyer une invitation</a>
</div>";
}else if( $accepter_demande == 0 && $verifier_expediteur == 1){
echo "<div class='success'>Demande envoyée
<a href='index.php?page=annuler&pseudo=".$R['pseudo']."'>Annuler la demande</a></div>";
}else if($accepter_demande == 0 && $verifier_expediteur == 0){
echo "<div class='success'>Demande en cours<br />
Verifiez vos invitations
</div>";
}
echo"<img src='avatar/". $R['avatar']."' height='200' width='200' alt='avatar'>";
echo "<p><strong>Email : </strong><em>".$R['email']."</em></p>";
echo "<p><strong>Sexe : </strong><em>".$R['sexe']."</em></p>";
echo "<p><strong>A propos de vous : </strong><em>".$R['apropos']."</em></p>";
}//fin du foreach
}else{
header("Location:index.php?page=membre");
}
echo "</div>";
?>
2/ Sachant que le script mysql_ de ma function recup_invitation est :
<?php
//la functions va recuperer les invitations
function recup_invitations()
{
$query = mysql_query("SELECT pseudo_exp,date_invitation,active,avatar
FROM amis
INNER JOIN users ON users.pseudo=amis.pseudo_exp
WHERE pseudo_dest='{$_SESSION['pseudo']}'
ORDER BY date_invitation DESC
");
$results=array();
while($row=mysql_fetch_assoc($query))
{
$results[]=$row;
}
return $results;
}
?>
pouvez-vous corrigé le code que j'ai fais ?
<?php
//la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
$pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$result= array();
if($pseudo_exp && $pseudo_dest){
$sql = "SELECT pseudo_exp,date_invitation,active,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)
OR (pseudo_exp = :get_pseudo AND pseudo_dest = :session_pseudo)";
// je place les params dans une variable avant de l'utiliser :
$params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}
// le return
return $result;
}
Merci d'avance :)
- Problème d'invitation et function recup_invitation
- Invitation annulée facebook visible ✓ - Forum Facebook
- Comment envoyer une invitation sur facebook - Guide
- Ce compte ne peut pas recevoir vos messages car il n’autorise aucune invitation par message ✓ - Forum Facebook
- Invitation par message instagram disparu - Forum Instagram
- Invitation par message messenger mais pas de message ✓ - Forum Facebook Messenger
5 réponses
Un utilisateur cherche à afficher le statut des invitations lors de la connexion et à corriger la récupération des invitations dans la base via PHP et MySQL. Des réponses techniques indiquent que la requête échoue principalement à cause du nom de table incorrect (amis vs utilisateurs) et d'un mauvais alignement entre les paramètres liés et les placeholders. Pour corriger, harmoniser les noms de tables avec la base et faire correspondre les placeholders et les paramètres liés, en utilisant une requête préparée correctement et de manière sécurisée. Plusieurs échanges soulignent qu'un copier-coller incorrect a conduit à des appels sur des tables erronées et recommandent de tester directement les requêtes pour diagnostiquer et identifier rapidement les causes.
$sql = "SELECT pseudo_exp,date_invitation,active,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE (pseudo_dest = :get_pseudo)";
Tu y as combien de paramètres ??
Et dans le params.... tu en as combien ?
$params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest);
... à ton avis... est-ce bon ?
<?php
//la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_get= isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$result= array();
if($pseudo_exp && $pseudo_dest){
$sql = "SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = :get_pseudo";
// je place les params dans une variable avant de l'utiliser :
$params = array(':get_pseudo' => $pseudo_get);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}
// le return
return $result;
}
Après... que doit retournée cette fonction ?
un booleen ( 1 ou 0 )
ou bien .. un tableau contenant toutes les données de la BDD corresponds à la requête ?
Si c'est un booleen que tu veux... il faut modifier le return ainsi
return count($result)>0?1:0;
<?php
//la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_get= isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$result= array();
if($pseudo_get){
$sql = "SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = :get_pseudo";
// je place les params dans une variable avant de l'utiliser :
$params = array(':get_pseudo' => $pseudo_get);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}
// le return
return $result;
}
SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = 'jean'
et avec
SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = 'xzak47'
Et aussi .. que donnes ce code ?
/la function qui va recuperer les invitations
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_get= isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$result= array();
if($pseudo_get){
$sql = "SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = :get_pseudo";
// je place les params dans une variable avant de l'utiliser :
$params = array(':get_pseudo' => $pseudo_get);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}
// pour les tests :
echo "<br> PARAMS :<br>";
print_r($params);
// le return
return $result;
}
pour la première requete 1/ : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0200 sec)
respectivement, la 2/ : MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0010 sec)
testes ça :
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_get= isset($_GET['pseudo'])?$_GET['pseudo']:NULL;
$result= array();
if($pseudo_get){
$sql = "SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = :get_pseudo";
// je place les params dans une variable avant de l'utiliser :
$params = array(':get_pseudo' => $pseudo_get);
// pour les tests :
echo "<br> PARAMS :<br>";
print_r($params);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}else{
echo "<br> Erreur .. aucun pseudo ! ";
print_r($_GET);
}
// le return
return $result;
}
En fait .. c'est par rapport à la variable en SESSION que tu veux récupérer les infos ... donc:
function recup_invitations() {
global $bdd;
//récupération des variables PROPREMENT !
$pseudo_dest= isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
$result= array();
if($pseudo_dest){
$sql = "SELECT pseudo_exp
,date_invitation
,active
,avatar
FROM amis
INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
WHERE pseudo_dest = :session_pseudo";
// je place les params dans une variable avant de l'utiliser :
$params = array(':session_pseudo' => $pseudo_dest);
// pour les tests :
echo "<br> PARAMS :<br>";
print_r($params);
$query = $bdd->prepare($sql);
$query ->execute($params);
$requete = $query->fetchall();
}else{
echo "<br> Erreur .. aucun pseudo ! ";
}
// le return
return $result;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
params : 2 paramètres
Requête 4 ????
Combien de variable avec les ":" ?
Il n'y a que :get_pseudo
...
Quoi qu'il en soit ... le nombre doit être identique entre la requête et le params...
$sql = "SELECT pseudo_exp,date_invitation,active,avatar FROM amis INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo) OR (pseudo_exp = :get_pseudo AND pseudo_dest = :session_pseudo)";$params = array('get_pseudo' => $pseudo_dest);comme ceci ?