Problème avec un soit disant moteur de recherche lol

Signaler
Messages postés
24
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
28 août 2008
-
Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010
-
Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM etc....
mais j'ai déclarer la méthode POST ,
est ce qqun pourrai m'aider ??? merci d'avance
o niveau de la connexion ya pa de soucis, mais la provenance de l'erreur je ne sais point !

<?
$cnx = mysql_connect('localhost','root','');
mysql_select_db('admin',$cnx);
?>
<HTML>
<HEAD>
<TITLE>Recherche Membre </TITLE>
</HEAD>

<center></center>

<form method="POST" action="rechM.php">
Entrez un mot clé:

<?

if (isset($_POST[\"Mot\"])&&($_POST[\"Mot\"] == \"\")||($_POST[\"Mot\"] == \"%\"))
{
echo \"Veuillez entrer un mot clé s'il vous plaît!\";
}
else
{
$SQL =\"SELECT nomM from membre where nomM LIKE \\"%\".$_POST[\"Mot\"].\"%\\"
OR prenomM LIKE \\"%\".$_POST[\"Mot\"].\"%\\" \";
$res = mysql_query($SQL);

while($val=mysql_fetch_array($res))
{

echo \"----
";
echo $val["idM"];
echo " - ".$val["nomM"];
echo "-".$val["prenomM"];
echo ", \";
}
}
?>
</form>

</center></HTML>
<?
mysql_close();
?>

5 réponses

Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010

Salut

essaye de remplacer select nomM par select *... Tu sélectionnes un champ et tu lui demande de t'en afficher 3...

Si ça ne marche pas je regarderai plus profond...

Flo
Messages postés
24
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
28 août 2008

oui mais la il m'affiche tout les champs alors que je veux qu'il m'affiche seulement le mot que je tape dans la textbox,

sinon il me dit toujours que Mot n'est pas définit

--=Ak=-
Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010

Salut

Perso je rajoute toujours un truc en début de mes pages :

$mot = !isset($_POST['mot']) ? '' : $_POST['mot'];

et ensuite tu utilises que $mot.

C'est un truc que j'avais vu dans un script : ça évites les erreurs E_NOTICE... à voir

Flo
Messages postés
954
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
11 novembre 2008
2
Salut,

1) Ecrit correctement ton code html c'est mieux !!!

2) <? c'est pas super donc <?php

Voici le code modifié :

<?php

if(!IsSet($_POST['Mot'])){$_POST['Mot'] = NULL;}

$cnx = mysql_connect('localhost','root','');

mysql_select_db('admin',$cnx);

?>

<!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" xml:lang="fr" lang="fr"><head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css" media="screen">

body {

font-family: comic sans ms, arial;

background-image: url(image/surfseul.gif);

}

.center {

text-align: center;

}

</style>

<title>Recherche Membre</title></head>









<form method="POST" action="rechM.php">

Entrez un mot clé:










<?php

if(isset($_POST['Mot']) && ($_POST['Mot'] == '') || ($_POST['Mot'] == '%')){

echo 'Veuillez entrer un mot clé s\'il vous plaît!
';

}else{

$SQL = 'SELECT nomM from membre where nomM LIKE
\'%'.$_POST['Mot'].'%\'OR prenomM LIKE \'%'.$_POST['Mot'].'%\' ';

$res = mysql_query($SQL);

while($val=mysql_fetch_array($res)){

echo '----
'

,$val['idM']

,' - ',$val['nomM']

,'-',$val['prenomM']

,', ';

}

}

echo '
',"\n",'</html>';

mysql_close();

?>


Immortal-PC,
téléchargements,astuces ,entre-aide informatique , conseils pour vos problèmes d'ordi.
Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010

Je renviens à ce que tu me dis :

$SQL = 'SELECT nomM from membre where nomM LIKE "%'.$_POST["Mot"].'%" OR prenomM LIKE "%'.$_POST["Mot"].'%"';
// Utilise des simple quotes ça évites les ""

Si tu suis ce que je t'ai marqué juste avant ça te donne
$sql = 'select idM, nomM, prenomM from membre where nomN like "%'.$mot.'%" or prenomM like "%'.$mot.'%"';
plus lisible à mon sens.

$res = mysql_query($SQL); // Pas de problème

while($val=mysql_fetch_array($res))
{
$ligne = '<tr><td>';
$ligne .= $val['idM'];
//Données dans le SELECT
$ligne .= ' - '. $val['nomM']; //id
$ligne .= ' - '. $val['prenomM']; //id
$ligne .= '</td></tr>';

echo $ligne; //Un seul echo c'est plus lisible non ?
}

La à mon sens tu ne dois plus avoir de probléme.

Flo