Formulaire de recherche sur le site

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 sept. 2008, 10:17

Tes liens sont faux (:arrow: renvoie vers une 404 quand on clic dessus), ce n'est donc PAS un problème de PHP mais un problème de HTML

REGARDE LE HTML GÉNÉRÉ...
C'est à dire le code HTML de ta page qui affiche les liens (et qui est lui généré par PHP).
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 122 Messages

22 sept. 2008, 10:26

Je vais pas y arriver .... oh lala c'est triste ...

Quand j'effectue une recherche et que je clique sur rechercher, voilà le code la page qu'il me retourne (avec les resultats):

Code : Tout sélectionner

<!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>ABC Fibromyalgie</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"> <!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></title> <link href="../Design/stylemenu.css" rel="stylesheet" type="text/css" /> </head> <body onload="MM_preloadImages('../Images/Structure/Bout_menu_select.gif')"> <!-- le onload permet de pr&eacute;charger l'image du bouton quand on est dessus ce qui &eacute;vite au premier coup d'avoir un temps de latence --> <ul> <!-- le # du href="#" est &agrave; remplacer par le lien qui va bien :-) --> <li><a href="../Index.php">Accueil</a><br/><br/> <li><a href="Pages/Connexion.php" target="_self">Connexion V.I.P</a><br/></li> <li><a href="Dons.php?men=don">Faire un don</a><br/></li> <li><a href="Liste_Article_Admin.php?ecl=1" target="_self">Lister les articles - RESERVE ADMIN</a></li> <li><a href="Propos_Article_Admin.php?ecl=1" target="_self">Proposer un article - RESERVE ADMIN</a></li> <li><a href="Propos_article.php?ecl=1" target="_self">Proposer un article ou une news</a></li> <li><a href="Fibromyalgie.php?ecl=1" target="_self">La Fibromyalgie</a></li> <li><a href="Vaccinations.php?ecl=2" target="_self">Vaccinations</a></li> <li><a href="Differentescauses.php?ecl=3" target="_self">Les diff&eacute;rentes causes non encore prouv&eacute;es</a></li> <li><a href="Maladies.php?ecl=4" target="_self">Les maladies venant des m&ecirc;mes causes</a></li> <li><a href="../Pages/Autour.php?ecl=5" target="_self">Autour de la fibro</a></li> <li><a href="Association.php?ecl=6" target="_self">L'association</a></li> <li><a href="Actions.php?ecl=7" target="_self">Nos actions jusqu'&agrave; ce jour</a></li> <li><a href="../Pages/News.php" target="_self">Les news</a></li> <li><a href="../Pages/Forum.php?ecl=8" target="_self">Forum de l'association</a></li> <li><a href="Besoinaide.php?ecl=9" target="_self">Besoins d'aide dans vos d&eacute;marches</a></li> <li><a href="../Pages/Partenaires.php" target="_self">Liens partenaires</a></li> <li><a href="../Pages/Declaration.php" target="_self">D&eacute;claration de confidentialit&eacute;</a></li> <li><a href="../Pages/Livreor.php" target="_self">Livre d'or</a></li> <li><a href="../Pages/Membre.php" target="_self">Devenir membre / Envoi de password</a></li> <li><a href="../Pages/Recherche.php" target="_self">Rechercher sur le site</a></li> </ul> </body> </html></div> <div id="titre">Rechercher un article sur le site de l'Association ABCFibromyalgie</div> <div id="texte"><br/> <br/> <br/> <br/> <center> </center> <br/> <br/> <br/> <br/> <br/> </div> </div> <div id="recherche"> <html> <head> <title>R&eacute;sultat de la recherche</title> </head> <body> <a name="#resultat"><h2>R&eacute;sultat: Un article trouv&eacute;</h2></a> <p> <p> <b>L\'aluminium danger ah bon</b> <br><a href="../L\'aluminium danger ah bon">Visualiser l'article</a> <p> </div> </body> </html>
Bon alors maintenant j'espère que c'est le bon code que j'ai posté ....

