recherche sans rafraichir

Petit nouveau ! | 1 Messages

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.

    
<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">&times;</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>

Eléphant du PHP | 385 Messages

08 avr. 2019, 16:43

Salut,

Tu peux enlever le type submit sur ton bouton, qui envoie une requête post et redirige ou rafraîchi selon ton url. Tu m'est un listener sur ce bouton, alors tu pourras faire une requête ajax et récupérer tes données sans rafraichir.
Utilise fetch https://developer.mozilla.org/fr/docs/A ... ching_data