Formulaire de recherche sur le site

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 : Formulaire de recherche sur le site

par Jackisback » 14 oct. 2008, 21:48

bonsoir,

Me revoilà avec mon problème de moteur de recherche:

J'ai donc mon formulaire de recherche FORM_RECHERCHE.PHP:
<form method="POST" action="../Cherche.php">

Entrez un mot clé:<br>

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

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

</form>
Qui transmets la variable à CHERCHE.PHP:
<?php
session_start();?>

<?php include("../Connexion_bdd.php"); ?>
<?php
// ..................... mon code ici ................

//Puis on boucle le tout pour tout afficher
$i=1;
while($row = mysql_fetch_array($result)) 
{ 
    echo '<div id="Contenu'.$i.'"><a href="../../Fonctions/Affichage_contenu.php?titre_article=
'.$row['up_titre_article'].'&up_id_recherche='.$row['up_id'].'" target="_blank">'.$row['up_titre_article'].'<a></div>';
	$i++ ;
}
            mysql_free_result($result);
}
}

// on ferme la base
mysql_close();

?>
Et pour finir la page d'affichage du contenu de l'article rechercher AFFICHAGE_CONTENU.PHP:
<?php include("../Fonctions/Connexion_bdd.php");?>
<?php
// On fait la requête pour afficher la liste des news concernant la rubrique "concernée"
$_GET['titre_article'] = $row['up_titre_article'];
$_GET['up_id_recherche'] = $row['up_id'];

$article = $_GET['titre_article'];
$id = $_GET['up_id_recherche'];

$requete_contenu = mysql_query("SELECT up_description FROM upload_fichier ORDER BY up_id DESC LIMIT 0, 10");

//Puis on boucle le tout pour tout afficher
while($row = mysql_fetch_array($requete_contenu)) 
{
    echo '<div id="News">'.$row['up_description'].'<a></div>'; 
}

// on ferme la base
mysql_close();
?>
Donc pour le moment j'ai progressé par rapport à mes derniers messages.

Je n'arrive pas à lui faire afficher uniquement le contenu de l'article selectionné.

Que faut-il changer dans cette ligne là ?
$requete_contenu = mysql_query("SELECT up_description FROM upload_fichier ORDER BY up_id DESC LIMIT 0, 10");
Je pensais rajouter un truc du genre:
$requete_contenu = mysql_query("SELECT up_description FROM upload_fichier WHERE up_id = '.$id.'");
En me servant de mes déclarations précédentes mais rien n'y fait:
$_GET['titre_article'] = $row['up_titre_article'];
$_GET['up_id_recherche'] = $row['up_id'];

$article = $_GET['titre_article'];
$id = $_GET['up_id_recherche']; 
Ca m'affiche tjs une page blanche ... j'ai essayé plusieurs écritures du code WHERE up_id = mais ça ne fonctionne jamais ...

Sauriez-vous d'ou cela peut venir ?

par Jackisback » 13 oct. 2008, 12:02

Merci.

Ca me fait très chaud au coeur ...

Heureusement que je suis sur le forum débutant sinon ça aurait été quoi ???

Jeter aux crocodiles ???

--------------
EDIT:

Va voir tes MP.

(ca ne se dit pas devant tous le monde !!!)

par Berzemus » 13 oct. 2008, 11:58

Développeur web, c'est un métier. Donc, si on veut que c'est bien fait, il faut investir dans l'apprentissage, l'exercice, et tout le reste.

Il y a des cours accessibles et très avancés, ou des bouquins léger ou extrêmement touffus.

Sur le web, on trouve quelque tutoriels, dont la qualité peut varier. On y trouve cependant du très bon, comme du carrément mauvais (puisque n'importe qui peut en faire un).

Je dis ça parce qu'il me semble qu'il te manque une bonne flopée de bases essentielles. Et si tu espère que quelqu'un va prendre en charge ta formation, sans contrepartie aucune, comme ça: hop! ben tu auras plus de chance en jouant au lotto.

Si vraiment tu veux t'engager sérieusement dans cette voie, investis dans ce milieu. Si tu es un (bon) autodidacte, queques bouquins peuvent faire des merveilles. Sinon, choisis parmi les formations/cours proposés. Mais trifouiller des scripts à gauche à droite, sans comprendre les bases, et demander ici de mettre de l'ordre la dedans, en comprenant le quart de ce qui est demandé, et en répondant à côté l'autre moitié du temps, ben c'est perdre son temps, puisque ça n'avance personne.

par Jackisback » 13 oct. 2008, 11:25

J'ai modifié le script de cette façon (la modif est en fin de code):
<?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 $row["up_id"]." | ".$row["up_titre_article"];
                $url = $row["up_lien"];
                echo " | <a href=\"$url\">$url</a><br>";
                echo "Description : ".$row["up_description"]."<br><br>";
                }
            mysql_free_result($result);
}
}

