Bonjour,
Voila je rencontre un petit problème avec mon code.
j'ai un count pour compter les invitations dans mon système d'amitier mais le problème c'est que quand j'accepte ou je refuse la demande d'amitier normalement il devrait passé à 0 mais il reste toujours à 1.
Le compteur fonctionne, le problème c'est que qu'il passe pas à 0 quand j'accepte ou je refuse la demande d'amitier alors que normalement il devrait.
function nombre_invitation()
{
global $bdd;
$query = $bdd->prepare("SELECT COUNT(id_invitation) FROM amis WHERE id_dest=:id AND
date_invitation = date_confirmation ");
$query->execute(array('id' => $_SESSION['id']));
return $query->fetchColumn() != 0;
}
<?php
$nb_invitation = nombre_invitation();
if($nb_invitation !== 0)
{
?>
<li><a href="demande.php">Mes demandes(<?php echo $nb_invitation;?>) </a></li>
<?php
}
else
{
?>
<?php
}
?>
J'ai essayé de remplacer if($nb_invitation !== 0) par un seul = mais rien y fait.
Merci d'a vance
Si tu as résolu ton problème c'est une bonne chose, par contre si je peux te donner quelques conseils, ils seraient :
NULL
et tu le passe à 1
si la demande est accepté et à 0
s'il la refuse, en supprimant l'enregistrement tu n'auras aucun moyen de savoir si la demande n'a pas déja été faite.Bonjour.
Il y a plusieurs choses qui ne vont pas, la première c'est que tu te contredis, car tu dis que le système fonctionne et qu'il ne fonctionne pas :
Le compteur fonctionne, le problème c'est que qu'il passe pas à 0 quand j'accepte ou je refuse la demande d'amitier alors que normalement il devrait.
Ensuite, ton problème se situe où en fait, lors de la récupération de données ou lors de l'ajout/modification/suppression en base de données ?
D'après ce que tu expliques :
le problème c'est que quand j'accepte ou je refuse la demande d'amitier normalement il devrait passé à 0 mais il reste toujours à 1.
Je crois bien que tu devrais revoir ton système car il ne me semble pas correct.
Car tu parles de 0
et 1
, mais un compteur à la base, ce n'est pas pour récupérer une valeur négative|positive de type booléen (0|1).
Tu devrais plutôt par exemple :
Lors de l'acceptation ou le refus d'une invitation, tu décrémentes un champ dans la table concernant l'utilisateur de manière à récupérer la valeur de ce champ et l'afficher à ton utilisateur pour qu'il sache s'il a des invitations ou non et si oui combien il en a.
Pour faire simple :
Là c'est bien sûr la version simplifiée, mais étant donné que tu n'as pas donné de précisions, j'ai fais au plus simple.
Salut, Je m'explique, j'ai un système d'amitier, l'utilisateur (A) donc l'expediteur va envoyer une demande d'invitation à l'utilisateur (B) le destinataire et si il accepte l'active passe à 1 sinon si il refuse l'invitation est donc supprimé.
Moi ce que je souhaite, quand un utilisateur (B) accepte une invitation de l'utilisateur (A) sont petit 1 qu'il à reçu passe à 0. Si l'utilisateur (B) reçoit 5 demandes d'invitations alors il devrait écrire (5) et quand il accepte ou il refuse il se décrémente.
Je pense avoir compris ce que tu voulais dire, je ne peu pas utilisé l'active comme compteur, donc j'ai fais un champs (compteur) dans ma table d'amitier en int. Et quand l'utilisateur A va envoyer à une invitation à l'utilisateur B. Alors incrémentation. Si il accepte, décrémentation et si il réfuse (rien) vu que ça va être supprimé.
Du coup j'ai ajouté dans mes deux fonction, le compteur : Elle fonctionne j'ai bien un (1) quand il y a une invitation et un 0 quand il y a une acceptation. Mais après je sais pas faire avec le count pour récupérer.
function enreg_invitation()
{
global $bdd;
$query = $bdd->prepare(" SELECT * FROM amis WHERE id_exp = :session_id AND id_dest = :get_id");
$query->execute(array('get_id' => $_GET['id'], 'session_id' => $_SESSION['id']));
$nb_demandes_deja_existantes = $query->fetch();
if (!$nb_demandes_deja_existantes)
{
$compteur = 0;
$query = $bdd->prepare(" INSERT INTO amis(id_invitation,id_exp,id_dest,active, date_invitation, date_confirmation, compteur)
VALUES ('',:session_id,:get_id,0, NOW(), NOW(), :compteur)
");
$query->execute(array('get_id' => $_GET['id'], 'session_id' => $_SESSION['id'], 'compteur' => $compteur=$compteur+1));
}
}
function accepter_invitation()
{
global $bdd;
$query = $bdd->prepare("
UPDATE amis SET active=1, compteur=:compteur WHERE id_exp= :get_pseudo
AND id_dest= :session_pseudo
");
$query->execute(array('get_pseudo' => $_GET['id'], 'session_pseudo' => $_SESSION['id'], 'compteur' => $compteur = --$compteur));
}
function refuser_invitation()
{
global $bdd;
$query = $bdd->prepare("DELETE FROM amis WHERE id_exp = :get_pseudo AND id_dest = :session_pseudo");
$query->execute(array('get_pseudo' => $_GET['id'], 'session_pseudo' => $_SESSION['id']));
}
Bon dsl de up mais je pense que j'ai résolu mon problème, j'ai fais : Après je sais pas si tu es d'accord avec moi mais à première vu il me compte bien les invitations et me décrémente quand j'ai rien.
function nombre_invitation()
{
global $bdd;
$query = $bdd->prepare("SELECT COUNT(id_invitation) FROM amis WHERE id_dest=:id AND compteur=:compteur ");
$query->execute(array('id' => $_SESSION['id'], 'compteur' => 1));
return $query->fetchColumn() ;
}
<?php
$nb_invitation = nombre_invitation();
if($nb_invitation != 0)
{
?>
<li><a href="amis.php?a=amis">Mes amis <?php echo '('.$nb_invitation.')';?> </a></li>
<?php
}