Barre de recherche php

jeanv8 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
salut la communauté des codeurs,
voici ma préoccupations

les resultats de existant dans la base de données ne s'affiche pas et il n'y a pas de message erreur de php

par contre, les resultats des requêtes inexistente affiche le message d'erreur "Aucun résultat trouvé pour ..."

besoin de votre aide

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Commence par poster ton code correctement sur le forum en utilisant les balises de code.
Explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Je t'invite également à appliquer les conseils donnés dans ce lien avant de poster ton code : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
0
jeanv8 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
pour ce qui concerne les image
l' image 1 est debut du code

l'image 2 est la suite

et voici mon fichier de "require '../dynamique/db.php en image
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jeanv8 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Je t'ai demandé de poster ton code en utilisant les balises de code.
Les images ne nous permettent pas te voir correctement ni de faire de copier-coller si besoin.
0
jeanv8 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
<?php
require_once '../dynamique/db.php';
require_once '../dynamique/functions.php';
logged_only();

$info = $pdo->query('SELECT * FROM users ORDER BY spécialité');
if(isset($_GET['searc']) AND !empty($_GET['searc'])){
$recherch = htmlspecialchars($_GET['searc']);
$info = $pdo->query('SELECT spécialité FROM users WHERE spécialité LIKE "%'.$recherch.'%" ORDER BY spécialité');
}
?>
<?php require 'header.php';?>
<div class="tableau">
<table class="tab">
<?php if($info->rowCount() > 0){ ?>
<thead>
<tr>
<th class="cater">Catégorie</th>
<th class="speci">Spécialité</th>
<th class="nop">Noms et prénom(s)</th>
<th class="vil">Ville</th>
<th class="clas">Classement</th>
<th class="voir">Voir profil</th>
</tr>
</thead>
<tbody> <?php while($user = $info->fetch()){?>
<tr>
<td> <? = $user['catégorie']; ?></td>
<td> <? = $user['spécialité']; ?></td>
<td> <? = $user['prenom']; ?> <? = $user['nom']; ?></td>
<td> <? = $user['domicile']; ?></td>
<td> <? = $user['contact']; ?></td>
<td> <? = $user; ?><a href="Voir profil"></a></td>
</tr>
</tbody>
</table>
<?php
}
}else{
?>
<p>Aucun résultat pour <?= $recherch ?></p>
<?php
}
?>
</div>
<br>
<?php
require 'footer.php';
?>


voici mon code
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bon, visiblement tu n'as pas été capable de lire le lien expliquant le fonctionnement des balises de code entièrement..... j'espère que tu y arriveras pour tes prochains messages.

Ensuite :
On ne met pas de caractères accentués dans le nom des champs d'une bdd ni dans le nom de variables php, javascript ...

La fonction htmlspecialchars ne s'utilise QUE pour de l'affichage.. et en aucun cas pour traiter les variables avant une requête SQL.

Tu n'as pas lu non plus le lien concernant l'activation des erreurs PDO...

Il faut aussi éviter la fonction query et passer exclusivement par les requêtes préprarées afin de limiter les failles d'injection sql

Il faut aussi éviter l'utilisation des shoort open tag car ils ne sont pas toujours actifs sur les serveurs. Il vaut mieux faire des echo.

En gros, ton code devrait ressembler désormais à ça :
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

require_once '../dynamique/db.php';
require_once '../dynamique/functions.php';
logged_only();


// récupération PROPRE des variables AVANT de les utiliser
$searc = !empty($_GET['searc']) ? trim($_GET['searc']) : NULL;
$datas = NULL;
//préparation de la requête

if($searc){
 $where =  " WHERE specialite LIKE :searc ";
 $datas = [':searc'=> "%" . $searc . "%"];
}
$sql = "SELECT * FROM users " . $where . " ORDER BY specialite ";

//Execution de la requete
// voir : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}

//on stocke le resultat dans un array
$info = $requete->fetchAll();


?>
<?php require 'header.php';?>
        <div class="tableau">   
            <table class="tab">
   <?php if($info->rowCount() > 0){ ?>
                <thead>
                    <tr>
                        <th class="cater">Catégorie</th>
                        <th class="speci">Spécialité</th>
                        <th class="nop">Noms et prénom(s)</th>
                        <th class="vil">Ville</th>
                        <th class="clas">Classement</th>
                        <th class="voir">Voir profil</th>
                    </tr>
                </thead>
                <tbody> 
                <?php 
                  foreach ($info  as $user ){
                ?>
                    <tr>
                        <td> <?php echo  $user['categorie']; ?></td>
                        <td> <?php echo  $user['specialite']; ?></td>
                        <td> <?php echo  $user['prenom']; ?> <?php echo  $user['nom']; ?></td>
                        <td> <?php echo  $user['domicile']; ?></td>
                        <td> <?php echo  $user['contact']; ?></td>
                        <td> <?php echo  $user; ?><a href="profil.php?id=<?php echo $user['id'];?>v">Voir profil</a></td>
                    </tr>
                </tbody>
            </table>
    <?php
   }
  }else{
   ?>
   <p>Aucun résultat pour <?php echo $recherch; ?></p>
   <?php
  }
 ?>
        </div>
  <br>
<?php
require 'footer.php';
?>


Ne pas oublier d'activer l'affichage des erreurs PDO dans la connexion à la bdd
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0