Formulaire de recherche sur le site

Eléphant du PHP | 122 Messages

02 oct. 2008, 15:36

Petit UP Svp ...

J'ai encore besoin de votre aide ...

ViPHP
ViPHP | 4039 Messages

02 oct. 2008, 17:28

Il doit bien y avoir moyen de prendre des morceaux de ce code et de les mettre dans l'autre pour que ça fonctionne ?? non ???
Bien sur: comprendre le code. Sinon ça revient à prendre une montre en pièces détachées, et lancer le tout en l'air jusqu'à ce que tout retombe parfaitement en place, c'est la théorie du chaos.

S'il t'affiches 'Veuillez entrer un mot clé s'il vous plaît!'
, c'est que cette condition est réalisée:

Code : Tout sélectionner

($Mot == "")||($Mot == "%")
et que donc celle-ci a complètement foirée:

Code : Tout sélectionner

if(isset($_POST["Mot"])) $Mot = mysql_real_escape_string($_POST['Mot']); else $Mot = "";
Donc, au final, qu'est-ce qui te permet de dire qu'en cliquant sur un résultat tu transmet une variable par POST ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

02 oct. 2008, 18:12

Bah c'est le formulaire qui envoie le tout par POST:
<form method="POST" action="recherche.php">

Entrez un mot clé:<br>

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form> 
C'est bien ça doc ??, sauf si je ne me trompe ...

ViPHP
ViPHP | 4039 Messages

02 oct. 2008, 19:35

Bon, on va y aller molo alors..

Oui, la requête est envoyée par POST quand tu lances une recherche.. mais qu'est ce qui se passe quand tu cliques sur un résultat ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

02 oct. 2008, 20:01

Bah pour moi c'est dans cette partie du script que ça se joue:
<?php
while($row = mysql_fetch_array($result)) 
    { 
        echo "
        <p>\n  
        <b>". $row[up_titre_article] ."</b>\n  
		<br><a href=\"cherche.php?voir_news=".$rows['up_titre_article']."\">Visualiser l'article</a><p>\n";  
    }?>
Et plus particulièrement au niveau du <a href=\"

Enfin je pense ...

ViPHP
ViPHP | 4039 Messages

02 oct. 2008, 23:04

Si tu le dis.

Au fait, quand tu dis "c'est le code de ma page", tu parles de la page cherche.php ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

02 oct. 2008, 23:07

Oui tu veux que je remette le code complet de la page ?

--------------

EDIT:

Quand tu dis:

"Si tu le dis. "

Tu veux dire que je suis complétement à côté de la plaque ??

Voici le code de la page cherche.php:
<!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=iso-8859-1" />
<title>xxx</title>
<!-- lien de la feuille de style des textes -->
<link href="../../Design/styletext.css" rel="stylesheet" type="text/css" />
<!-- lien de la feuille de style de la position des blocs -->
<link href="../../Design/stylepage.css" rel="stylesheet" type="text/css" />
<!-- lien de la feuille de style de la gestion du menu -->
<link href="../../Design/stylemenu.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div id="corps">
<div id="image_fond"></div>
<div id="logo"><a href="../../Index.php"><img src="../../Images/Logo/colombe_couleur_text.png" width="160" height="160" border="0" /></a></div>
<div id="posmenu">
<?php include("../../Menu/MenuPages.php"); ?>
</div>
<div id="titre">Rechercher un article sur le site de l'Association xxx</div>
<div id="texte"><br/>
    <br/>
  <br/>
  <br/>
  <center>
    <?php //include("../Formulaire/Recherche/Form_recherche.php"); ?>
  </center>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
</div>
</div>
<div id="recherche">

<?php include("../../Fonctions/Connexion_bdd.php"); ?>

<?php
if(isset($_POST["Mot"])) $Mot = mysql_real_escape_string($_POST['Mot']);
else $Mot = "";

echo "
<html>
<head>
<title>Résultat de la recherche</title>
</head>
<body>";

if (($Mot == "")||($Mot == "%")) 
	{echo "Veuillez entrer un mot clé s'il vous plaît!<p>";}
// Si aucun mot clé n'a été saisi,
// le script demande à l'utilisateur
// de bien vouloir préciser un mot clé

