Php - liste utilisateurs

Résolu
Bonjour,

voici mon code pour celui qui veut prendre des idées :

Comment pourrais je faire pour que l' utilisateur connecté ne voit que les utilisateur du sexe opposé? sexe : homme connecté voit membres femmes et vive versa.

<?
$toto=$_SESSION['username'];
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=phplogin', 'root', '');
}
catch(Exception $e)
{

        die('Erreur : '.$e->getMessage());
}

$reponse = $bdd->query("SELECT sexe,username,age FROM users WHERE  username NOT LIKE '$toto'");

while ($data = $reponse->fetch())
{

?>
 <?php   
 if( $data['sexe'] != "Homme"){?>
    <p>
  <a href="membre_<?php echo $data['username']?>.php"> <?php echo ($data['username']);?> - <?php echo ($data['age']); ?> ans </a>
    </em>
   </p>
<?php
}
} 
$reponse->closeCursor(); // Termine le traitement de la requête
?>

J ai utilisé if( $data['sexe'] != "Homme" pour vous donné une idéée si l' utilisateur connecté serait un homme.

Avec explication s il vous plait, pour que je puisse le refaire pour d autres caractéristiques.

Je vous remercie d avance

3 réponses

  1. Salut,

    Directement dans la requête ..non?
    $reponse = $bdd->query("SELECT sexe,username,age FROM users WHERE  username NOT LIKE '$toto' AND sexe != 'Homme'");


    L'idéal serait de récupérer le statut du connecté pour l'insérer directement dans la requête, genre :
    $toto=$_SESSION['username'];
    $sexe=$_SESSION['sexe'];
    
    $reponse = $bdd->query("SELECT sexe,username,age FROM users WHERE  username NOT LIKE '$toto' AND sexe != $sexe");
    1. En fait l idée est bonne mais je n ai pas de $_SESSION[sexe] j ai juste le $_SESSION['username'] via l entrée du speudo de l utilisateur pour accéder à son profil.

      J ai essayé cela mais çà note rien meme pas de msessage d erreurs enfait çà fonctionne pas :

      <?php
      while ($data = $reponse->fetch())
      {
      $sexe=$data['sexe'];
       $reponse2 = $bdd->query("SELECT sexe FROM users WHERE   sexe != $sexe");
      
      while ($data2 = $reponse2)
      {
      $sexe2=$data2['sexe']
      ?>
       <?php  
       
       if( $data['sexe'] != $sexe2 ){?>
          <p>
        <a href="membre_<?php echo $data['username']?>.php"> <?php echo ($data['username']);?> - <?php echo ($data['age']); ?> ans </a>
          </em>
         </p>
      <?php
      }
      }
      } 
      $reponse->closeCursor();
      ?>
      


      Merci
      1. ça ne serait pas plutôt un truc du style :
        //on récupère le sexe de la personne logué
        $reponse2 = $bdd->query("SELECT sexe FROM users WHERE username=$toto");
        while ($data2 = $reponse2)
        {
        $sexe2=$data2['sexe']
        }
        //on sélectionne tout sauf le logué dont le sexe est différent
        $reponse = $bdd->query("SELECT sexe,username,age FROM users WHERE  username NOT LIKE '$toto' AND sexe != $sexe2");
        
        1. En tout cas çà ne fonctionne tjrs pas.. mais un grand merci de vous intereessez au sujet.. çà me permet de pas lacher et d essayer de nouveau d autres idées qui me viennent.. puisque je suis un novice qui a appris par you tube et cours du zér.. J esaies via ce que je connais.... en esperan que çà marchera... :-)
        2. En une requete, essayes pour voir

          SELECT users.sexe,users.username,users.age 
          FROM users 
          WHERE users.sexe != (
          	SELECT users2.sexe 
          	FROM users as users2 
          	WHERE users2.username LIKE '$toto'
          )
        3. nan tjours pas... note erreur avec le fletch :-0
        4. c'est ton code qui va pas, quel est l'erreur ?
        5. 
          <?php
          session_start();
             ?>
          
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
          
               <head>
                 <title></title>	 
                     <meta>
          	
          
          		   
          <link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/phpcss.css" />
            </style>
             </head>
           <body>
           <div id="milieu">
          
           
           <div id="standardblock">
          <div id="title">
           </div>
          <br style="clear: both;"/>
          <table class="standard"> 
          
          <div id="title">
          
          
          
          
             <?php
          
            if(isset($_SESSION['username']))  /* si l utilisateur n' est pas indetifier ne pas acceder à la suite */
            { 
             
               echo "Bienvenue ".$_SESSION['username']." <br/><a href='logout.php'>Se deconnecter</a> &nbsp;|&nbsp;
          	 <a href='changepassword.php'>Changez de Password</a>";
          	 }
          	 else
          	 {
          	 header('Location:login.php');	  
          	  }
            $toto=$_SESSION['username'];
          	?>
          
          <?php
          try
          {
          	// On se connecte à MySQL
          	$bdd = new PDO('mysql:host=localhost;dbname=phplogin', 'root', '');
          }
          catch(Exception $e)
          {
          	// En cas d'erreur, on affiche un message et on arrête tout
                  die('Erreur : '.$e->getMessage());
          }
          
          // Si tout va bien, on peut continuer
          
          // On récupère tout le contenu de la table avec kes différences demandées
          $reponse = $bdd->query ("SELECT users.sexe,users.username,users.age 
          FROM users 
          WHERE users.sexe != 
          	SELECT users2.sexe 
          	FROM users as users2 
          	WHERE users2.username LIKE '$toto'"
          );
          
          // On affiche chaque entrée une à une
          while ($data = $reponse->fetch())
          {
          ?>
              <p>
            <a href="membre_<?php echo $data['username']?>.php"> <?php echo ($data['username']);?> - <?php echo ($data['age']); ?> ans</a>
              </em>
             </p>
          <?php
          }
          
          $reponse->closeCursor(); // Termine le traitement de la requête
          
          ?>
          
          </div>
            </body>
           </html>
          
          


          Voila le message d erreur ;

          Fatal error: Call to a member function fetch() on a non-object ??? merci,