8792 sujets
ok alors mon moteur de recherche et le suivant :
pour la pagination :
<?php // recuperation des variabes pour la recherche
$_idCategorie=$_POST['idCategorie'];
$_nom=$_POST['nom'];
$_type=$_POST['type'];
$_auteur=$_POST['auteur'];
$_time=$_POST['time'];
$_prixMin=$_POST['prixMin'];
$_prixMax=$_POST['prixMax'];
$a = time();
$b = 259200;
$soustraction = $a-$b;
?>
<?php
if(isset($_POST['rech']) && $_POST['rech'] != NULL) // on vérifie d'abord l'existence du post et on vérifie aussi si la requete n'est pas vide.
{
mysql_connect('localhost','root','');
mysql_select_db('cssdesign'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter à votre site.
$requete = $_POST['idCategorie']; // pour éviter de faire de l'indentation (par fainéantisme [langue]), on créé une variable $requete pour faciliter l'écriture de la requete sql.
$query = "SELECT * FROM kit k ";
if(!empty($_idCategorie))$query.=" WHERE k.idCategorie='$_idCategorie'";
if(!empty($_nom))$query.=" AND k.nom LIKE '%$_nom%'";
if(!empty($_type))$query.=" AND k.type='$_type'";
if(!empty($_auteur))$query.=" AND k.auteur LIKE '%$_auteur%'";
if(!empty($_time))$query.=" AND k.timestamp >= '$soustraction'";
if(!empty($_prixMin))$query.=" AND k.prixFull>='$_prixMin'";
if(!empty($_prixMax))$query.=" AND k.prixFull<='$_prixMax'";
$query.=" ORDER BY idKit DESC";
print($query);
// la requête, que maintenant vous devez comprendre [cligne]
$query=mysql_query($query);
$nb_resultats = mysql_num_rows($query); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
// Limiter a 3 caractére
$taille = strlen($_REQUEST['rech']); //special pour cette page pour ne pas a avoir a utiliser les 3 caracteres
if($taille > 2) {
if($nb_resultats != 0) // si le nombre de résultats est supérieur à 0, on continue
{
// maintenant, on va afficher les résultats et la page qui donne les résultats et le nombre de résultats, avec un peu de code HTML pour faciliter la tâche.
?>
<p>Nous avons trouvé <? echo $nb_resultats; // on affiche le nombre de résultats
if($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement.
?>
pour votre requete . Voici les résultats : <br/>
<br/>
<?
while($donnees = mysql_fetch_array($query)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
{
?>
<div class="moteurav">
<div class="resultat">
<div class="imgav"><a href="kitcomplet.php?idKit=<? echo $donnees['idKit']; ?>"><img src="../kit/<?php echo $donnees['miniatureAV']; ?>" width="100" height="65" /></a></div>
<div class="lienav">
<a href="kitcomplet.php?idKit=<? echo $donnees['idKit']; ?>"><? echo $donnees['nom']; ?>
<br />
Auteur : <? echo $donnees['auteur']; ?>
</a>
</div>
<div class="clear"></div>
</div>
</div>
<?
} // fin des 3 caractére
} else {
?>
<p>Aucun résultats trouvé</p>
<p>Nous n'avons trouvé aucun résultats pour votre requête "<? echo $_POST['idCategorie']; ?>". <a href="rechercheav.php">Réessayez</a> avec autre chose.</p>
<?
}
} // fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
else
{ // de nouveau, un peu de HTML
?>
<p>/!\ Votre recherche " <? echo $_POST['idCategorie']; ?> " est trop courte (3 caractères minimum) /!\</p>
<p><a href="rechercheav.php">Faire une nouvelle recherche</a></p>
<?
}
// fini d'afficher l'erreur ^^
mysql_close(); // on ferme mysql, on n'en a plus besoin
}
else
{ // et voilà le formulaire, en HTML de nouveau !
?>
<p>Effectuer une recherche ( 3 caractères minimum ).</p>
<form action="rechercheav.php" method="post">
<p>
<input type='text' name='requete' size='15' maxlength='30' value='-- Recherche --' id="q" />
</p>
</form>
<?
}
// et voilà, c'est fini !
?>
pour la pagination :
<?php
$dbok = mysql_select_db('cssdesign', $idlink);
$limit_par_page = 4; // Modifiez ce nombre pour changer le nombre de news affichées par page
?>
<?php
if(isset($_GET['page'])) //Pour voir si la variable n'est pas déclaree
{
$page = $_GET['page']; //On la récupère
$page = $page - 1; // -1 car elle sert pour savoir a partir de quel enregistrement on commence la sélection
}
else
{
$page = 0;
}
?>
<?php
$from = $page * $limit_par_page; //1er enregistrement. ex : 1*10 = 10eme, 2*10 = 20eme
$sql = mysql_query("SELECT *
FROM kit k, categorie c WHERE c.idCategorie=k.idCategorie AND c.idCategorie=".$_GET['idCategorie']."
ORDER BY idKit DESC LIMIT $from,$limit_par_page")
//la requete ?>
<?php
while($donnees = mysql_fetch_array($sql)){
if($donnees['active'] == "Oui") {
echo'<div class="kitcomplet"><div class="nomkit">'.$donnees['nom'].'</div><a href="kitcomplet.php?idKit='.$donnees['idKit'].'"><img src="../kit/'.$donnees['miniature'].'" /></a></div>' ;
}
} // Fin de la boucle des news
?>
<?php
$sql2 = mysql_query("SELECT COUNT(*) AS nb_msg FROM kit k, categorie c WHERE c.idCategorie=k.idCategorie AND c.idCategorie=".$_GET['idCategorie']." ");
$donnees2 = mysql_fetch_array($sql2);
$nb_msg = $donnees2['nb_msg'];
?>
<?php
$nb_pages = ceil($nb_msg / $limit_par_page); //Le nombre de page = nombre de message divisé par la limite du nombre de messages par page
?>
<div id="page"> <b>Pages :</b>
<!-- Ouverture d'un paragraphe pour mettre "pages" devant les numéros -->
<?php
for($page=1 ; $page<=$nb_pages ; $page++)
{
?>
<?php echo'<a href="categorie.php?idCategorie='.$_GET['idCategorie'].''; ?>&page=<?php echo $page; ?>"><?php echo $page; ?></a>
<?php
}
?>
</div>
<!-- Fermeture du paragraphe pour mettre page devant les numéros -->
<?php
mysql_close();
?>
Bonjour,
j'avoue, ton pavé de code est un peu long, j'ai lu qu'en diagonale....
mais si j'ai bien compris, tu lance toute ta requête, et tu te sers ensuite de ton numéro de page pour afficher en paginant.
Une autre approche serait d'utiliser la clause LIMIT de ta requete (les bornes de limites etant donnees dans l'URL de ton lilen de pagination), qui te permet de ne selectionner qu'une partie des resultalt (et donc d'avoir un resutlat de requete plus court et plus facilement affichable vu que c sql qui fait le boulot
)
Il ne te restep lus qu'a afficher tes resultats
j'avoue, ton pavé de code est un peu long, j'ai lu qu'en diagonale....
mais si j'ai bien compris, tu lance toute ta requête, et tu te sers ensuite de ton numéro de page pour afficher en paginant.
Une autre approche serait d'utiliser la clause LIMIT de ta requete (les bornes de limites etant donnees dans l'URL de ton lilen de pagination), qui te permet de ne selectionner qu'une partie des resultalt (et donc d'avoir un resutlat de requete plus court et plus facilement affichable vu que c sql qui fait le boulot

Il ne te restep lus qu'a afficher tes resultats