else {
// On selectionne les enregistrements contenant le mot clé
// dans les keywords ou le titre
	$requete = "SELECT distinct count(up_lien) FROM upload_fichier
	WHERE inscr_pseudo LIKE \"%$Mot%\"
	OR up_titre_article LIKE \"%$Mot%\"
	OR up_rubrique LIKE \"%$Mot%\"
	OR up_description LIKE \"%$Mot%\"
	OR up_finalname LIKE \"%$Mot%\"
	";
	
	$result = mysql_query($requete);
	$row = mysql_fetch_row($result);
	$Nombre = $row[0];
	
// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") 
	{echo "<h3>Aucun résultat ne correspond à  votre recherche</h3><p>";}
	
// Sinon, on affiche le nombre d'enregistrements correspondant
// et les résultats eux-mêmes
else {
	$requete = "SELECT distinct inscr_pseudo, up_titre_article, up_rubrique, up_description, up_lien FROM upload_fichier
	WHERE inscr_pseudo LIKE \"%$Mot%\"
	OR up_titre_article LIKE \"%$Mot%\"
	OR up_rubrique LIKE \"%$Mot%\"
	OR up_description LIKE \"%$Mot%\"
	OR up_finalname LIKE \"%$Mot%\"
	ORDER by up_titre_article ASC";
	
	$result = mysql_query($requete);
	
	// Si un seul enregistrement est trouvé on affiche un message au singulier
	if ($Nombre == "1") 
	{echo "<a name=\"#resultat\"><h2>Résultat: Un article trouvé</h2></a><p>";}
	
	// Dans le cas contraire le message est au pluriel...
	else 
	{echo "<a name=\"#resultat\"><h2>Résultat: $Nombre articles trouvés</h2></a><p>";}
	
	while($row = mysql_fetch_array($result)) 
    { 
        echo "
        <p>\n  
        <b>". $row[up_titre_article] ."</b>\n  
		<br><a href=\"cherche.php?voir_news=".$rows['up_titre_article']."\">Visualiser l'article</a><p>\n";  
    }
}
}
// on ferme la base
mysql_close();

?>
</div>
</body>
</html>

ViPHP
ViPHP | 4039 Messages

02 oct. 2008, 23:18

Pas besoin, le code est encore sur la page précédente.

Je me demandais juste ou tu traitais la variable "voir_news" dans ton script. Il ne me semble pas le voir.

Ce qui est sur par contre c'est que tu ne transmets aucune variable POST vers cherche.php en cliquant sur "visualiser l'article". Et que donc, le script te fait exactement ce que tu lui demandes. cqfd.
Tu veux dire que je suis complétement à côté de la plaque ??
Je peux me tromper, ou mal interpréter le problème, mais j'en ai bien peur, oui. Ceci dit, je préfère ne pas le dire de haut de façon condescendante, et y aller doucement, avec tact et patience. Et quelques remarques acerbes bien méchantes pour me conforter. :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

02 oct. 2008, 23:39

Je comprends plus alors ...

dans mes differentes pages j'ai ce script:
<?php include("../Fonctions/Connexion_bdd.php"); ?>

<?php
// On fait la requête pour afficher la liste des news concernant la rubrique "concernée"
$requete_news = mysql_query("SELECT * FROM upload_fichier WHERE up_rubrique='fibromyalgie' ORDER BY up_id DESC LIMIT 0, 5");

//Puis on boucle le tout pour tout afficher
$i=1;
while($liste_news = mysql_fetch_array($requete_news)) 
{ 
    echo '<div id="News'.$i.'"><a href="maladies.php?voir_news='.$liste_news['up_id'].'">'.$liste_news['up_titre_article'].'<a></div>'; 
    $i++ ;
}
?> 
        <div id="contenu">		
    <?php include("../Fonctions/Affichage_news.php"); ?> 		
		</div> 
<?php
// On ferme la connexion MYSQL
mysql_close();
Pourtant j'ai le xxxxxxx.php?voir_news qui ressurgit ....

Ca fonctionne mais pourtant je ne vois pas cette variable déclarer quelques part ...

Ou alors je suis completement perdu ....

Alors si tu veux bien méexpliquer ....

ViPHP
ViPHP | 4039 Messages

03 oct. 2008, 09:45

maladies.php?voir_news=XXX
Hé ben, ce lien renvoie vers la page maladies.php, avec, en GET, la variable voir_news.

Dans la page maladies.php, une partie du script doit s'occuper de récupérer la variable $_GET['voir_news'], de la traiter et d'agir en fonction de son contenu. C'est exactement ce que ne fais pas du tout la page cherche.php, pour ce que j'en vois. Peut-être dans l'un ou l'autre fichier inclus, mais j'en doute.

Si vraiment tu ne vois pas le bout du tunnel, ou que tout ça c'est du chinois, c'est peut-être que tu n'es pas fait pour être programmeur. En tout cas, tu as de sérieuses et profondes lacunes en php et en programmation, donc soit il te faudrait acheter un bon bouquin, suivre quelques cours, ou te lancer plein de motivation dans la documentation en ligne, pour bien tout comprendre.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

