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 :

mettre le formulaire et les resultats d'un moteur de recherche sur la meme page


Sujet :

PHP & Base de données

  1. #1
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut mettre le formulaire et les resultats d'un moteur de recherche sur la meme page
    cc,
    je vient de réaliser un moteur de recherche avec une liste déroulante dans un formulaire (index.php) et le résultat s'affiche dans search.php;
    Je souhaiterai que la recherche et le résultat soient sur la meme page .
    Comment dois je procéder? Que me conseillez vous?
    Merci

    index.php
    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
     
     
     <?php
     $serveur='localhost';
     $user='root';
     $motdepasse=''; 
     $bdd='moteur';
     $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
     mysql_select_db($bdd);
     
    ?> 
     
     
    <!DOCTYPE html>
    <html lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    <head>
      <title></title>
    </head>
    <body>
      <div id="content">
     
        <form action="index.php" method="post">
     
          <label for="search">Rechercher :</label>
     
     
    <select name="search" >
     
    <?php
     
    $result = mysql_query("SELECT titre FROM moteur");
    while ($row = mysql_fetch_array($result))
    {
     
    echo '<option value="'.$row["titre"].'">'.$row["titre"].'</option>';
     
    }
     
    ?>
     
          <input type="submit" value="Rechercher" />
     
        </form>
    </body>
    </html>
    search.php

    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
     
     
    <?php
     
    if(empty($_POST) || empty($_POST['search']))
    {
      header('Location: index.php');
    }
    else
    {
      extract($_POST);
    }
     
     
     
    ?>
     
    <!DOCTYPE html>
    <html lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    <head>
      <title></title>
    </head>
    <body>
      <div id="content">
        <h3>Resultat pour <strong><?php echo $search;?></strong> :</h3>
     
        <?php
     
        try{
        $bdd = new PDO('mysql:host=localhost;dbname=moteur', 'root', '') or die(print_r($bdd->errorInfo()));
        $bdd->exec('SET NAMES utf8');
        }
     
        catch(Exeption $e){
        die('Erreur:'.$e->getMessage());
        }
     
        $req = $bdd->query("SELECT * FROM moteur WHERE titre LIKE '%$search%' OR contenu LIKE '%$search%' ORDER BY id");
        if($req->rowCount()>0)
        {
          while($data = $req->fetch(PDO::FETCH_OBJ))
          {
            echo '<h2>'.$data->titre.'</h2>';
            echo '<p>'.$data->contenu.'</p>';
          }
        }
        else
        {
          echo '<h2>Aucun resultat</h2>';
        }
     
     
        ?>
     
     
        <br />
        <br />
        <p><a href="index.php">Accueil</a></p>
     
      </div>
    </body>
    </html>

  2. #2
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Tu dois juste rediriger le formulaire vers la page index.php (c'est déjà le cas dans le code que tu nous à présenté!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <!-- Code -->
    <form action="index.php" method="post">
    <!-- Code -->
    Et ton test sur l'existence du $_POST et à faire dans cette page. Incluant ou non ton formulaire de recherche!

    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
     
    <?php
      $serveur='localhost';
      $user='root';
      $motdepasse=''; 
      $bdd='moteur';
      $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
      mysql_select_db($bdd);
    ?>
     
    <!DOCTYPE html>
    <html lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    <head>
      <title></title>
    </head>
    <body>
      <div id="content">
        <form action="index.php" method="post">
          <label for="search">Rechercher :</label>
          <select name="search" >
          <?php
          $result = mysql_query("SELECT titre FROM moteur");
          while ($row = mysql_fetch_array($result)) {
            echo '<option value="'.$row["titre"].'">'.$row["titre"].'</option>';
          }
          ?>
          <input type="submit" value="Rechercher" />
        </form>
     
    <?php
    if(!empty($_POST) && !empty($_POST['search']))
      extract($_POST);
      // Tu affiche tes résultats
    }
    ?>
     
    </body>
    </html>

  3. #3
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    voila ce que j'ai fais mais cela ne fonctionne pas .

    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
     
    <?php
     $serveur='localhost';
     $user='root';
     $motdepasse=''; 
     $bdd='moteur';
     $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
     mysql_select_db($bdd);
     
    ?> 
     
    <!DOCTYPE html>
    <html lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    <head>
      <title></title>
    </head>
    <body>
      <div id="content">
     
        <form action="index.php" method="post">
     
          <label for="search">Rechercher :</label>
     
     
    <select name="search" >
     
    <?php
     
    $result = mysql_query("SELECT titre FROM moteur");
    while ($row = mysql_fetch_array($result))
    {
     
    echo '<option value="'.$row["titre"].'">'.$row["titre"].'</option>';
     
    }
     
    ?>
     
          <input type="submit" value="Rechercher" />
     
        </form>
     
        <?php
    	if(isset($_POST['type'])){
     
    	echo $search; 
     
        $req = mysql_query("SELECT * FROM moteur WHERE titre LIKE '%$search%' OR contenu LIKE '%$search%' ORDER BY id");
        if($req->rowCount()>0)
        {
          while($data = $req->fetch(PDO::FETCH_OBJ))
          {
            echo '<h2>'.$data->titre.'</h2>';
            echo '<p>'.$data->contenu.'</p>';
          }
        }
        else
        {
          echo '<h2>Aucun resultat</h2>';
        }
    	}
     
        ?>
     
      </div>
     
    </body>
    </html>
    de plus je souhaiterai transformer le pdo en mysql

    est ce que que ça :

    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
     
    <?php
    	if(isset($_POST['search'])){
     
    	echo $search; 
     
        $req = mysql_query("SELECT * FROM moteur WHERE titre LIKE '%$search%' OR contenu LIKE '%$search%' ORDER BY id");
        if (mysql_num_rows($req) > 0)
    	{
    			while ($row = mysql_fetch_array($result))
    			{
    				echo $req['titre'];
    				echo $req['contenu'];
    			}
    	}
    			else
    		{
    			echo 'Aucun resultat';
    		}
     
     
        ?>
    est équivalent à cela :
    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
    <?php
    	if(isset($_POST['type'])){
     
    	echo $search; 
     
        $req = mysql_query("SELECT * FROM moteur WHERE titre LIKE '%$search%' OR contenu LIKE '%$search%' ORDER BY id");
        if($req->rowCount()>0)
        {
          while($data = $req->fetch(PDO::FETCH_OBJ))
          {
            echo '<h2>'.$data->titre.'</h2>';
            echo '<p>'.$data->contenu.'</p>';
          }
        }
        else
        {
          echo '<h2>Aucun resultat</h2>';
        }
    	}
     
        ?>

  4. #4
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Euh, quelques erreurs dans tes codes!

    La première, tu test la variable $_POST['type'] alors que le nom de ton champs est "search", il faut donc tester $_POST['search'].
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(isset($_POST['type']))
    // remplacer par
    if(isset($_POST['search']))
    La seconde, dans ton code "sans PDO", tu met le résultat de ta requête dans $req, puis dans tu boucle sur $result!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ($row = mysql_fetch_array($result))
    // remplacer par
    while ($row = mysql_fetch_array($req))

Discussions similaires

  1. afficher les resultats de recherche dans la meme page.
    Par geeksDeve dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2012, 03h09
  2. envoyer les données d'un formulaire, mais rester sur la meme page
    Par am@123 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/06/2009, 09h20
  3. Réponses: 1
    Dernier message: 26/01/2009, 15h01
  4. Resultat d'un formulaire sur la meme page
    Par oussayd dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/08/2006, 12h15
  5. Réponses: 8
    Dernier message: 22/03/2005, 15h06

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