Erreur dans code php pour search bar dynamique

Fermé
Galgu Messages postés 4 Date d'inscription mercredi 13 mai 2020 Statut Membre Dernière intervention 13 mai 2020 - Modifié le 13 mai 2020 à 14:22
Galgu Messages postés 4 Date d'inscription mercredi 13 mai 2020 Statut Membre Dernière intervention 13 mai 2020 - 13 mai 2020 à 16:43
Bonjour a tous,

J'ai de l'expérience dans la programmation de mon domaine, mais je débute completement en programmation web. J'ai réussi a configurer une DB MYSQL simple et je voulais interagir avec de manière dynamique pour mon site web. J'ai suivi un tutoriel pour une search bar dynamique via AJAX ici : https://www.cloudways.com/blog/live-search-php-mysql-ajax/


Mon problème avec ce code est clair : Lorsque je rentre du texte dans la search bar, au lieu de me sortir le/les nom/s de ma DB, il m'affiche (en dessous de la search bar) une partie du code:

'; //Fetching result from database. 
while ($Result = MySQLi_fetch_array($ExecQuery)) { ?>

")'>


Le problème semble situé dans le fichier ajax.php du lien ci-joint, après le echo, mais je n'arrive vraiment pas a trouver l'erreur. Dans la console du navigateur il n'y a aucune erreur, et j'ai personnellement testé ma requête SQL avec l'utilisateur pour valider qu'elle est correcte.

Sauriez-vous me dire ce qui cloche ?

Voici le code :

<?php

//Including Database configuration file.

include "db.php";

//Getting value of "search" variable from "script.js".

if (isset($_POST['search'])) {

//Search box value assigning to $Name variable.

   $Name = $_POST['search'];

//Search query.

   $Query = "SELECT Name FROM search WHERE Name LIKE '%$Name%' LIMIT 5";

//Query execution

   $ExecQuery = MySQLi_query($con, $Query);

//Creating unordered list to display result.

   echo '

<ul>

   ';

   //Fetching result from database.

   while ($Result = MySQLi_fetch_array($ExecQuery)) {

       ?>

   <!-- Creating unordered list items.

        Calling javascript function named as "fill" found in "script.js" file.

        By passing fetched result as parameter. -->

   <li onclick='fill("<?php echo $Result['Name']; ?>")'>

   <a>

   <!-- Assigning searched result in "Search box" in "search.php" file. -->

       <?php echo $Result['Name']; ?>

   </li></a>

   <!-- Below php code is just for closing parenthesis. Don't be confused. -->

   <?php

}}


?>

</ul>



EDIT : Correction des balises de code (ajout du LANGAGE)

Merci d'avance,
A voir également:

4 réponses

jordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 4 727
13 mai 2020 à 14:23
Avec quelle URL ouvres tu la page dans ton navigateur ?
As tu bien installé apache/php ? (comme sur le tuto, xampp ? )

0
Galgu Messages postés 4 Date d'inscription mercredi 13 mai 2020 Statut Membre Dernière intervention 13 mai 2020
13 mai 2020 à 14:42
la page s'ouvre correctement, la search bar s'affiche comme prévu, j'ai pas suivi le tuto pour l'installation car je travaille sur mon Centos 8 l'url est http://127.0.0.1/search.php

Merci pour le format du post par contre mon premier output ce n'est pas du code tel quel c'est ce qui s'affiche dynamiquement (apparait/disparait s'il y a du texte/pas de texte) lorsque je tente d'écrire dans ma search bar.

j'ai l'impression qu'il manque une fermeture quelquepart et qu'il affiche le code au lieu de l'exécuter mais je ne comprends pas ou est l'erreur
0
jordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 4 727
13 mai 2020 à 14:48
Si tu ouvres la console de ton navigateur ( je te recommande d'utiliser FireFox pour le coup..)
tu y actives le debugage XHR si ce n'est pas déjà fait,
Tu fais une recherche dans ta barre
Tu regardes ce que retourne ton ajax dans la console.
0
Galgu Messages postés 4 Date d'inscription mercredi 13 mai 2020 Statut Membre Dernière intervention 13 mai 2020
Modifié le 13 mai 2020 à 15:08
Tout d'abord merci de prendre le temps de voir le probleme avec moi !

J'ai essayé avec la console XHR, je vois que le POST se fait correctement (200) avec parameters search: "test" (disons que j'ai tapé test). Dans la tab réponse, j'ai la même chose que ce qui s'affiche :
----------------------------------------------
'; //Fetching result from database. while ($Result = MySQLi_fetch_array($ExecQuery)) { ?>

")'>
----------------------------------------------
0
jordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 4 727
13 mai 2020 à 15:20
ok, donc en effet, c'est bien au niveau du script php qu'il y a un souci.
Déjà, il faudrait que tu vérifies que le fichier est bien encondé en utf8 sans bom ( il peut y avoir des caractères invisibles qui posent problèmes...)
Voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

N'hésites pas à recopier le contenu de ton script dans un autre fichier et supprime l'ancien.

Après... en ajax on évite de retourner directement du html...
A la place, on retournera les données brut ( au format json ) et c'est le javascript qui se chargera de créer les ul / li ...

Voici quelques exemples :
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery

.
0
Galgu Messages postés 4 Date d'inscription mercredi 13 mai 2020 Statut Membre Dernière intervention 13 mai 2020
13 mai 2020 à 16:43
J'ai essayé de repasser avec UTF-8 sans changement. Je vais aller lire avec attention ton lien.

par contre j'ai noté que quand je click n'importe ou dans ma fenêtre après avoir tapé du texte dans la search bar j'ai une erreur dans la console :

SyntaxError: "" string literal contains an unescaped line break

peut-être qu'il apprécie mal les ' et " ?
0