03 oct. 2008, 10:04

Alors là je suis complétement d'accord avec toi sur mes lacunes ....

J'aimerais me perfectionner mais je n'ai pas beaucoup de temps pour apprendre et ne faire que ça pendant des jours pour tout piger ...

Je fais un site pour rendre service à une personne qui en a vraiment besoin ...

Avant qu'elle me le demande je ne connaissais rien en php css mysql ... et tout et tout ...

Perso, j'ai appris déjà beaucoup de choses car tout était nouveau mais il y a encore pas mal de choses qui ne m'ont pas fait tilt donc j'ai du mal à les comprendre, c'est tout ...

J'essaie de comprendre ce qu'on m'explique mais je n'ai pas les facultés de certains ...

Après je ne fais pas ça pour être programmeur .... c'est juste pour aider mon prochain ....

Eléphant du PHP | 122 Messages

03 oct. 2008, 10:16

Et ce que je ne comprends pas c'est que j'ai ouvert TOUT mes fichiers PHP du site et j'ai rechercher la variable $voir_news ...

Et bien je n'en ai trouvé aucune, c'est pour ça tu me dis:

"Hé ben, ce lien renvoie vers la page maladies.php, avec, en GET, la variable voir_news."

C'est pour ça que je m'y perd ... on dit tu la déclares tu l'envoi tu la récupere et tu l'interprete ...

Et moi je ne vois nulle part ou cette variable est déclarée ... ????

Je suis assez clair dans mes explications, ca va ??

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 4039 Messages

03 oct. 2008, 10:26

Ce n'est pas nécessairement $voir_news qui doit être présent, mais $_GET['voir_news']. C'est a travers celle-la que ton script accède à l'information qui lui est communiquée par l'url:

Code : Tout sélectionner

maladies.php?voir_news=contenu_variable
C'est le même système pour la recherche. Cherche.php s'attend à trouver une variable non pas en GET, mais en POST:
if(isset($_POST["Mot"])) $Mot = mysql_real_escape_string($_POST['Mot']); 
Dans les résultats, tu as alors un lien vers une page avec l'ID du résultat en GET, dans l'adresse.
Pour le moment, ce lien pointe vers cherche.php. Or cherche.php ne sait absolument pas quoi faire avec cette donnée ($_GET['voir_news']), puisque ce que lui il veut c'est $_POST["Mot"], et rien d'autre.

Soit tu es censé rediriger sur une autre page, soit tu dois coder la façon d'interpréter et d'utiliser cette variable dans ton script.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 122 Messages

03 oct. 2008, 10:35

Ok ...

C'est un peu plus clair comme ça ....

Je vais tenter de modifier mon script ...

J'ai très certainement mal interpreté un tuto que j'ai vu en croyant qqchose alors que c'était autre chose en réalité ..., c'est peut etre la cause de mon incompréhension ....

Merci en tout cas

Eléphant du PHP | 122 Messages

03 oct. 2008, 10:57

Dans ce ca là j'ai trouvé la variable (DE TOUTE FACON C'EST LE SEUL ENDROIT OU JE L'AI TROUVE):
    <?php
// Si jamais on veut voir une news, on vérifie que la variable est bien un entier puis on va chercher la news pour l'afficher !
   
    $id_news = htmlentities($_GET['voir_news'], ENT_QUOTES);
    $news = mysql_fetch_assoc(mysql_query("SELECT * FROM upload_fichier WHERE up_id = '".$id_news."'"));
    $date_news = date('d/m/Y à H\hi', $news['up_filedate']);
	echo $news['up_titre_article'].' - Par '.$news['inscr_pseudo'].' - Le '.$date_news.'<br/><br/>';
    echo $news['up_description'];  
    ?>

C'est mon script d'affichage des news justement, celui qui fonctionne nickel ....

Donc si j'ai bien saisi ce que tu essaies déséspèrement de m'expliquer depuis des jours .....

SI JE CHANGE:
$id_news = htmlentities($_GET['voir_news'], ENT_QUOTES);
Par :
$id_news = htmlentities($_GET['form_recherche'], ENT_QUOTES);
Et que dans la page cherche.php, j'écris:
<br><a href=\"cherche.php?form_recherche=".$rows['up_titre_article']."\">Visualiser l'article</a><p>\n"; 
Et que je fasse peut etre deux trois autres adaptations (que j'ai en tete) ça pourrait fonctionner ??

Je vais essayé ....

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]