Erreur PHP

Résolu/Fermé
Romain44 - 31 mai 2009 à 17:01
 Utilisateur anonyme - 2 juin 2009 à 07:51
Bonjour à tous, j'ai un problème assez gênant ! Le voici, j'ai crée une base de donnée SQL sur phpmyadmin, ensuite une page php avec ajouter, supprimer client ect... tout fonctionne. Mais le problème vient de la fonction rechercher, quand j'exécute la recherche il me marque 2 erreur que voici :

Notice: Undefined index: in C:\wamp\www\test\rechercher.php on line 12

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\test\rechercher.php on line 37

Je n'arrive pas à trouver la solution à mon problème, donc je fait appel à vous et si quelqu'un peut m'aider cela serait très gentil.

Voici mon code :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recherche contact</title>
</head>

<body>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");

$rech=$_POST['']; <<< LIGNE 16

$sql= "SELECT * FROM news WHERE nom OR Remarque OR prenom or societe or ville or couriel or activite or web LIKE '%$rech%'";

$req = mysql_query($sql) ;

?>

<table width="96%" height="153" align="center">


<tr>
<td>id</td>
<td>Societe</td>
<td >nom</td>
<td >prenom</td>
<td>Telephone</td>
<td>Adresse</td>
<td>Couriel</td>
<td>Ville</td>
<td>remarque</td>
</tr>


<?php
while ($data = mysql_fetch_array($req)) <<< LIGNE 37
{?>
<tr>

<td><?php echo $data['id']; ?></td>
<td><?php echo $data['societe']; ?></td>
<td><?php echo $data['activite']; ?></td>
<td><?php echo $data['nom']; ?></td>
<td><?php echo $data['prenom']; ?></td>
<td><?php echo $data['telephone']; ?></td>
<td><?php echo $data['adresse']; ?></td>
<td><?php echo $data['couriel']; ?></td>
<td><?php echo $data['ville']; ?></td>
<td><?php echo $data['remarque']; ?></td>
</tr>
<?php }
?>

</table>
</body>
</html>

Je vous remercie d'avance.

18 réponses

Bonjour

$rech=$_POST[''];
Cette ligne ne veut rien dire, tu devrais avoir un nom de champ de formulaire entre les ''.


$sql= "SELECT * FROM news WHERE nom OR Remarque OR prenom or societe or ville or couriel or activite or web LIKE '%$rech%'";
le OR en mysql est un ou logique, c'est à dire qu'il doit être entre deux booleens. Or tes champs ne sont sûrement pas tous de booleens, donc nom OR Remarque OR prenom etc... n'est pas correct
Par contre nom LIKE LIKE '%$rech%' est un booleen (c'est vrai ou faux, prenom LIKE '%$rech%' est aussi un booleen etc...
Donc la syntaxe correcte est
$sql= "SELECT * FROM news WHERE nom LIKE '%$rech%' OR Remarque LIKE '%$rech%' OR prenom LIKE '%$rech%' or societe LIKE '%$rech%' or ville LIKE '%$rech%' or couriel LIKE '%$rech%' or activite LIKE '%$rech%' or web LIKE '%$rech%'";
0
Je te remercie de ta réponse, j'ai suivis tes conseils mais en vain :(. Il me marque toujours les memes erreurs.
Je ne comprends pas ce que tu veux dire par un nom de champ de formulaire ( désolé je suis débutant )
0
$req = mysql_query($sql) or die (mysql_error()); pour afficher l'erreur qu'il y a
0
Utilisateur anonyme
1 juin 2009 à 10:31
Bonjour,

Je vais peut etre dire une connerie mais je l'aurais plutot fait comme ça :

<?php
$clause = '';
if (isset($_REQUEST['motclef'])) {
$clause .= " WHERE INSTR(nom,'".$_REQUEST['motclef']."')";
$clause .= "OR INSTR(remarque,'".$_REQUEST['motclef']."')";
etc sur tes valeur à fouiller
}

$sql = "SELECT * FROM nom_de_table ".$clause;
$resultat = mysql_query ($sql);

while ($data = mysql_fetch_array ($resultat))
{
bla bla bla
}

0
Ça n'est pas une connerie (sauf qu'il manque un espace avant le OR) mais pourquoi bouleverser la requête de Romain44 ? Le but n'est pas de proposer toutes les variantes possibles, mais de faire marcher sa requête, dans la mesure où elle n'est pas trop loin de la vérité. Et elle n'en est pas trop loin.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je ne comprends pas ce que tu veux dire par un nom de champ de formulaire
Je n'avais pas compris ce que voulait dire cette remarque, je viens de comprendre. Ça concerne le $rech=$_POST[''];
Ce que je disais c'est que $_POST[''] ne veut rien dire, ça doit être $_POST['nom'] si le nom du champ de formulaire est 'nom', $_POST['toto'] si le champ de formulaire s'appelle 'toto', etc...
Le nom du champ de formulaire, c'est la valeur de l'attribut name dans la balise input du formulaire :
<input type="text" name="toto" />
0
Utilisateur anonyme
1 juin 2009 à 10:55
Simplement pcq le PHP et moi.... mais comme je l'avais fait tel quel pour le taf (et dsl pour l'espace), je lui ai juste suggéré une solution fonctionnelle ...
0
Merci de vos réponses, cela est très gentil de votre part mais j'ai toujours un problème cette fois ligne 20 ( Parse error: parse error in C:\wamp\www\test\rechercher.php on line 20 ). Je ne comprends pas la source de l'erreur.
Je vous remets le code que j'ai un peu modifié. J'ai abandonné l'idée de faire une recherche sur tout les champs, je me suis consacré seulement au champ "activité".

