[RESOLU] Problème sur la gestion d'amis

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème sur la gestion d'amis

Re: Problème sur la gestion d'amis

par taha221 » 26 août 2014, 20:33

C'est bon, j'ai réussi à réglé mon problème, en tout cas merci beaucoup c'est grâce à vous que j'ai découvert qu'il n'y avais pas de faute dans mon code, mon problème c'était le ID de celui qui envoie l'invitation ;)

Merci beaucoup :)

Re: Problème sur la gestion d'amis

par taha221 » 26 août 2014, 19:43

Si tu peux me montré en video s'il te plait, je ne voit vraiment pas ou est le problème, merci :

Re: Problème sur la gestion d'amis

par Elie » 26 août 2014, 19:36

Bah le problème vient de chez toi car chez moi ca marche.
Si tu veux je te fais une vidéo mais je rencontre aucun soucis

Re: Problème sur la gestion d'amis

par taha221 » 26 août 2014, 19:26

Oui, j'avais déjà mis la correction de ces ligne en suppriment la condition, j'ai oublier de faire la même chose ici, mais le problème n'est malheureusement pas là :?

Re: Problème sur la gestion d'amis

par Elie » 26 août 2014, 19:19

Je comprend pas le principe de ces lignes :
   //Cette ligne va permettre d'afficher 0 plutôt qu'un vide
    if(empty($demande_ami)) {
		
    $demande_ami=0;

    echo '<br /><ul>
    <li><a href="amis.php?action=add">Ajouter un ami</a></li>
    <li><a href="amis.php?action=check">Voir les demandes d\'ajout ('.$demande_ami.')</a></li></ul>';
    break;
    }
Si je vire la condition ca s'affiche correctement.

Re: Problème sur la gestion d'amis

par taha221 » 26 août 2014, 19:01

Béhh loool
    CREATE TABLE membre (
    id int(11) NOT NULL auto_increment,
    login text NOT NULL,
    pass_md5 text NOT NULL,
    PRIMARY KEY (id)
    ) TYPE=MyISAM;
Il y a ici le plus important, enfin ceux que j'utilise sur la gestion d'amis, le reste n'est pas important ;)

Re: Problème sur la gestion d'amis

par Elie » 26 août 2014, 18:51

En texte en fait ...

Re: Problème sur la gestion d'amis

par taha221 » 26 août 2014, 18:47

Oui bien sur ;)

voila

Image

Re: Problème sur la gestion d'amis

par Elie » 26 août 2014, 18:40

Tu peux filer la table membre stp

Problème sur la gestion d'amis

par taha221 » 26 août 2014, 18:21

Bonjour,

Comme le nom de mon sujet l'indique, j'aimerais faire une gestion d'amis sur mon site, j'ai également créer une table :
   CREATE TABLE `forum_amis` (
    `ami_from` int(11) NOT NULL,
    `ami_to` int(11) NOT NULL,
    `ami_confirm` enum('0','1') collate latin1_general_ci NOT NULL,
    `ami_date` int(11) NOT NULL,
    PRIMARY KEY (`ami_to`,`ami_from`)
    )
