Barre de recherche avec Ajax
Posté : 15 juil. 2021, 00:14
Bonjour,
j'essaie de faire une barre de recherche avec ajax. Je n'arrive pas à faire fonctionner mon système de pagination. Je poste mon code au cas où quelqu'un saurait m'aider à l'améliorer :
j'ai deux fichiers .php : search-ajax.php avec l'input et gethint.php qui sélectionne les données dans la bdd avec PDO et affiche avec une boucle.
L'idée est d'afficher une liste de patients.
Désolé le code est probablement brouillon à ce stade, il s'agit d'un grand chantier, fait à l'aide de tutos :
et le deuxième fichier :
Merci pour votre aide,
bonne journée
j'essaie de faire une barre de recherche avec ajax. Je n'arrive pas à faire fonctionner mon système de pagination. Je poste mon code au cas où quelqu'un saurait m'aider à l'améliorer :
j'ai deux fichiers .php : search-ajax.php avec l'input et gethint.php qui sélectionne les données dans la bdd avec PDO et affiche avec une boucle.
L'idée est d'afficher une liste de patients.
Désolé le code est probablement brouillon à ce stade, il s'agit d'un grand chantier, fait à l'aide de tutos :
Code : Tout sélectionner
<html>
<head>
<link href="styles.css" rel="stylesheet">
<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "gethint.php?q=" + str + "&page=", true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<?php
var_dump($a);
?>
<p><b>Start typing a firstname in the input field below:</b></p>
<form action="">
<label for="fname">First name:</label>
<input type="text" id="fname" name="fname" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>Code : Tout sélectionner
<?php
//determiner sur quelle page on se trouve
if (isset($_GET['page']) && !empty($_GET['page'])) {
$currentPage = (int) strip_tags($_GET['page']);
} else {
$currentPage = 1;
}
?>
<?php
include 'dbconnect.php';
?>
<?php
// get the q parameter from URL
$q = $_REQUEST["q"];
$hint = "";
$bdd = new PDO("mysql:host=$servername;dbname=hospitalE2N", $username, $password);
$patients = $bdd->query('SELECT * FROM patients ORDER BY id DESC');
//determiner le nbre de patients par page
$parPage = 2;
$premier = ($currentPage * $parPage) - $parPage;
//determiner nbre total de patients
$sqlPagin = 'SELECT COUNT(*) AS nb_patients FROM `patients`;';
//préparer requete
$queryPagin = $bdd->prepare($sqlPagin);
//executer
$queryPagin->execute();
//recup nombre de patients
$resultPagin = $queryPagin->fetch();
$nbPatients = (int) $resultPagin['nb_patients'];
//calcul du nbre de pages total
$pages = ceil($nbPatients / $parPage);
$_GET['pages'] = $pages;
echo "get".$_GET['page'].$currentPage;
echo "<br />nbre de pages : ".$pages;
if(isset($_GET['q'])) {
$q = htmlspecialchars($_GET['q']);
//calcul premier patient de la page
$patients = $bdd->query('SELECT * FROM patients WHERE firstname LIKE "%'.$q.'%" ORDER BY id DESC LIMIT '.$premier.', '.$parPage.'');
}
?>
<?php
$hint = $patients->fetchAll();
// Output "no suggestion" if no hint was found or output correct values
var_dump($hint);
foreach($hint as $row) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td><td><a href='profil-patient.php?id=".$row["id"]."'>"."Voir le profil"."</a><form action='deletePatient.php?id=".$row["id"]."' method='post'><input type='submit' value='delete patient'></form></td></tr>";
}
echo $hint === "" ? "no suggestion" : $hint;
echo "<nav>
<ul class='pagination'>
<li class='page-item'";?> <?= ($currentPage == 1) ? 'disabled' : '' ?><?php echo"'>
<a href='' class='page-link'>Precedent</a>
</li>";?>
<?php for($page = 1; $page<$_GET['pages']; $page++): ?>
<?php
echo "<li class='page-item";?> <?= ($currentPage == $page) ? 'active' : '' ?><?php echo "'>
<a href='./search-ajax.php?page=";?><?=$page?><?php echo "' class='page-link'>";?><?= $page ?><?php echo "</a>
</li>";
?>
<?php endfor ?>
<?php echo
"<li class='page-item";?> <?= ($currentPage == $pages) ? 'disabled' : '' ?><?php echo "'>
<a href='' class='page-link'>Suivant</a>
</li>
</ul>
</nav>";?>Merci pour votre aide,
bonne journée