IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête SQL-Gestion Amis


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par défaut Requête SQL-Gestion Amis
    Bonjour,

    Voila je suis actuellement en train de creer pour mon site web un gestionnaire d'amis.Je m'explique :
    -lorsque je clique sur gerer la liste d'amis j'apercois plusieurs onglet:
    -Accueil
    -Ajouter un amis
    -Mes amis
    -Demande en attente

    le souci qui se pose c'est lors de la liste d'amis et les demande.En effet il m'affiche un nombre a la place du pseudo.De plus lorsque je met ajouter un amis,il trouve bien la personne et insert correctement dans la table cependant j'ai décider de faire deux insertion pour que l'ajout fonctionne dans les deux sens:
    X amis avec Y et Y amis avec X.Cependant il met crée deux insertion mais une completement fausse. par exemple il me rentre:

    ami from ami to ami_confirm ami-date
    1 7 0 time
    0 1 1 time

    voici le code add_amis.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <fieldset>
                    <legend>Ajouter un ami</legend>
                    <p><label for="pseudo">Pseudo :</label> <input type="text" name="pseudo" id="pseudo" /></p>
     
                    <p class="centrer"><center><input type="submit" value="Ajouter en ami" /></p>
    		<?php
     
    	}
    	else{
     
    			$pseudo = htmlspecialchars($_POST['pseudo']);
    			//On vérifie que le pseudo renvoit bien quelque chose :o (1)
    			$requete = mysql_query("SELECT COUNT(*) AS nbr,id FROM users
    			WHERE username = '".$pseudo."'") or die(mysql_error());
    			$data = mysql_fetch_assoc($requete);
    			$pseudo_exist = $data['nbr'];
    			$i = 0;
    			if(!$pseudo_exist)
    			{
    			echo '<div class="erreur">Erreur :<br />ce membre n\'existe pas.</div>
    			<p>Cliquez <a href="/add_amis">ici</a> pour réessayer.</p>';
    			$i++;
    			}
     
            // On vérifie que le membre n'est pas déjà un ami (2)
            $deja_ami = @mysql_result(mysql_query("SELECT COUNT(*) AS nbr FROM amis
                            WHERE ami_from = '".$_SESSION['userid']."' AND ami_to = '".$data['id']."'
                            OR ami_to = '".$_SESSION['userid']."' AND ami_from = '".$data['id']."'"));
            if ($deja_ami != 0)
            {
                    echo '<div class="erreur">Erreur :<br />ce membre fait déjà parti de vos amis ou a déjà proposé son amitié.</div>
                    <p>Cliquez <a href="/add_amis">ici</a> pour réessayer.</p>';
                    $i++;
            }
     
            // On vérifie que le membre ne s'ajoute pas lui même (3)
            if ($data['id'] == $_SESSION['userid'])
            {
                    echo '<div class="erreur">Erreur :<br />vous ne pouvez pas vous ajouter vous même.</div>
                    <p>Cliquez <a href="/add_amis">ici</a> pour réessayer.</p>';
                    $i++;
            }
     
            // Si tout colle, on lance la requête
            if ($i == 0)
            {
                    mysql_query("INSERT INTO amis (ami_from, ami_to, ami_confirm, ami_date)
                            VALUES('".$_SESSION['userid']."', '".$data['id']."', 0,'".time()."')") or die(mysql_error());
     
    				mysql_query("INSERT INTO amis (ami_from, ami_to, ami_confirm, ami_date)
                            VALUES('".$_data['id']."', '".$_SESSION['userid']."', 1,'".time()."')") or die(mysql_error());
                    echo '<div class="info"><strong>'.$pseudo.'</strong> a bien été ajouté à vos amis, il faut toutefois qu\'il donne son accord.</div>';
            }
    	}
    et see_amis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <ul id="onglets">
    						<li><a href="index.php"> Accueil </a></li>
    						<li><a href="add_amis.php">Ajouter un Ami</a></li></form>
    						<li><a href="see_amis.php">Mes Amis</a></li></form>
    						<li><a href="attente.php"> Demandes en attente </a></li>
    					</ul>
    			<h1>Liste d'amis</h1>
    		<?php
    		$action = htmlspecialchars($_GET['action']);
     
    switch($action)
    {
    case "delete":
    $membre = intval($_GET['m']);
    $ok = htmlspecialchars($_GET['ok']);
    if (empty($ok))
    {
    echo '<p class="centrer">Etes-vous certain de vouloir supprimer cet ami ?<br />
    <a href="/see_amis.php?action=delete&amp;ok=ok&amp;m='.$membre.'">oui</a> -
    <a href="/see_amis.php">non</a></p>';
    }
    else
    {
    mysql_query('DELETE FROM amis
    WHERE ami_from = '.$membre.' AND ami_to = '.$_SESSION['userid'].'
    OR ami_to = '.$membre.' AND ami_from = '.$_SESSION['userid'].'') or die(mysql_error());
     
    echo '<div class="info">Ce membre a était supprimé de votre liste d\'ami.</div>';
    }
    break;
    }
    		$requete = mysql_query("SELECT id FROM users
    			WHERE username = '".$pseudo."'
    			GROUP BY username") or die(mysql_error());
    			$data = mysql_fetch_assoc($requete);
     
    $requete_amis = mysql_query("SELECT ami_from, ami_date, username
    FROM amis
    LEFT JOIN users ON id = ami_from
    WHERE ami_to = '".$_SESSION['userid']."' AND ami_confirm = '1'
    OR ami_from = '".$_SESSION['userid']."' AND ami_confirm = '1'
    ORDER BY ami_date DESC") or die(mysql_error());
     
     
    if (mysql_num_rows($requete_amis) == 0)
    {
     echo '<table width="880" border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="blue">
     <tr>
     <td bgcolor="#CCCCFF" width=5% align="center">Vous n\'avez aucun amis.</td></tr></table>';
    }
     
    else
    {
    ?>
    <table border="1" cellspacing="0">
    <tr>
    <th>Pseudo</th>
    <th>Envoyer un MP</th>
    <th>Supprimer</th>
    </tr>
    <tbody>
    <?php
    while ($donnees_amis = mysql_fetch_assoc($requete_amis))
    {
    ?>
    <table width="880" border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="blue">
    <tr>
    <td bgcolor="#CCCCFF" width=5% align="center"><a href="profile.php?id=<?php echo $data['id']; ?>"><?php echo htmlentities($donnees_amis['ami_from'], ENT_QUOTES, 'UTF-8'); ?></a></td>
    <td bgcolor="#CCCCFF" width=5% align="center"><a href="/Creer_message.php"> Envoyer un MP </a></td>
    <td bgcolor="#CCCCFF" width=5% align="center"><a href="see_amis.php?action=delete&m=<?php echo $donnees_amis['ami_from'];?>"><img src="images/supprimer.gif" alt="Supprimer" /></a></td>
    </tr>
    <?php
    }
    ?>
    </tbody></table>
    <?php
    }
    ?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu as des amis à sens unique ? genre si je suis l'amie de A, A n'est pas forcément mon ami ? Bizarre comme fonctionnement...

    Bon à part ce point, tes requêtes ont l'air correctes. Tu peux essayer de les afficher via un echo pour voir ce qu'il se passe réellement. Quelle est la structure exacte de la table amis ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [AC-2007] Requête SQL gestion d'un stock
    Par lumpy26 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/10/2014, 16h40
  2. Gestion des dbparameters vides dans une requête SQL
    Par GCAccess dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/10/2009, 08h48
  3. [WD14] Gestion Null dans requête SQL
    Par N_Ron dans le forum WinDev
    Réponses: 12
    Dernier message: 07/08/2009, 10h35
  4. Gestion des requêtes SQL
    Par dot-_-net dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/04/2009, 00h32
  5. [MySQL] Gestion des requêtes SQL (classe ou pas ?)
    Par FrontLine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/01/2008, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo