Case "Recherche"

squago Messages postés 12 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 5 octobre 2010 - 4 sept. 2010 à 23:43
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 5 sept. 2010 à 10:36
Bonjour à tous,

Une fois de plus, je suis au bord de la crise de nerfs. Depuis ce matin, j'essaie de faire un script pour que les visiteurs de mon site puissent afficher les différents articles qu'ils souhaitent, en entrant tout simplement un ou des mots dans une case "recherche", toute bête, comme on en voit sur 99,99 des sites.
Voici ce script html:

<form method= "get" action="search.php">



</form>

Et le script php:

<?php

$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button)
echo "Vous n'avez pas entré de mot.";
else
{
if (strlen($search)<=3)
echo "Pas assez de caractères.";
else
{
echo "Vous cherchez $search <hr size ='1'>";

//connection à la base de données
mysql_connect('******', '*****', '****');
mysql_select_db('*******');

//explode
$search_exploded = explode(" ",$search);

foreach($search_exploded as $search_each)
{
//contruction du query
$x++;
if ($x==1)
$construct .= "keywords LIKE '%$search_each%'";
else
$construct .= " OR keywords LIKE '%$search_each%'";
}
//echo en construction

$construct = "SELECT 'libelle_produit','marque','poids' FROM catalogue WHERE $construct";
$run = mysql_query($construct);

$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo "Aucun résultat trouvé.";
else
{
echo "$foundnum résultat(s) trouvés!";

while ($runrows = mysql_fetch_assoc($run))
{
//Ce qui donne le résultat :
$libelle = $runrows['libelle_produit'];
$marque = $runrows['marque'];
$poids = $runrows['poids'];

echo"
$libelle

$poids

$marque";
}

}

else{
echo "Aucun produit trouvé!";
}
}
}
?>

Quoi que je fasse, quand je le teste, l'unique réponse est : "Vous n'avez pas entré de mot."

C'est tout. J'ai fait un mixe de l'anglais et du français, car j'ai trouvé 2 tutos sur "youtube", j'espère qu'à force de retourner le code dans tous les sens, je n'aie pas fait trop de salade, mais je vous avoue qu'à l'heure qu'il est, je suis un petit peu fatigué, , et vous seriez sympas de m'ouvrir les yeux...


Merci d'avance à ceux qui seront aimables d'y contribuer.

Squago

3 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 sept. 2010 à 02:43
Salut,

Il manque name="submit" pour ton bouton submit.


Cordialement,


Kohntark -
0
squago Messages postés 12 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 5 octobre 2010
5 sept. 2010 à 09:14
Bonjour Kohntark,

Je te remercie beaucoup pour ta réponse. J'ai vite fait l'essai, mais j'ai eu directement au premier essai, ce message d'erreur :

Parse error: syntax error, unexpected T_ELSE in /home/www/d0875257c57e479c840885858f092547/web/search.php on line 78

La ligne 78 correspond au dernier else, juste avant :''echo "Aucun produit trouvé!"; ''.
J'ai essayé, avant de poster ma demande d'hier soir, plusieurs fois, et j'ai fait beaucoup de changements pour trouvé ce qui n'allait pas, et durant mes recherches d'hier, j'ai souvent eu ce message au niveau de ce else.
Ce qui m'a fait tourner en rond toute la journée, et encore maintenant.Je ne vois vraiment pas ce qui cloche.

Si tu voyais autre chose?...


Merci sincère.

Squago
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 sept. 2010 à 10:36
Tu as 2 else qui se suivent !!


echo "Aucun résultat trouvé.";
else
{

et

else{
echo "Aucun produit trouvé!";
}

Forcément c'est une erreur puisque le dernier else ne serait pas exécuté.
Ce dernier else semble ne servir à rien :
echo "Aucun résultat trouvé."; = == echo "Aucun produit trouvé!";

Par ailleurs :
- pense à toujours indenter ton code et à utiliser la balise code

- je trouve que ta manière d'écrire tes if / else n'est vraiment pas top.
Le fait de ne pas mettre d'accolades sur une structure simple n'est pas un problème. Par contre dès qu'il y a des imbrications ça devient fort peu lisible.
Menfin c'est mon avis personnel à moi hein

<?php

$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button) {
    echo "Vous n'avez pas entré de mot.";
} else {
    if (strlen($search)<=3) {
        echo "Pas assez de caractères.";
    } else {
        echo "Vous cherchez  $search <hr size ='1'>";

        //connection à la base de données
        mysql_connect('******', '*****', '****');
        mysql_select_db('*******');

        //explode
        $search_exploded = explode(" ",$search);

        foreach($search_exploded as $search_each){
        //contruction du query
        $x++;
        if ($x==1) {
            $construct .= "keywords LIKE '%$search_each%'";
        } else {
            $construct .= " OR keywords LIKE '%$search_each%'";
        }
        //echo en construction

        $construct = "SELECT 'libelle_produit','marque','poids' FROM catalogue WHERE 
        $construct";
        $run = mysql_query($construct);

        $foundnum = mysql_num_rows($run);
        
        if ($foundnum==0) {
            echo "Aucun résultat trouvé.";
        } else {
            echo "$foundnum résultat(s) trouvés!";

            while ($runrows = mysql_fetch_assoc($run)){
                //Ce qui donne le résultat :
                $libelle = $runrows['libelle_produit'];
                $marque = $runrows['marque'];
                $poids = $runrows['poids'];

                echo "
                $libelle

                $poids

                $marque";
            }
        }
    }
}
?>



Ne trouves tu pas que c'est bien plus lisible ainsi ?

Cordialement,

Kohntark -
0
Rejoignez-nous