IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Défaut dans (moteur de recherche avec affichage par page)! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Défaut dans (moteur de recherche avec affichage par page)!
    bonjour à tous,
    voilà, j'ai un petit moteur de recherche (fonctionnel) auquel j'ai greffé un affichage par page (fonctionnel si utilisé seul)...alors mon moteur cherche et trouve (heureusement) mais quand je clique sur la seconde page du (par page) rien ne s'affiche et j'ai une page blanche!!!
    question: d'où vient cet erreur? merci.
    voici le code...rassurez-vous il n'est pas long :-/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?PHP
     
    if(isset($_POST['mots']) && $_POST['mots'] != NULL){ // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
     
    	mysql_connect('host','root','pass');
      mysql_select_db('base'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
     
    $mots = htmlspecialchars($_POST['mots']); // on crée une variable $mots pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
     
    $req = mysql_query("SELECT * FROM moteur WHERE nom LIKE '%$mots%' ORDER BY code DESC") or die (mysql_error()); // la requête, que vous devez maintenant comprendre ;)
    $nbArt = mysql_num_rows($req); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
     
    if($nbArt != 0) // si le nombre de résultats est supérieur à 0, on continue
    {
    // maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>Nous avons trouvé <? echo $nbArt; // on affiche le nombre de résultats 
    if($nbArt > 1) { 
    	echo ' résultats '; 
    	} 
    	else { 
    		echo ' résultat'; 
    		} // on vérifie le nombre de résultats pour orthographier correctement. 
    ?>
    dans notre base de données. Voici les résultats que nous avons trouvées :<br/>
    <br/>
    <?
     
    affiche($nbArt,$mots);
     
    echo "<br><a href=\"rechercher.php\"><b>Faire une nouvelle recherche</b></a></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
    ?>
    <h3>Pas de résultats</h3>
    <p>Nous n'avons trouvé aucun résultat pour votre requête "<? echo $_POST['mots']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
    <?
    }// Fini d'afficher l'erreur ^^
    mysql_close(); // on ferme mysql, on n'en a plus besoin
    }
    ?>
     
    <p>Tapez une requête pour réaliser une recherche.</p>
     <form action="rechercher.php" method="Post">
    <input type="text" name="mots" size="10">
    <input type="submit" value="Ok">
    </form>
     
    <?
    function affiche($nombrearticle,$motClef){        
      $perPage=10;//nombre de pages
      $nbPage=ceil($nombrearticle/$perPage);//arrondir à la valeur supérieure  
     
      //vérifier si la variable 'p' existe ou non!
      if(isset($_GET['p'])&& $_GET['p'] > 0 && $_GET['p'] <= $nbPage){
      $cPage=$_GET['p'];
      }
      else {
      	$cPage=1;
      }
     
      $req=mysql_query ("SELECT * FROM moteur WHERE nom LIKE '%$motClef%' ORDER BY code DESC LIMIT ".(($cPage-1)*$perPage).",$perPage") or die (mysql_error());
     
      while($data=mysql_fetch_array($req)){
      echo "{$data['nom']}";
      echo $data['email']."<br>";
      echo $data['commentaire'];
      echo	"<hr>";
      } 
     
      //afficher les liens de page
      for($i=1;$i<=$nbPage;$i++){
      	if($i==$cPage){
      		echo " $i /";//lien inactif
      	}
      	else{
      	echo " <a href=\"rechercher.php?p=$i&mots=$motClef\">$i</a> / " ;
      	//c'est un lien actif
      }
      }
    }//fin function
    ?>
    et merci d'avance ;-)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
      	echo " <a href=\"rechercher.php?p=$i&mots=$motClef\">$i</a> / " ;
    p et mots se récupèrent avec $_GET...
    Qui plus est, il faudrait penser à utiliser urlencode() et urldecode() quand tu passes des chaines dans l'URL.

    Tu ne passes donc plus dans la condition :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['mots']) && $_POST['mots'] != NULL){
    D'où : page blanche.

    N.B. remplace PARTOUT : <?PHP ET <? par <?php !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci, je vais teste ta proposition :-)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    :-/ j'ai toujours le même PB...
    j'ai bien remplacé comme tu me l'as proposé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_GET['p']) && isset($_GET['motClef'])&& $_GET['p'] > 0 && $_GET['p'] <= $nbPage){
     
    $cPage=$_GET['p'];
    $motClef=$_GET['motClef'];
      }
    j'ai toujours la "page blanche"
    NB: ce bout de code est situé dans une fonction...
    y aurait-il une autre proposition? merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Normal, $_POST permet de récupérer les données... provenant du formulaire de recherche !
    $_GET récupère les infos dans l'URL quand on clique sur la pagination !

    Il faut dons envisager (et traiter) les deux cas.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    $recherche = false;
    if(!empty($_POST['mots'])){
    	$mots = mysql_real_escape_string($_POST['mots']);
    	$recherche = true;
    } elseif(!empty($_GET['mots'])){
    	$mots = mysql_real_escape_string(urldecode($_GET['mots']));
    	$recherche = true;
    }
    if($recherche == true)
    {
    	// on lance la recherche : requête, affichage,...
    	// .................
    	// Pagination ?
    	$page = (!empty($_GET['p']) && is_numeric($_GET['p']) && $_GET['p']>0)? $_GET['p'] : 1; // page 1 par défaut
    	// .................
    }
    + écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo " <a href=\"rechercher.php?p=".$i."&mots=".urlencode($motClef)."\">".$i."</a> / " ;

    N.B. remplacer htmlspecialchars() par mysql_real_escape_string() !
    Dernière modification par Invité ; 12/12/2013 à 22h57.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci, je teste encore...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    non! là je n'ai que la première page de correcte, par la suite je perds le POST le GET et je perds le mots carrément, et j'ai un total des éléments de la base...
    Bon si tu as encore le courage on continue juste un peu, sinon je reprendrais demain ( et dire qu'avec PHP3 tous mes moteurs de recherche fonctionnent à merveille, mais avec le PHP5, c'est la galère complète!!!)
    merci tout de même ;-)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Remontre ton code.
    Moi, j'ai mis $mots et $page. => [edit] j'ai édité mon précédent message/code !
    Toi, $motClef et $cPage !
    J'espère que tu as adapté (?)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    oui j'ai bien compris, "motclef" c'est la variable de fonction, mais quand j'appelle la fonction "affiche()", je la remplace par "mots", alors que "page" est une variable interne à la fonction...il n'y a pas de problème de ce côté (enfin je pense)...je vérifie encore

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Ok, je remets le code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
     
    $recherche = false;
    if(!empty($_POST['mots'])){
    	$mots = htmlspecialchars($_POST['mots']);
    	$recherche = true;
    	} 
    elseif(!empty($_GET['mots'])){
    	$mots = htmlspecialchars(urldecode($_POST['mots']));
    	$recherche = true;
    	}
    if(	$recherche == true){	
    	mysql_connect('host','root','pas');
      mysql_select_db('booraqdb'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
     
    //$mots = htmlspecialchars($_POST['mots']); // on crée une variable $mots pour faciliter l'écriture de la requête SQL, mais aussi pour empêcher les éventuels malins qui utiliseraient du PHP ou du JS, avec la fonction htmlspecialchars().
     
    $req = mysql_query("SELECT * FROM moteur WHERE nom LIKE '%".$mots."%' ORDER BY code DESC") or die (mysql_error()); // la requête, que vous devez maintenant comprendre ;)
    $nbArt = mysql_num_rows($req); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
     
    if($nbArt != 0){// si le nombre de résultats est supérieur à 0, on continue
    // maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>Nous avons trouvé <? echo $nbArt; // on affiche le nombre de résultats 
    if($nbArt > 1){ 
    	echo ' résultats '; 
    	} 
    	else { 
    		echo ' résultat'; 
    		} // on vérifie le nombre de résultats pour orthographier correctement. 
    ?>
    dans notre base de données. Voici les résultats que nous avons trouvées :<br/>
    <br/>
    <?
     
    affiche($nbArt,$mots);
     
    echo "<br><a href=\"rechercher.php\"><b>Faire une nouvelle recherche</b></a></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
    ?>
    <h3>Pas de résultats</h3>
    <p>Nous n'avons trouvé aucun résultat pour votre requête "<? echo $_POST['mots']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
    <?
    }// Fini d'afficher l'erreur ^^
    mysql_close(); // on ferme mysql, on n'en a plus besoin
    }
     
     
    ?>
     
    <p>Tapez une requête pour réaliser une recherche.</p>
     <form action="rechercher.php" method="Post">
    <input type="text" name="mots" size="10">
    <input type="submit" value="Ok">
    </form>
     
    <?
    function affiche($nombrearticle,$motClef){        
      $perPage=10;//nombre de pages
      $nbPage=ceil($nombrearticle/$perPage);//arrondir à la valeur supérieure  
     
      //vérifier si la variable 'p' existe ou non!
      if(isset($_GET['p']) && isset($_GET['motClef'])&& $_GET['p'] > 0 && $_GET['p'] <= $nbPage){
      $cPage=$_GET['p'];
      $motClef=$_GET['motClef'];
      }
      else {
      	$cPage=1;
      }
     
      $req=mysql_query ("SELECT * FROM moteur WHERE nom LIKE '%".urlencode($motClef)."%' ORDER BY code DESC LIMIT ".(($cPage-1)*$perPage).",$perPage") or die (mysql_error());
     
      while($data=mysql_fetch_array($req)){
      echo htmlspecialchars($data['nom']);
      echo htmlspecialchars($data['email'])."<br>";
      echo htmlspecialchars($data['commentaire']);
      echo	"<hr>";
      } 
     
      //afficher les liens de page
      for($i=1;$i<=$nbPage;$i++){
      	if($i==$cPage){
      		echo " $i /";//lien inactif
      	}
      	else{
      	echo " <a href=\"rechercher.php?p=$i&mots=$motClef\">$i</a> / ";
      	//c'est un lien actif
      }
      }
    }//fin function
    ?>
    j'avoue qu'avec la fatigue, je ne sais plus où j'habite :-/
    merci de ton aide.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elseif(!empty($_GET['mots'])){
    	$mots = mysql_real_escape_string(urldecode($_GET['mots']));
    $_GET ici + mysql_real_escape_string (j'ai édité mon autre message : relis-le !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $req=mysql_query ("SELECT * FROM moteur WHERE nom LIKE '%".urlencode($motClef) ..........
    Ce n'est pas là qu'il faut mettre urlencode !

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    ok je remplace et je teste (lol)

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    hélas toujours pareils, bon on arrête la galère! est ce que tu connais un lien où je peux avoir un moteur de recherche tout fait et (qui fonctionne!) je crois que c'est le mieux parce que moi je jette l'éponge :-/

  14. #14
    Invité
    Invité(e)
    Par défaut
    à copier tel quel (sauf erreur !) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    // Récupération
    $recherche = false;
    if(!empty($_POST['mots'])){
    	$mots = $_POST['mots'];
    	$recherche = true;
    	} 
    elseif(!empty($_GET['mots'])){
    	$mots = urldecode($_GET['mots']);
    	$recherche = true;
    	}
    // Traitement de la recherche ?
    if(	$recherche == true)
    {	
    	// connexion
    	include('connexion.php'); // fichier de connexion externe
     
    	// requête : TOUS les résultats
    	$req = mysql_query("SELECT * FROM moteur WHERE nom LIKE '%".mysql_real_escape_string($mots)."%' ORDER BY code DESC") or die (mysql_error()); // la requête, que vous devez maintenant comprendre ;)
    	$nbArt = mysql_num_rows($req); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
    	if($nbArt >= 0)	// si le nombre de résultats est supérieur à 0, on continue
    	{
    		// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>Nous avons trouvé <?php echo $nbArt; echo ($nbArt > 1)? ' résultats ' : ' résultat '; ?> dans notre base de données.<br/>
    Voici les résultats que nous avons trouvées :<br/>
    <br/>
    <?php
    		include('fonctions.php'); // fichier de fonctions externe
    		affiche_resultat_page($nbArt,$mots,$page);
    		echo "<br><a href=\"rechercher.php\"><b>Faire une nouvelle recherche</b></a></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
    ?>
    <h3>Pas de résultats</h3>
    <p>Nous n'avons trouvé aucun résultat pour votre requête "<?php echo $_POST['mots']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
    <?php
    	}// Fini d'afficher l'erreur
    	mysql_close(); // on ferme mysql, on n'en a plus besoin
    }
     
    ?>
     
    <p>Tapez une requête pour réaliser une recherche.</p>
     <form action="rechercher.php" method="Post">
    <input type="text" name="mots" size="10">
    <input type="submit" value="Ok">
    </form>
    Remarque(s) :
    Normalement, on met le script de connexion dans un fichier externe :
    connexion.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	// connexion à la BdD
    	mysql_connect('mysql51-95.perso','booraqdb','pegazus1');
    	mysql_select_db('booraqdb'); // on se connecte à MySQL. Je vous laisse remplacer les différentes informations pour adapter ce code à votre site.
    ?>
    puis on l'inclut dans la page :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include('connexion.php'); ?>

    Idem pour les fonctions (-> dans un fichier externe) + ne pas oublier la connexion à la BdD DANS la fonction.
    fonctions.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    // -------------------------------------------------------------
    function affiche_resultat_page($nombrearticle,$motClef,$numPage)
    {        
    	$perPage=10;//nombre de pages
    	$nbPage=ceil($nombrearticle/$perPage);//arrondir à la valeur supérieure  
     
    	// numéro de page
    	$cPage = (isset($numPage) && is_numeric($numPage)) ? $numPage : 1; // page 1 par défaut
     
    	// connexion
    	include('connexion.php'); // fichier de connexion externe
     
    	$req=mysql_query ("SELECT * FROM moteur WHERE nom LIKE '%".mysql_real_escape_string($motClef)."%' ORDER BY code DESC LIMIT ".(($cPage-1)*$perPage).",".$perPage."") or die (mysql_error());
     
      while($data=mysql_fetch_array($req)){
    	  echo htmlspecialchars($data['nom']);
    	  echo htmlspecialchars($data['email'])."<br>";
    	  echo htmlspecialchars($data['commentaire']);
    	  echo "<hr>";
      } 
     
      // PAGINATION : afficher les liens de page
      for($i=1;$i<=$nbPage;$i++){
      	if($i==$cPage){
      		echo " ".$i." /"; //lien inactif
      	} else {
    		echo " <a href=\"rechercher.php?p=".$i."&mots=".urlencode($motClef)."\">".$i."</a> / "; // lien actif
      }
      }
    } //fin function
    // -------------------------------------------------------------
    ?>

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    MERCI, c'est un peu mieux mais je n'arrive pas à naviguer, les liens sont toujours figés à la même page (1) et pourtant ça affiche bien ceci...quand je clique sur la page (3)

    http://www.booraq.net/Recherche/rech...?p=3&mots=foot

    peut-être qu'on est prêt de la solution :-/

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    la page est toujours figée!
    est-ce que tu peux vérifier avec moi si ça vient de cette partie du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for($i=1;$i<=$nbPage;$i++){
      	if($i==$cPage){
      		echo " ".$i." /"; //lien inactif
      	} else {
    		echo " <a href=\"rechercher.php?p=".$i."&mots=".urlencode($motClef)."\">".$i."</a> / "; // lien actif
      }
      }
    le "p" n'a plus rien avoir ici, je le remplace avec quoi comme variable?

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    j'ai bien crée les fichiers connection.php, fonctions.php, tu avais raison le code est maintenant plus clair et plus structuré, reste à trouver la dernière gaffe!

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Ouf, ça tourne! d'abord je remercie beaucoup jreaux62 de m'avoir beaucoup aidé jusqu'à une heure tardive du soir, ce matin j'ai rajouté quelques corrections, et enfin ça marche à merveille!
    je poste le code qui pourrait servir à certains (j'en suis sûr).

    Moteur de recherche en php&mysql avec Pagination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?php
    // Récupération
    $recherche = false;
    if(!empty($_POST['mots'])){
    	$mots = $_POST['mots'];
    	$recherche = true;
    	} 
    elseif(!empty($_GET['mots'])){
    	$mots = urldecode($_GET['mots']);
    	$recherche = true;
    	}
    // Traitement de la recherche ?
    if(	$recherche == true)
    {	
    	// connexion
    	include('connection.php'); // fichier de connexion externe
     
    	// requête : TOUS les résultats
    	$req = mysql_query("SELECT * FROM moteur WHERE nom LIKE '%".mysql_real_escape_string($mots)."%' ORDER BY code DESC") or die (mysql_error()); // la requête, que vous devez maintenant comprendre ;)
    	$nbArt = mysql_num_rows($req); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
    	if($nbArt >= 0)	// si le nombre de résultats est supérieur à 0, on continue
    	{
    		// maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>Nous avons trouvé <?php echo $nbArt; echo ($nbArt > 1)? ' résultats ' : ' résultat '; ?> dans notre base de données.<br/>
    Voici les résultats que nous avons trouvées :<br/>
    <br/>
     
    <?php
    //PAGINATION
    //*---------------------------------------------------------------------------------------------------------------------------------------*/
    	$perPage=6;//nombre de pages
      $nbPage=ceil($nbArt/$perPage);//arrondir à la valeur supérieure  
     
      //vérifier si la variable 'p' existe ou non!
      if(isset($_GET['p'])&& $_GET['p'] > 0 && $_GET['p'] <= $nbPage){
      $cPage=$_GET['p'];
      }
      else {
      	$cPage=1;
      }
     
      $sql="SELECT * FROM moteur WHERE nom LIKE '%".mysql_real_escape_string($mots)."%' ORDER BY code DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
      $req=mysql_query ($sql)or die (mysql_error());
     
      while($data=mysql_fetch_array($req)){
      echo $data['nom'];
      echo $data['email']."<br>";
      echo $data['commentaire'];
      echo	"<hr>";
      } 
     
      //afficher les liens de page
      for($i=1;$i<=$nbPage;$i++){
      	if($i==$cPage){
      		echo " $i /";//lien inactif
      	}
      	else{
      	echo " <a href=\"rechercher.php?p=".$i."&mots=".urlencode($mots)."\">".$i."</a> / "; // lien actif
      	//c'est un lien actif
      }
    }
    /*----------------------------------------------------------------------------------------------------------------------------------------*/		
    		echo "<br><a href=\"rechercher.php\"><b>Faire une nouvelle recherche</b></a></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
    ?>
    <h3>Pas de résultats</h3>
    <p>Nous n'avons trouvé aucun résultat pour votre requête "<?php echo $_POST['mots']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
    <?php
    	}// Fini d'afficher l'erreur
    	mysql_close(); // on ferme mysql, on n'en a plus besoin
    }
     
    ?>
     
    <p>Tapez une requête pour réaliser une recherche.</p>
     <form action="rechercher.php" method="Post">
    <input type="text" name="mots" size="10">
    <input type="submit" value="Ok">
    </form>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Moteur de recherche avec page par page
    Par dancom5 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/06/2011, 17h35
  2. Moteur de recherche avec Excel dans des onglets ?
    Par jufabref dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2008, 14h51
  3. Réponses: 4
    Dernier message: 21/11/2007, 23h27
  4. Moteur de recherche, affichage par page et url rewriting
    Par paupiette dans le forum Langage
    Réponses: 5
    Dernier message: 22/06/2007, 11h45
  5. [SQL] Moteur de recherche problème affichage donnée dans select
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 07/04/2006, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo