Problème Moteur de recherche / pseudoframe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Moteur de recherche / pseudoframe

par fanfouet » 07 déc. 2006, 10:47

Merci,
problème résolu; justement je me demandais si on pouvait mettre un parametre 'page' à un formulaire!

par Truc » 06 déc. 2006, 21:12

Salut,

Système un peu étonnant... pourquoi mettre le code de traitement dans l'en-tête et non dans un fichier à part pour l'inclure si le formulaire (qui se trouve dans l'en-tête lui) est validé ?


Tu ajoutes donc :
$pageOK = array (      'accueil' => 'accueil.php',
                   'news' => 'news.php',
                   'form' => 'traitement_form'); 
et dans l'action du formulaire :
//un paramètre "page" pour dire qu'on a validé le formulaire
action="<?php echo($_SERVER['PHP_SELF'])."?page=form"; ?>"

Sinon ajoutes un test ici :
// si cett vaiable n'existe pas (donc pas de form validé on affiche les autres pages
if(!isset($_POST['cherche']) 
{
   if ( (isset($_GET['page']) ) && (isset($pageOK[$_GET['page']])) )    
      include($pageOK[$_GET['page']]);   
   else 
      include ($pageOK['accueil']);   
}
?> 

Problème Moteur de recherche / pseudoframe

par fanfouet » 06 déc. 2006, 15:35

Bonjour,
je suis en train de créer un site internet et j'utilise la technique des pseudoframes.
La stucture du site de l'index.php est la suivante:
- une entête qui sert de menu: zone1.php
- les pages du site
- et un pied de page zone2.html.

Mon problème est le suivant: dans l'entête est inséré un code php pour faire un petit moteur de recherche dans une BD.
Et l'affichage des résultats de fait dans la même page.
Le soucis, c'est qu'il reste dans la page la pseudo-frame par défaut accueil.php qui se superpose à l'affichage des résultats de la recherche.
Je me demande comment éviter cela. Est-ce que c'est possible d'afficher les résultats en effaçant la page par défaut?(par exemple)
La motivation sousjacente étant que j'aimerais que tout ce passse dans la même fenêtre (navigation et affichage des résultats de la recherche).

Merci d'avance pour votre aide.

Voilà le code du menu (zone1.php):

Code : Tout sélectionner

[/b] <span style="position: absolute; left:600; top:5"> <a href="index.php?page=accueil" title="L'accueil">Accueil</a> | <a href="#" >English Version</a> | <a href="#" >Contact</a> | <a href="index.php?page=news" title="Les news">Publications</a> | Rechercher</span> <span style="position: absolute; left:957; top:3"> <form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>"> <input name="cherche" type="text" size="10" value="Entrez un mot clé" style="font-size:11px"> <input type="submit" Value="OK" style="font-size:11px"> </form></span> <?php if (isset($_POST['cherche']) && $_POST['cherche'] != NULL) // si le mot clé entré (POST[cherche]) existe { // on se connecte à MySQL $db = mysql_connect('localhost','root','') or die ("Impossible de se connecter au serveur de base de donnees"); // on sélectionne la base de donnée mysql_select_db('mysql',$db) or die ("Impossible d'accéder à la base "); $cherche = htmlspecialchars($_POST['cherche']); // on crée la requête SQL $sql = "SELECT * FROM recherche WHERE description LIKE '%$cherche%' OR mots LIKE '%$cherche%' "; // on envoie la requête $req = mysql_query($sql) or die (mysql_error() ); $nb_resultat = mysql_num_rows($req); echo '<span style="position: absolute; left:10; top:200">'; echo '<h3>Résultat de votre recherche</h3>'; if ($nb_resultat !=0) { echo 'Il y a '.$nb_resultat.'&nbsp;'; if ($nb_resultat > 1) { echo 'résultats :';} else { echo 'résultat';} echo '<br><br>'; while($data = mysql_fetch_assoc($req)) { echo '<b>'. $data['titre'].' </b>'; echo ' <a href=" '.$data['url'].' ">Visualisez la page</a> '; echo $data['description'].'<br><br>'; } echo '</span>'; } else {echo 'Nous n\'avons pas trouvé de résultat';} // on ferme la connexion à mysql mysql_close(); } ?> [b]
[/b]


Et celui de la page principale (index.php):

Code : Tout sélectionner

[/b] <HTML> <HEAD> <BODY bgcolor="white"> <!----------------------------------------------------------------------------> <div class="menu"> <?php include('zone1.php'); // on appelle l'entête du site qui est le menu ?> </div> <!----------------------------------------------------------------------------> <div class="PageSite"> <?php //on définit le tableau associé contenant les pages autorisées à mettre à jour quand ajout de pages $pageOK = array ( 'accueil' => 'accueil.php', 'news' => 'news.php'); if ( (isset($_GET['page']) ) && (isset($pageOK[$_GET['page']])) ) { include($pageOK[$_GET['page']]); } else { include ($pageOK['accueil']); } ?> </div> <!----------------------------------------------------------------------------> <div class="pied"> <?php include('zone2.html'); // on appelle le pied de page du site ?> <!----------------------------------------------------------------------------> </BODY> </HTML>