Permettre ma barre de recherche affiche avatar

Résolu/Fermé
martin - Modifié le 20 févr. 2018 à 21:05
 martin - 22 févr. 2018 à 16:19
Bonjour,

Je suis débutant en php et PDO, je voudrais savoir comment permettre a ma barre de recherche d'afficher la photo de profil de la personne rechercher, svp. Pour l'insatant, je trouve la liste des noms et prenoms voici ma page ou j'ai coder:
{
 
 $output = '';
 

 if(isset ($_POST['search'])){
 $searchq = $_POST['search'];
 $searchq = preg_replace ("#[^0-9a-z]#i","",$searchq);


 try{

$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ' ');

$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

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

 $req = $bdd->prepare("SELECT * FROM utilisateurss
  WHERE Prenom LIKE '%$searchq%' OR NOM LIKE '%$searchq%'
  ");
 $req->execute();

 $count = $req->rowCount();
 if($count == 0){
  echo 'Auncun résultat ...';
 }else {
     
 while($row = $req->fetch(PDO::FETCH_ASSOC)){
   
 $Prenom = $row['Prenom'];
 $NOM = $row['NOM'];
 $id = $row['id'];
 $avatar = $row['avatar'];

 $output .= '<div> '.$Prenom.' '.$NOM.' </div>';

 

 print ("$output");

}

    $req->closeCursor();
}

}

}


EDIT : Ajout des balises de code (jordane)

Voila, déjà je trouve qu'il n'est pas top top et efficace car je trouve les personne due en tapant le prénom, je voudrais taper le prénom et noms mais c'est beaucoup plus compliqué. Déjà cela serai en grand pas si je pouvais afficher la photo de profil des personnes?

Je vous remercie d'avance
A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 févr. 2018 à 22:53
bonsoir, où se trouvent les photos des profils?
1
Ils se trouve dans un dossier avatar. Ou tout simplement dans la base de donnée rs, table utilisateurss et champs avatar.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Martin
20 févr. 2018 à 10:37
la première étape est de t'assurer que une image dans le dossier avatar est accessible à partir d'un navigateur, via un url.
est-ce le cas?
0
oui c'est le cas
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > martin
20 févr. 2018 à 15:22
ensuite tu génères un code html du genre
<img src="/avatar/personne.gif">
0
Comment je fais ça, stp ? Je le met dans ma fonction ou et comment ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 20 févr. 2018 à 21:18
Bonjour,

Quelques erreurs dans ton code...
Et quelques bonnes pratiques que tu devrais appliquer dès maintenant !

Voici

Déjà.. tu places le code de connexion à ta bdd dans un fichier à part que tu n'auras qu'à inclure dans tes autres pages
au lieu de le copier/coller partout sur ton site.
Le jour ou tu changes de BDD.. tu seras bon pour aller remodifier chacune de tes pages une par une !
Donc :
<?php
//connexion à la bdd 
// Fichier :  cnxbdd.php 
try{
  $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ' ');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}
?>

Puis dans ton code :
<?php
//activation de l'affichage des erreurs PHP ! (A mettre au début de chacune de tes pages !! )
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//connexion à la bdd 
require_once "cnxbdd.php";


//récupération PROPRE des variables AVANT de les utiliser
$searchq = !empty($_POST['search']) ? preg_replace ("#[^0-9a-z]#i","",$_POST['search']) : '';

 if(isset ($_POST['search'])){
   
   $sql = "SELECT * FROM utilisateurss  WHERE Prenom LIKE '%$searchq%' OR NOM LIKE '%$searchq%' ";
   
   //pour CHAQUE requête mettre un bloc TRY/CATCH !!
   try{
    $req = $bdd->prepare($sq);
    $req->execute();
    //$count = $req->rowCount(); //le row COUNT est à abolir pour les requêtes SELECT ! (voir la doc de pdo ! )
    // A la place :
    $resultat = $req->fetchAll();
    $count = count($resultat);
  } catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
  }   
 
 if($count == 0){
    echo 'Auncun résultat pour ' .$searchq;
 }else {
  
  foreach($resultat as $row){
     $Prenom = $row['Prenom'];
     $NOM = $row['NOM'];
     $id = $row['id'];
     $avatar = $row['avatar'];

     $output .= '<div class="utilisateurs">';
     $output .=  '<img src="/avatar/'.$avatar.'">';
     $output .=  '<span>'.$Prenom.' '.$NOM.'</span> ';
     $output .= '</div>';
  }
    // on affiche le HTML une fois la couble terminée !
    print ($output);
}




0
D'accord super. Je te remercie énormement pour ton aide. Je vais essayer tout cela et je te tien au courant
0
martin > Martin
22 févr. 2018 à 13:39
je te remercie super toute les informations que tu ma donné. mais par contre l'image ne s'affiche pas . il y a que le petit logo qui apparait mais pas l'image de profil en lui même
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
22 févr. 2018 à 14:05
Car le chemin vers ton image n'est pas bonne....
Peux tu nous coller le code source de ta page (issue de ton navigateur : CTRL + U )
0
martin > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
22 févr. 2018 à 15:17
C'est bon ça fonctionne merci. Je vous remercie. par contre, juste une petite précision pourquoi quand je fait une recherche je suis obliger de mettre soit le nom ou le prénom pour trouver la personne? je ne peux pas mettre le nom et prénom sinon ça dit aucun résultat
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > martin
22 févr. 2018 à 15:52
Tu fais une recherche sur deux champs séparés en BDD...
Si tu veux faire une recherche groupée... tu dois pouvoir faire :

 $sql = "SELECT * FROM utilisateurss 
 WHERE Prenom LIKE '%$searchq%' 
OR NOM LIKE '%$searchq%' 
OR concat(NOM,' ',Prenom) LIKE '%$searchq%' 
OR concat(Prenom,' ',NOM) LIKE '%$searchq%' ";
  
0