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

Langage PHP Discussion :

Problemes de rechargement de pages lors d'une recherche


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut Problemes de rechargement de pages lors d'une recherche
    Bonjour,

    Je fais un site dans lequel on peut effectuer des recherches selon certains critères. Chaque recherche conduit a une liste de résultats. En sélectionnant un des résultats, on doit pouvoir afficher une page correspondante. Seulement je rencontre un problème dans le rechargement des pages comme l'indique le petit schéma explicatif ci-dessous.



    Voila donc mon code. Alors je suis débutant, donc si vous voyez des erreurs, des failles de sécurité ou quoique ce soit d'autre, n'hésiter pas à me le faire savoir.
    Et surtout si je ne suis pas clair dans mes explications dites-le.

    Pouvez-vous m'aider ? D'avance merci !
    Conan_86

    Pour ma page 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
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Titre du site</title>
    <style type="text/css" media="screen">@import url(normal.css);</style>
     
    <?php
    $host= "localhost";
    $user= "root";
    $mdp= "mdp";
    $bdd="base";
     
    ?>
    </head>
    <body>
    <?php
    function InsertSmenu( $pfxContent, $numMenu, $strItems = array(), $bwidth = 0) {
    ?>
    			<div class="ecform_smenu">
              	<ul class="smenu">
    <?php
        $bwidth =($bwidth > 0) ? 'style ="width:'.$bwidth.'px;" ' : '';
        for($i=0; $i<count($strItems); $i++) {
          echo "\t\t".'<li class="smenu'.$i.'">'."\n\t\t";
          echo '<a id="s'.$numMenu.$i.'" class="'.(($i == 0) ? 'scurrent':'sghost').'" onclick="multiSMenu(this.id,'."'".$pfxContent."'".','.$numMenu.','.count($strItems).')" alt="smenu_'.$numMenu.$i.'" '.$bwidth.'>'.$strItems[$i].'</a>'."\n";
          echo "\t\t".'</li>'."\n";
        }
    ?>       	  </ul>
        	      </div>
    <?php
    }
    ?>
    <div id="banniere">
    <img src="banniere2.png" alt="banniere" />
    </div>
    <div id="ecform_container">
      <div id="ecform_entete">
    	<span id="ecform_title">Titre</span>
      	<ul id="menu">
      		<li class="menu_0">
      			<a id="_0" class="current" onclick="multiMenu(this.id)" alt="menu0">Menu 1</a>
      		</li>
      		<li class="menu_1">
      			<a id="_1" class="ghost" onclick="multiMenu(this.id)" alt="menu1">Menu 2</a>
      		</li>
      		<li class="menu_2">
      			<a id="_2" class="ghost" onclick="multiMenu(this.id)" alt="menu2">Menu 3</a>
      		</li>
      		<li class="menu_3">
      			<a id="_3" class="ghost" onclick="multiMenu(this.id)" alt="menu3">Menu 4</a>
      		</li>
    		<li class="menu_4">
      			<a id="_4" class="ghost" onclick="multiMenu(this.id)" alt="menu4">Menu 5</a>
      		</li>
      	</ul>
      </div>
     
    <?php include("page1.php")?>
    <?php include("page2.php")?>
    <?php include("page3.php")?>
    <?php include("page4.php")?>
    <?php include("page5.php")?>
     
     
      <div id="ecform_btmbar">Bibi production. All right reserved!
      </div>
    </div>
     
    <script type="text/javascript" src="script/scripts.js"></script>
     
    </body>
    </html>
    Pour ma page page1.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
     
    <div id="menu_1" class="off content" name="page1">
    	    <div id="ecform_topbar">
    	    <?php include("top_barre.php");?>
    	    </div>
    		<div id="ecform_content">
    		  <div class="titcontent">
        		<h2 >Chercher quelque_chose</h2>
    		  </div>
    <?php
    /*quand on clique sur un resultat : quelque_chose */
    if (isset($_get['quelque_chose']) && $_get['quelque_chose']!= NULL){
    		echo InsertSmenu("smenu",1,array('sous_menu1','sous_menu2','sous_menu3','sous_menu4','sous_menu5','sous_menu6'));
    ?>
     
    		<div class="smcontent">
          	<div id="smenus10" class="son scontent">
          		<h2>sous_menu1</h2>
    			<?php include("page_sous_menu1.php");?>
    		</div>
    		<div id="smenus12" class="son scontent">
          		<h2>sous_menu2</h2>
    			<?php include("page_sous_menu2.php");?>
    		</div>
          	</div>
    		</div>
    <?php
    }
    else {
    include ("recherche.php")
    }
    ?>
    	</div>
    Pour ma page top_barre.php contenant ma barre 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
    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
     
    <span id="search_content">
    <form name="rech_page1" method="post" action="index.php?#page1">
    <?php
    $connection = mysql_connect($host,$user,$mdp);
     
    if ( ! $connection )
    die ("connection impossible");
     
    mysql_select_db($bdd) or die ("pas de connection");
     
     
    $result = mysql_query("SELECT * FROM critere1",$connection) or die ('Erreur : '.mysql_error() );
     
    $total = mysql_num_rows($result);
     
    if($total) {
    ?>
     
    <select name="selec_critere1">
     
        <option value=0 selected="selected">Tous les critere1</option>
      <optgroup label="Sélectionner un critere1:" >
    <?php
        while($row = mysql_fetch_array($result)) {
    ?>
     
        <option value=<?php echo $row['id']?>><?php echo $row['nom_critere1']?></option>
     
    <?php
        }
    ?>
      </optgroup>
    <?php
    }
     
    else echo 'Pas d\'enregistrements dans cette table...';
    ?>
    </select>
     
     
    <?php
    $result = mysql_query("SELECT id, nom_critere2 FROM critere2");
     
    $total = mysql_num_rows($result);
     
    if($total) {
    ?>
    <select name="selec_critere2">
     
        <option value=0 selected="selected">Tous les critere2</option>
      <optgroup label="Selectionner un critere2:" >
    <?php
        while($row = mysql_fetch_array($result)) {
    ?>
     
        <option value=<?php echo $row['id']?> ><?php echo $row['nom_critere2']?></option>
    <?php
        }
     ?>
      </optgroup>
    <?php
    }
     
    else echo 'Pas d\'enregistrements dans cette table...';
    mysql_close($connection);
    ?>
    </select>
    </span>
     
    <ul id="ecform_buttons">
      <li class="buttons">
        <input name="btsubmit" type="submit" value="Valider" />
      </li>
    </ul>
    </form>
    et enfin ma page resultat.php devant s'afficher dans la page1 quand une recherche est effectuée et devant etre remplacée par une autre quand un résultat est cliqué:
    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
     
    <?php
     
    if(isset($_POST['selec_critere2']) && $_POST['selec_critere2'] != NULL)
      {
      mysql_connect($host,$user,$mdp);
      mysql_select_db($bdd);
      $requete = htmlspecialchars($_POST['selec_critere2']);
        if ($requete!=0){
        $query = mysql_query("SELECT * FROM critere1 WHERE id_critere2 LIKE '%$requete%'") or die (mysql_error());
        $nb_resultats = mysql_num_rows($query);
          if($nb_resultats != 0)
          {
          ?>
          <h3>Résultats de votre recherche.</h3>
          <p><?php echo $nb_resultats;
          if($nb_resultats > 1) { echo ' resultats'; } else { echo ' resultat'; }
          ?>
          <br/>
          <?php
    	while($donnees = mysql_fetch_array($query))
    	{
    	?>
    	<a href="index.php?page1=<? echo $donnees['id']; ?>"><? echo $donnees['nom_critere1']; ?></a><br/>
    	<?php
    	}
          ?><br/>
          <br/>
          <?php
          }
          else
          {
          ?>
          <h3>Pas de résultats</h3>
          <p>Réessayez avec d'autres critères.</p>
          <?php
          }
        }
        else {
        $query = mysql_query("SELECT * FROM critere1") or die (mysql_error());
        $nb_resultats = mysql_num_rows($query);
          if($nb_resultats != 0)
          {
          ?>
          <h3>Résultats de votre recherche.</h3>
          <p><?php echo $nb_resultats;
          if($nb_resultats > 1) { echo ' resultats'; } else { echo ' resultat'; }
          ?>
          <br/>
          <?php
    	while($donnees = mysql_fetch_array($query))
    	{
    	?>
    	<a href="index.php?page1=<? echo $donnees['id']; ?>"><? echo $donnees['nom_critere1']; ?></a><br/>
    	<?php
    	}
          ?><br/>
          <br/>
          <?php
          }
          else
          {
          ?>
          <h3>Pas de résultats</h3>
          <p>Nous n'avons trouvé aucun résultat pour votre requête. Réessayez avec autre chose.</p>
          <?php
          }
          mysql_close();
        }
    }
    else
    {
    ?>
    <p>faites votre recherche et cliquer sur valider.</p>
    <?php
    }
    ?>
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    si je comprends bien il te faut faire une recherche en fonction de l'onglet actif.

    la notion de "recharger" me gène parce qu'elle suppose une notion de persistance d'une information alors que http est un protocole sans état, c'est à dire qu'on ne se souvient pas de ce qui a été fait à l'interaction précédante.

    Ceci dit, tu peux apporter du souvenir en passant du souvenir (ici le numéro de l'onglet) par une variable et tu regeneres toute ta page en prenant en compte la nouvelle configuration;

    Maintenant si tu ne veux pas régénérer toute la page mais juste une partie de la page ça devient plus compliquer: utilise une librairie JS (Prototype/Jquery) qui fournissent des outils pour mettre a jour un fragment de html sur une page.

    je sais pas si ma réponse va t'aider bcp.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut
    Salut,
    Merci de ta réponse et effectivement je ne souhaite regenerer qu'une seule partie de ma page.
    Donc je vais essayer une librairie JS (Prototype/Jquery).

    Conan_86

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut Conan_86,

    Je me suis permis de reprendre un de tes codes afin de le clarifier et de te montrer qu'il faut absolument éviter de tout mélanger entre le PHP et l'HTML
    Allez j'espère ne pas avoir fait de boulettes :-)
    Et l'idée de gene69 de te pencher sur jQuery est bien vue pour faire ce que tu souhaites.

    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
    <?php
     
    if (isset($_POST['selec_critere2'])) {
     
       mysql_connect($host, $user, $mdp);
       mysql_select_db($bdd);
     
       $critere = htmlspecialchars($_POST['selec_critere2']);
     
       $sql = "SELECT * FROM critere1 ";
     
       if (strlen($critere)) {
          $sql .= "WHERE id_critere2 LIKE '%$critere%'";
       }
     
       $result = mysql_query($sql);
       $nbRec  = mysql_num_rows($result);
     
       if ($nbRec) {
     
          if ($nbRec > 1) {
             $pluriel = 's';
          }
     
          while($donnees = mysql_fetch_array($query)) {
             $hrefs[] = "<a href=\"index.php?page1={$donnees['id']}\">{$donnees['nom_critere1']}</a><br />";
          }
     
          mysql_close();
     
          $hrefs = implode("\n", $hrefs);
     
          echo <<<HTML
    <h3>Résultats de votre recherche.</h3>
    <p>$nbRec résultat$pluriel</p><br />
    $hrefs
    <br />br />
    HTML;
     
       } else {
     
          echo <<<HTML
    <h3>Pas de résultats</h3>
    <p>Réessayez avec d'autres critères.</p>
    HTML;
     
       }
     
    } else {
       echo "<p>faites votre recherche et cliquer sur valider.</p>";
    }
    ?>

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut
    Salut Xysyo,
    Merci d'avoir pris du temps pour corriger mon code.
    Je vais regarder tout ca

Discussions similaires

  1. probleme de rechargement et d'alimentation d'une listeview
    Par Msysteme dans le forum Windows Forms
    Réponses: 0
    Dernier message: 02/04/2009, 14h29
  2. Probleme inversion jour et mois lors d'une copie par macro
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2008, 16h29
  3. Réponses: 9
    Dernier message: 05/09/2006, 17h00
  4. Probleme d'acces aux données lors d'une de jointure
    Par FlyByck dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/12/2005, 14h59
  5. Probleme lors d'une recherche sur les forums
    Par JUSTIN Loïc dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 8
    Dernier message: 27/07/2005, 13h22

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