et pour ma page d'amis :
<?php
    switch($action)

    {
    case "add": //On veut ajouter un ami
    if (!isset($_POST['pseudo']))
    {
    echo '<form action="amis.php?action=add" method="post">
    <p><label for="pseudo">Entrez le pseudo</label>
    <input type="text" name="pseudo" id="pseudo" />
    <input type="submit" value="Envoyer" />
    </p></form>';
    }

    else
    {
    $pseudo_d = $_POST['pseudo'];
    //On vérifie que le pseudo renvoit bien quelque chose :o

    $query=$db->prepare('SELECT id, COUNT(*) AS nbr FROM membre
    WHERE LOWER(login) = :pseudo GROUP BY login');
    $query->bindValue(':pseudo',strtolower($pseudo_d),PDO::PARAM_STR);
    $query->execute();
    $data = $query->fetch();
    $pseudo_exist = $data['nbr'];
    $i = 0;
    $id_to=$data['id'];
    if(!$pseudo_exist)
    {
    echo '<p>Ce membre ne semble pas exister<br />
    Cliquez <a href="amis.php?action=add">ici</a> pour réessayer</p>';
    $i++;
    }
    $query->CloseCursor();
    $query = $db->prepare('SELECT COUNT(*) AS nbr FROM amis
    WHERE ami_from = :id AND ami_to = :id_to
    OR ami_from = :id AND ami_to = :id_to');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':id_to', $id_to, PDO::PARAM_INT);
    $query->execute();
    $deja_ami=$query->fetchColumn();
    $query->CloseCursor();

    if ($deja_ami != 0)
    {
    echo '<p>Ce membre fait déjà parti de vos amis ou a déjà proposé son amitié :p<br />
    Cliquez <a href=amis.php?action=add">ici</a> pour réessayer</p>';
    $i++;
    }
    if ($id_to == $id)
    {
    echo '<p>Vous ne pouvez pas vous ajouter vous même<br />
    Cliquez <a href="amis.php?action=add">ici</a> pour réessayer</p>';
    $i++;
    }
    if ($i == 0)
    {
    $query=$db->prepare('INSERT INTO amis (ami_from, ami_to, ami_confirm, ami_date)
    VALUES(:id, :id_to, :conf, :temps)');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':id_to', $id_to, PDO::PARAM_INT);
    $query->bindValue(':conf','0',PDO::PARAM_STR);
    $query->bindValue(':temps', time(), PDO::PARAM_INT);
    $query->execute();
    $query->CloseCursor();
    echo '<p><a href="profile.php?id='.$data['id'].'">'.stripslashes(htmlspecialchars($pseudo_d)).'</a>
    a bien été ajouté à vos amis, il faut toutefois qu il donne son accord.<br />

    Cliquez <a href="amis.php">ici</a> pour retourner à la page de gestion des amis</p>';
    }
    }
    ?>
    <?php
    case "check":
    $add = (isset($_GET['add']))?htmlspecialchars($_GET['add']):0;
    if (empty($add))
    {
    $query = $db->prepare('SELECT ami_from, ami_date, login FROM amis
    LEFT JOIN membre ON id = ami_from
    WHERE ami_to = :id AND ami_confirm = :conf
    ORDER BY ami_date DESC');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':conf','0',PDO::PARAM_STR);
    $query->execute();

    echo '<table align="center"><tr>
    <th class="pseudo"><strong>Pseudo</strong></th>
    <th class="inscrit"><strong>Date d ajout</strong></th>
    <th><strong>Action</strong></th></tr>';

    if ($query->rowCount() == 0)
    {
    echo '<td colspan="3" align="center">Vous n avez aucune proposition</td>';
    }
    while ($data = $query->fetch())
    {
    echo '<tr><td><a href="profile.php?id='.$data['ami_from'].'&action=consulter">'.stripslashes(htmlspecialchars($data['login'])).'</a></td>
    <td>'.date('d/m/Y',$data['ami_date']).'</td>
    <td><a href="amis.php?action=check&add=ok&m='.$data['ami_from'].'">Accepter</a> -
    <a href="amis.php?action=delete&m='.$data['ami_from'].'">Refuser</a>
    </td></tr>';
    }
    $query->CloseCursor();
    }
    else
    {
    $membre = (int) $_GET['m'];
    $query = $db->prepare('UPDATE amis SET ami_confirm = :conf
    WHERE ami_from = :membre AND ami_to = :id');
    $query->bindValue(':conf','1',PDO::PARAM_STR);
    $query->bindValue(':membre',$membre,PDO::PARAM_INT);
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    $query->closeCursor();
    echo '<p>Le membre a bien été ajouté à votre liste d ami<br />
    Cliquez <a href="amis.php">ici</a> pour retourner à la liste des amis';
    }
    break;
    ?><?php
    case "delete":
    $membre = (int) $_GET['m'];
    if (!isset($_GET['ok']))
    {
    echo '<p>Etes vous certain de vouloir supprimer ce membre ?<br />
    <a href="amis.php?action=delete&ok=ok&m='.$membre.'">oui</a> - <a href="amis.php">non</a></p>';
    }
    else
    {
    $query = $db->prepare('DELETE FROM amis WHERE ami_from = :membre AND ami_to = :id');
    $query->bindValue(':membre',$membre,PDO::PARAM_INT);
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    $query->closeCursor();

    $query = $db->prepare('DELETE FROM amis WHERE ami_to = :membre AND ami_from = :id');
    $query->bindValue(':membre',$membre,PDO::PARAM_INT);
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    $query->closeCursor();

    echo '<p>Membre correctement supprimé :D <br />
    Cliquez <a href="amis.php">ici</a> pour retourner à la liste des amis</p>';
    }
    break;
    ?><?php
    default:

    $query = $db->prepare('SELECT (ami_from + ami_to - :id) AS ami_id, ami_date, login
    FROM amis
    LEFT JOIN membre ON id = (ami_from + ami_to - :id)

    WHERE (ami_from = :id OR ami_to = :id) AND ami_confirm = :conf ORDER BY login');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':conf','1',PDO::PARAM_STR);
    $query->execute();

    echo '<table align="center"><tr>
    <th class="pseudo"><strong>Pseudo</strong></th>
    <th class="inscrit"><strong>Date d ajout</strong></th>
    <th><strong>Action</strong></th>
    <th><strong>Connecté</strong></th></tr>';

    if ($query->rowCount() == 0)
    {
    echo '<td colspan="4" align="center">Vous n avez aucun ami pour l instant</td>';
    }
    while ($data = $query->fetch())
    {
    echo '<tr><td><a href="profile.php?id='.$data['ami_id'].'&action=consulter">'.stripslashes(htmlspecialchars($data['login'])).'</a></td>
    <td>'.date('d/m/Y',$data['ami_date']).'</td>
    <td><a href="new_pm.php">Envoyer un MP</a><br />
    <a href="amis.php?action=delete&m='.$data['ami_id'].'">Supprimer</a></td>';
    echo '<td>Non</td>';
    echo '</tr>';
    }
    echo '</table>';
    $query->CloseCursor();

    //On compte le nombre de demande en cours et on met quelques liens
    $query=$db->prepare('SELECT COUNT(*) FROM amis
    WHERE ami_to = :id AND ami_confirm = :conf');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->bindValue(':conf','0', PDO::PARAM_STR);
    $query->execute();
    $demande_ami=$query->fetchColumn();

    //Cette ligne va permettre d'afficher 0 plutôt qu'un vide
    if (empty($demande_ami)) {
    $demande_ami=0;

    echo '<br /><ul>
    <li><a href="amis.php?action=add">Ajouter un ami</a></li>
    <li><a href="amis.php?action=check">Voir les demandes d\'ajout ('.$demande_ami.')</a></li></ul>';
    break;
    }
    }
    ?>

Alors quant j'ajoute un ami, ça s’enregistre dans la base de donné normal, mais l'ami que j'ai ajouté ne reçois pas d'invitation, j'ai vérifier sur la base de donné tout est bon, l'invitation s'est bien envoyé au bon membre, mais ne s'affiche pas dans la page, l'ami ne reçois rien, aussi même si le membre en personne à des amis, ils ne s'affiche pas aussi dans la liste, je ne sais pas ou est le problème, alors si vous pouvez m'aidez je vous remercie d'avance ;)