// on ferme la base
mysql_close();

?>
Là ça fonctionne il m'affiche le titre de l'article, le contenu et le lien s'il y a un fichier avec ...

Ma question est maintenant que tout ça fonctionne, comment faire pour n'afficher que le TITRE et lorsque je clique sur le titre il m'affiche le CONTENU + le LIEN DU FICHIER (si présent) ???

D'avance merci.

par Jackisback » 12 oct. 2008, 09:05

Ok bon merci ...

C'est noté ...

@+

par albat » 11 oct. 2008, 23:50

Modération :
Jackisback, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

par Jackisback » 11 oct. 2008, 22:27

Up svp ..

Merci

par Jackisback » 10 oct. 2008, 12:08

oui, et beaucoup de non.

Tu as trouvé la page qui traite cette donnée, bravo.

Mais pourquoi est-ce que tu persistes alors a vouloir afficher la news dans la page de recherche ? Pourquoi pas dans la page d'affichage des news ?

En gros, supposons que afficheur_news.php est le titre de la page php que tu as trouvé. (je vois pas son nom de toute façon)

Explique moi bien et en détail ton raisonnement qui te conduit à faire ceci:
<br><a href="cherche.php?voir_news=".$rows['up_titre_article']."">Visualiser l'article</a><p>\n"; 
plutôt que ceci:
<br><a href="afficheur_news.php?voir_news=".$rows['up_titre_article']."">Visualiser l'article</a><p>\n"; 
? Pas à pas, tranquillement.
Salut,

Bah expliquer pourquoi je fais le premier script plutot que le deuxième je ne sais pas ....

J'ai utiliser un script tout fait déjà que j'ai adapté à mes besoins sur une autre page et donc je pensais qu'en faisant de la même façon sur le moteur de recherche ça fonctionnerait aussi mais non ...

Tu es entrain de me dire que je devrais créer une page qui se contenterait d'afficher le contenu de mon article lorsque je clique sur la ligne qui m'interresse ???

Je ne comprends pas pourquoi c'est genant (ou déconseillé ou autre chose) de faire ce que j'ai fais plutot que ce que toi tu me propose de faire ???

J'ai mal compris ce passage alors si quelqu'un pouvait prendre 2 min pour m'expliquer comment ça fonctionne en réalité .. j'ai dû sauter un épisode et là je suis larguer ...

D'avance je vous remercie ...

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

EDIT:

J'ai trouvé le code source originel de ce moteur de recherche ...

http://www.commentcamarche.net/php/phpmoteur.php3

Et j'ai bien l'impression qu'il y a du php3 ... et je crois savoir (enfin je crois) que ça coince un peu qvec des fonctions php que j'aurais pu ajouter ....

par Jackisback » 09 oct. 2008, 11:24

Meaculpa ...

Je ne pensais plus à cette réponse ...

Désolé

par charabia » 09 oct. 2008, 11:21

Commence déjà par répondre à Berzemus si tu veux trouver une solution Jackisback

par Jackisback » 09 oct. 2008, 11:06

Petit UP svp ...

Ca ne fonctionne tjs pas ...

Je vais craquer ...

Je crois que je vais faire une grosse bêtise ....

par Jackisback » 06 oct. 2008, 16:48

Bonjour,

Bah expliquer en detail ça va être rapide alors ...

J'ai récupérer un script qui fonctionne ailleurs et en la mettant dans celle-ci ça ne fonctionne plus ...

Sinon pour afficher les news dans une nouvelle page.php pourquoi pas. .... en popup par exemple ???

par Jackisback » 03 oct. 2008, 16:05

Désolé j'ai du m'absenter ...

Je vais regarder tranquillement tout ça et je te tiens au courant ...

En attendant merci

par Berzemus » 03 oct. 2008, 13:12

oui, et beaucoup de non.

Tu as trouvé la page qui traite cette donnée, bravo.

Mais pourquoi est-ce que tu persistes alors a vouloir afficher la news dans la page de recherche ? Pourquoi pas dans la page d'affichage des news ?

En gros, supposons que afficheur_news.php est le titre de la page php que tu as trouvé. (je vois pas son nom de toute façon)

Explique moi bien et en détail ton raisonnement qui te conduit à faire ceci:
<br><a href="cherche.php?voir_news=".$rows['up_titre_article']."\">Visualiser l'article</a><p>\n"; 
plutôt que ceci:
<br><a href="afficheur_news.php?voir_news=".$rows['up_titre_article']."\">Visualiser l'article</a><p>\n"; 
? Pas à pas, tranquillement.

par Jackisback » 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]