recherche sans rafraichir
Posté : 05 avr. 2019, 19:17
bonsoir je suis new sur le forum.
svp j ai une bare de recherche dans mon site alors j aimerais que lorque l utilisateur effectue une recherche la page ne puisse pas ce rafraichir et afficher les resultat avec un message d attente si php dure avant d afficher.merci ibien a vous.
svp j ai une bare de recherche dans mon site alors j aimerais que lorque l utilisateur effectue une recherche la page ne puisse pas ce rafraichir et afficher les resultat avec un message d attente si php dure avant d afficher.merci ibien a vous.
<form id="searchForm" name="moteurSubmit" method="GET" action="">
<center>
<img src="images/logo.png" alt="logo_entreprise" class="logo_entreprise">
<div class="hauteur">
<input type="text" value="<?php if(isset($_GET['q'])) { echo htmlspecialchars($_GET['q']); } ?>" name="q" id="moteur" placeholder="ex : communication, assurance, banque..."/>
<button type="submit" class="btn btn-primary"><i class="fas fa-search"></i> recherche</button>
</div>
</center>
</form>
<?php
include_once("class.inc/BDD-PHP5.5.class-inc.php"); // Class PHP 5.5 (avec mysqli)
include_once("class.inc/stopwords.php");
include_once("class.inc/moteur-php5.5.class-inc.php"); // Class PHP 5.5
//
// $link se trouve dans BDD.class-inc.php, il s'agit de la variable de connexion
// Attention, elle doit absolument être utilisée (sous ce nom ou un autre) en PHP 5.5 ou supérieur
// N.B. : elle s'ajoute en début d'appel des class moteurRecherche($link...), autoCompletion($link...) et alterTableFullText($link...)
//
// Lancement de la fonction d'activation de l'autocomplétion (après la connexion !)
// $autocompletion = new autoCompletion("CHEMIN/autocompletion.php", "ID_INPUT_RECHERCHE", "NOM_DE_LA_TABLE", "NOM_DE_LA_COLONNE");
// Les autres paramètres sont détaillés dans la class PHP du moteur
$autocompletion = new autoCompletion($link, "class.inc/autocompletion/autocompletion-PHP5.5.php", "#moteur", "autosuggest", "words", true, 5, 0, false, true);
if(isset($_GET) && !empty($_GET['q'])) {
$moteur = new moteurRecherche($link, stripslashes($_GET['q']), 'Seach11search', 'regexp', $stopwords);
$colonnesWhere = array('nom_entreprise', 'mot_cle');
$moteur->moteurRequetes($colonnesWhere);
}
if(isset($moteur)) {
// Affichage de la requête avec $moteur->requete
// Création de la table des mots corrects
if($moteur->isIndex("correctindex", "table_search") == false) {
// Créé l'index correct
$moteur->createIndex();
}
// Tableau des mots puis ajout dans la table
$motsCorrects = array("communication", "genie civil", "batiment", "assurance", "audit");
$moteur->setIndex($motsCorrects);
// Affichage de la correction des résultats
$corrections = $moteur->getCorrection();
$moteur->getCorrectedResults();
if(!empty($corrections)) {
echo "<p>Tentez avec une autre orthographe : ".$corrections."</p>\n";
}
// Fonction d'affichage des résultats (callback appelé ensuite)
function display($requete, $nbResults, $mots) {
if($nbResults == 0) { // Si aucun résultat n'est retourné
echo '
<div class="alert alert-success" role="alert">
<h3> Désolé aucune entreprise dans ce domaine est referencé.<br>
Aucun résultat, voici les raisons :
<br>Mot clé mal orthorgraphie<br>
aucune entreprise referencé dans ce domaine<br>
Pour pallier à cela veillez :<br>
Bien orthographier le mot clé ou le nom de l entreprise<br>
Essayer avec un autre mot clé<br>
exemple de mot clé : communication, conseil,assurance, etc...<br></h3>
<img src="images/oup.png" alt="image_oups" />
</div>
';
} else { // Sinon on affiche les résultats en boucle
// Affichage du nombre de résultats (optionnel)
$affichageResultats = new affichageResultats();
echo '
<center>
<div class="alert alert-warning alert-dismissible fade show" role="alert" id="affzo">
<strong>'.$affichageResultats->nbResultats().'</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
</center>
';
// Instanciation des ID (et du numéro de résultat si besoin)
$nb = 0;
// Comptage dynamique du nombre de résultats
if(isset($_GET['p'])) {
// $nb = 0 + (limite * (numéro de page - 1))
$nb = $nb + (10 * ($_GET['p'] - 1));
}
while(($key = mysqli_fetch_assoc($requete))) {
$nb++; // Incrémentation de l'ID
// On encode chaque clé/valeur de résultats en UTF-8
foreach($key as $k => $v) {
}
// Résultats de recherche à afficher (à personnaliser
$texte = "<div class='results' id='".$nb."'>\n";
$texte .='<br />
<center>
<div class="card card-nav-tabs" style="width:80%">
<h5 class="card-header card-header-info">
<a href="result.php?id='.$key['id'].' " class="co">'.$key['nom_entreprise'].'
</a>
</h5>
<div class="card-body">
<p class="card-text" style=" text-align: justify; ">
'.$key['description'].'
</p>
</div>
</div>
</center>
';
// Affichage du contenu après surlignage des mots recherchés
// N.B. : optionnel --> possibilité de remplacer par echo $texte;
$surlignage = new surlignageMot($mots, $texte);
echo $surlignage->contenu;
} // Fin de la boucle while
}
} // Fin de la fonction display (callback)
// Nombre de résultats par "tranche d'affichage"
$limit = 10;
// Numéro de page récupéré dynamiquement
if(isset($_GET['p'])) {
$page = htmlspecialchars($_GET['p']);
} else {
$page = 0;
}
// Lancement de la fonction d'affichage avec paramètres
$moteur->moteurAffichage('display', '', array(true, $page, $limit, true));
// Ajout de la fonction de pagination
// N.B. : le second paramètre correspond au "name" de $_GET['p']
$moteur->moteurPagination($page, 'p');
// Fonction d'ajout automatique des mots recherchés dans un index de mots-clés (colonne 'autosuggest' ici)
// N.B. : cette méthode est optionnelle si vous possédez déjà une table avec des mots-clés..
}
?>
</div>
</div>
</div>
</body>
</html>