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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    Membre averti
    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
    Par défaut
    Merci, je vais teste ta proposition :-)

  4. #4
    Membre averti
    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
    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 à 21h57.

  6. #6
    Membre averti
    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
    Par défaut
    Merci, je teste encore...

+ 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, 16h35
  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, 13h51
  3. Réponses: 4
    Dernier message: 21/11/2007, 22h27
  4. Moteur de recherche, affichage par page et url rewriting
    Par paupiette dans le forum Langage
    Réponses: 5
    Dernier message: 22/06/2007, 10h45
  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, 20h27

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