<body>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");

$rech=$_POST['activite'];

$sql= "SELECT * FROM news WHERE activite LIKE '%$rech%';

$req = mysql_query($sql) ;

?>

<table width="96%" align="center"> ligne 20

<tr>
<td>Societe</td>
<td >nom</td>
<td >prenom</td>
<td>Telephone</td>
<td>Adresse</td>
<td>Couriel</td>
<td>Ville</td>
<td>remarque</td>
</tr>


<?php
while ($data = mysql_fetch_array($req))
{?>
<tr>


<td><?php echo $data['societe']; ?></td>
<td><?php echo $data['activite']; ?></td>
<td><?php echo $data['nom']; ?></td>
<td><?php echo $data['prenom']; ?></td>
<td><?php echo $data['telephone']; ?></td>
<td><?php echo $data['adresse']; ?></td>
<td><?php echo $data['couriel']; ?></td>
<td><?php echo $data['ville']; ?></td>
<td><?php echo $data['remarque']; ?></td>
</tr>
<?php }
?>
</table>
</body>
</html>

Merci si vous voulez encore une fois m'aider. :)
0
Utilisateur anonyme
1 juin 2009 à 19:03
$sql= "SELECT * FROM news WHERE activite LIKE '%$rech%';

plutot

$sql= "SELECT * FROM news WHERE activite LIKE '%$rech%'"; non ?
0
Utilisateur anonyme
1 juin 2009 à 19:05
Mais je trouve dommage que tu ais abandonné ta fonction de recherche....
0
oui moi aussi mais j'ai beau essayer, je ne trouves pas la solution.
J'ai essayé ce que tu m'a dis cela rajouté deux erreurs :s :

Notice: Undefined index: activite in C:\wamp\www\test\rechercher.php on line 12

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\test\rechercher.php on line 35
0
Utilisateur anonyme
1 juin 2009 à 20:45
Quand j'ai ton erreur de mysql_fetch_array : c'est que je me suis planté de nom de table :)
0
Pourtant c'est bien ça ! J'en ai marre :'(
0
Utilisateur anonyme
1 juin 2009 à 20:58
J'avoue sécher dsl .... Si le père passe par là.. il devrait pouvoir t'aider
0
Notice: Undefined index: activite in C:\wamp\www\test\rechercher.php on line 12
Si tu as cette erreur, c'est qu'il n'y a pas de champ activite dans ton formulaire. Peux-tu montrer le code du formulaire ?
0
Le code est :

<div id ="choix"> Entrez ici votre recherche :<br />
<form method="post" action="rechercher.php">
<input type="text name="recherche" />
<input type="submit" value="rechercher" />
</form>
</div></td>

Voila il n'y a que ça, c'est un bout de code dans l'index.

Desolé si je n'ai pas le langage technique, je viens de commencer le html et php.
0
1 -
<input type="text name="recherche" />
il te manque un "
<input type="text" name="recherche" />

2 - Si le champ qui sert à la recherche s'appelle "recherche", la variable correspondante dans le script PHP est $_POST['recherche'], pas $_POST['activite']. Je croyais l'avoir expliqué dans le message 6. Pourquoi elle s'appellerait $_POST['activite'] plutôt que $_POST['tartampion'] ?
0
Merci le pere, j'ai avancé grace à toi mais de nouveau un problème lol, j'en ai pas fini ^^. J'avais mis activite car je voulais qu'il sélectionne dans activité mais j'avais tout faux.
0
de nouveau un problème lol
Quel problème ? (avec message d'erreur s'il y en a un )
0
lol je t'ai fais un imprim ecran cela parlera mieux

https://imageshack.com/

J'ai donc tapé dans la zone de texte de recherche >>> habitat. Il m'affiche comme tu peux le voir tout les activités habitat mais la colonne habitat n'y est pas, il le met dans nom et apres il y a les messages d'erreur. On approche du but :D.
0
D'après les messages, tu n'as pas de champs adresse, couriel, ville et remarque dans ta table.
Si tu crois qu'ils existent, vérifie bien l'orthographe des noms de champs : adresse ou Adresse ? etc...
0
J'avais oublié les majuscules :D ( quel boulet ). Le dernier probleme ( enfin j'espere pour toi et moi ^^ ), il ne m'affiche pas la colonne activité et du coup il y a un decalage. Il m'affiche l'activité dans la colonne nom :
Voici l'imprim : http://img46.imageshack.us/img46/4760/sanstitreddj.jpg
0
Mais si il t'affiche la colonne activité. Ce qu'il n'affiche pas, c'est le TITRE activité, normal, tu ne l'as pas mis. Tu n'as qu'à le rajouter
Bonne nuit
0
Ca fonctionne enfin :D :D, le père, je te remercie de ta patience, gentillesse et de ton savoir.

MERCI
0
De rien, au plaisir
(en retard, mais j'étais parti me coucher, tu comprends, à mon âge...)
0
Utilisateur anonyme
2 juin 2009 à 07:51
Te bile pas, j'suis plus jeune et j'étais déjà couché ..
0