Me tapez pas sur les doigts svp ... ni ailleurs tant qu'à faire ...

Mammouth du PHP | 1353 Messages

22 sept. 2008, 10:41

Code : Tout sélectionner

<a href="../L\'aluminium danger ah bon">Visualiser l'article</a>
Le problème vient de la : quand tu construit ta page tu mets le mauvais parametre dans href=""...


Parce que ca m'étonnerai que tu ais une page dans le dossier parent qui s'appelle "L'aluminium en danger ah bon", sans extension etc...

Ce serait plus simple si tu utilisait mysql_fetch_assoc() ou mysql_fetch_array() ca eviterai ce genre de probleme, mais bon en tous cas a priori le $row[0] ne correspond pas au lien dans ta bdd....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 122 Messages

22 sept. 2008, 10:45

Oui c'est clair ...

C'est pour ça que je disais avant que je soupçonnais ces lignes là :
while($row = mysql_fetch_row($result))
	{
		echo " 
        <p>\n 
        <b>". $row[1] ."</b>\n 
	    <br><a href=\"../". $row[1] ."\">Visualiser l'article</a>\n 
        <p>\n 
        "; 

	}
Mais que je ne savais pas quoi modifier ...

Si tu as une idée, je serais bien content ...

Mammouth du PHP | 1353 Messages

22 sept. 2008, 10:50

Je ne sais pas a quoi corresponde tes index.
Sinon essaye un truc du genre :


while($row = mysql_fetch_array($result)) 
    { 
        echo "  
        <p>\n  
        <b>". $row["up_titre_article"] ."</b>\n  
        <br><a href=\"../". $row["up_lien"] ."\">Visualiser l'article</a>\n  
        <p>\n  
        ";  

    }
Par exemple, apres il faut que ca corresponde bien aux colonnes de ta bdd....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2008, 10:51

Tu nous as dit plus tôt que tu avais compris que $row[0] contenait un champ, $row[1] un autre, ...
Visiblement, $row[1] contient un titre, alors que toi, tu voudrais afficher l'url.

Fait donc un
var_dum($row);
pour trouver quel champ contient l'url et remplace le 1 de $row[1] par le champ qui contient l'url.

Si tu n'as pas compris, je détaille les étapes à suivres :
1/ Affiche le détail d'une ligne :
var_dum($row);
2/ Dans le résultat, de la forme suivante :

Code : Tout sélectionner

array( 0 => 'blablabla', 1 => 'trucmuche', 2 => 'foobar')
recherche le chiffre correspondant à l'url

3/ dans le code suivant :
echo "<br><a href=\"../". $row[1] ."\">Visualiser l'article</a>\n ";
remplace le 1 de $row[1] par le chiffre que tu viens de récupérer, afin d'afficher l'url dans le lien ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

22 sept. 2008, 10:57

Euh ???? Ok je vais tenter de faire ça ....

et je reviens vous dire ce que ça donne ...

En tout cas merci

Eléphant du PHP | 122 Messages

22 sept. 2008, 11:07

Bon alors, j'ai pas réussi à faire le
var_dum($row);
Donc j'y suis allez un par un ...

Et je suis arriver à
$row[3]
pour avoir le contenu de la news ...

Donc j'ai changé le numéro mais c'est tjs le meme message d'erreur sauf que cette fois c'est écris le contenu de la news dans le lien plutot que le titre ou le pseudo ....

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

EDIT:

Dans ma page index du site j'ai l'affichage des 5 dernières news et quand je clique dessus le contenu s'affiche ... j'aimerais que ça fasse pareil ici ...

Voici le code la page index:
<?php
// On se connecte à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("xxx");

// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM upload_fichier 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="index.php?voir_news='.$liste_news['up_id'].'">'.$liste_news['up_titre_article'].'<a></div>'; 
    $i++ ;
}
?>

        <div id="contenu">
    <?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'];

