Barre de recherche php
Fermé
jeanv8
Messages postés
3
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mai 2021
-
29 mai 2021 à 03:29
jordane45 Messages postés 38269 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 novembre 2024 - 29 mai 2021 à 13:50
jordane45 Messages postés 38269 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 novembre 2024 - 29 mai 2021 à 13:50
A voir également:
- Barre de recherche ajax
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Windows 11 barre des taches a gauche - Guide
- Égal barré ✓ - Forum Word
- Barre verticale mac - Forum MacOS
- Recherche adresse - Guide
3 réponses
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
29 mai 2021 à 03:32
29 mai 2021 à 03:32
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
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
jeanv8
Messages postés
3
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mai 2021
29 mai 2021 à 13:36
29 mai 2021 à 13:36
<?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
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
Modifié le 29 mai 2021 à 13:51
Modifié le 29 mai 2021 à 13:51
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 :
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
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
29 mai 2021 à 03:39
l' image 1 est debut du code
l'image 2 est la suite
et voici mon fichier de "require '../dynamique/db.php en image
29 mai 2021 à 10:37
Les images ne nous permettent pas te voir correctement ni de faire de copier-coller si besoin.