Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2011, 20h04   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
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 :
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 :
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 :
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 :
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
Type de fichier : jpg 290407.jpg (102,7 Ko, 21 affichages)
Conan_86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 20h17   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2011, 20h24   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
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
Conan_86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 00h41   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
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 :
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>";
}
?>
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/01/2011, 10h41   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Salut Xysyo,
Merci d'avoir pris du temps pour corriger mon code.
Je vais regarder tout ca
Conan_86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h14.


 
 
 
 
Partenaires

Hébergement Web