// On ferme la connexion MYSQL
mysql_close();
    ?> 
Et là ce code fonctionne nickel ...

Mais j'ai essayé de l'adapter à la recherche mais ça n'avait pas fonctionner ....

J'ai sûrement oublié qqchose ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2008, 11:35

C'est de ma faute, j'ai oublié une lettre :?

c'est var_dump(), pas var_dum() :oops:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 122 Messages

22 sept. 2008, 11:41

Ah oui ça marche carrément mieux ...

Voici ce qu'il me retourne :

Code : Tout sélectionner

array(10) { [0]=> string(11) "Ludo" ["inscr_pseudo"]=> string(11) "Ludo" [1]=> string(26) "L\'aluminium danger ah bon" ["up_titre_article"]=> string(26) "L\'aluminium danger ah bon" [2]=> string(9) "aluminium" ["up_rubrique"]=> string(9) "aluminium" [3]=> string(81) " C\'est l\'histoire de l\'aluminium qui descends de la montagne kijh" ["up_description"]=> string(81) " C\'est l\'histoire de l\'aluminium qui descends de la montagne kijh" [4]=> string(0) "" ["up_lien"]=> string(0) "" }
Voilà

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2008, 12:03

Tu sais donc que c'est $row[4], ou alors $row['up_lien'] qui contiennent ton lien.
(Au passage, il vaut mieux utiliser $row['up_lien'], ça évitera que tu refasses avoir comme cette fois)

Sinon, tu remarques que cette ligne est vide. Je pense donc que ton lien n'est pas renseigné en base de données.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 122 Messages

22 sept. 2008, 12:09

Exactement , rien n'est renseigné dans ce champ ...

En fait j'ai créer ce champ en BDD car je veux qu'on puisse avoir la possibilité d'uploader des fichiers en meme temps que les articles ..

Exemple, tu poste un message sur les armes biologiques et tu as un document comme preuve alors tu le mets dans le formulaire et hop c'est partis dans un dossier qui pourrait s'appeler UPLOAD_FILES (par ex) ...

Je suppose qu'il doit se génèrer automatiquement dès lors que quelqu'un poste un article et ou un fichier ???

Mais je ne sais pas comment faire ...

Sais-tu faire cela ???

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2008, 12:24

Est-ce toi qui a développé le script qui permet l'upload du fichier ?

Si oui : il faut que tu mémorises en base de données le chemin vers le fichier que tu as déplacé.
Si non : comment veux tu que la base de données comprenne toute seule ce que tu veux mettre dans un champ ? ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 122 Messages

22 sept. 2008, 12:28

Non j'ai adapté un script que j'ai trouvé et je n'avais pas encore pris le temps de me pencher sur CE probleme ...

Que le formulaire fonctionne était déjà pas mal pour moi ...

Après le LIEN c'était un autre problème ...

Euh question bête ... "comment tu dis à la BDD de créer une URL du fichier ???"

Merci

Eléphant du PHP | 122 Messages

01 oct. 2008, 11:00

Bonjour,

Bon pour l'insertion du lien du fichier dans la BDD c'est réglé par contre lorsque j'effectue une recherche et que je clique sur un résultat affiché, j'ai ce message qui apparait :

"Veuillez entrer un mot clé s'il vous plaît!"

Je vous remet le code de ma page:
<!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 ABCFibromyalgie</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>
Donc je continuer de penser que le problème vient de ces lignes :
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"; 
Mais je ne sais plus quoi ajouter ou enlever pour que ça fonctionne ... j'ai essayé plein de choses mais ça ne veux pas ...

Alors que sur ma page d'accueil j'ai ce code pour afficher les dernieres news et quand je clique sur la news ça m'affiche le contenu correctement, voici une partie du code de la page index.php:
// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM upload_fichier 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="index.php?voir_news='.$liste_news['up_id'].'">'.$liste_news['up_titre_article'].'<a></div>'; 
    $i++ ;
}
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 ???