pb lors d'une recherche avec champs texte

pb lors d'une recherche avec champs texte - PHP - Programmation

Marsh Posté le 21-07-2005 à 16:59:35    

voilà ayant un peu de temps aujourd'hui. J'ai voulu regarder un peu les recherche sql effectuées par une saisie dans un champ texte
voici mon code:
 
<?php
mysql_connect("localhost", "root" );
mysql_select_db("catal" );
$reponse = mysql_query("SELECT * FROM catalogue WHERE Catégorie='$_POST[Catégorie]'" );
 
 
$cpt = 0 ;
while ( $donnees = mysql_fetch_array($reponse) ) {
 
$reference=$donnees['Reférence'];
 
?>
<TR Height=100>
<TD ALIGN=CENTER width=75><?php echo $donnees['Reférence']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Catégorie']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Marque']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Référence Marque']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Désignation']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo '<img src="'.$donnees['photo'].'">'; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo' <A HREF="commande3.php?reference='.$reference.'">commander</A>'; ?> </TD>
 
<?php
$cpt++ ; // On compte le nombre de lignes
}
 
if ( $cpt == 0 ) { echo "il n'y a aucune réponse à votre demande"; }
 
 
mysql_close();
?>
 
 
après j'ai voulu faire une recherche avec la possibilité d'avoir un deuxième critère, j'ai donc remplacé : $reponse = mysql_query("SELECT * FROM catalogue WHERE Catégorie='$_POST[Catégorie]'" );
 
par : $reponse = mysql_query("SELECT * FROM catalogue WHERE Catégorie='$_POST[Catégorie]'and Marque='$_POST[Marque]'" );
 
ça marche plutôt bien, evidement j'ai quand même un pb sinon je n'aurai pas l'occasion d'écrire maintenant  :D  
tout d'abord si j'écris rien dans le champ j'aimerai pouvoir le détecter pour annoncer qu'il faut remplir le champ ça j'ai trouvé, j'ai rajouté juste avant :
if ( $cpt == 0 ) { echo "il n'y a aucune réponse à votre demande"; }
j'ai mis ça c'est évidemment la ligne 53 de mon code!:
if (empty($_POST[Catégorie])) { echo"veuillez entrez une référence";}
 
j'obtiens alors cela quand je ne rempli pas le champ:
Notice: Use of undefined constant Catégorie - assumed 'Catégorie' in c:\documents and settings\alb\mes documents\testsphp\essaiforumfinal.php on line 53
veuillez entrez une référenceil n'y a aucune réponse à votre demande
 
comment faire disparapitre ce vilain message ?
 
 
 
reste mon deuxième problème la recherche multicritère je sais pas si ça se dit!
si on rentre correctement les deux critèrs ça marche impek mais si on en rentre qu'un sur deux comment faire ! Dans le même esprit toujours aussi fin j'ai tenté un
truc du genre  
$reponse = mysql_query("SELECT * FROM catalogue WHERE  Catégorie='$_POST[Catégorie]' and if (empty($_POST[Marque])) {Marque='$_POST[Marque]'" ) ;
 
le message d'insulte est le suivant Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\alb\mes documents\testsphp\essaiforum4final.php on line 35
 
Notice: Use of undefined constant Catégorie - assumed 'Catégorie' in c:\documents and settings\alb\mes documents\stage\testsphp\essaiforum4final.php on line 53
il n'y a aucune réponse à votre demande (ça c'est la même on connait)
Merci d'avance  
 
edit: le script final
 
<CENTER> <TABLE BORDER=2>
 
 
 
<?php
mysql_connect("localhost", "root" );
mysql_select_db("catal" );
$reponse = mysql_query("SELECT * FROM catalogue WHERE  Catégorie='$_POST[Catégorie]' and if (empty($_POST[Marque])) {Marque='$_POST[Marque]'}" ) ;
 
 
$cpt = 0 ;
while ( $donnees = mysql_fetch_array($reponse) ) {   //ici première erreur ligne 35
 
$reference=$donnees['Reférence'];
 
?>
<TR Height=100>
<TD ALIGN=CENTER width=75><?php echo $donnees['Reférence']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Catégorie']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Marque']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Référence Marque']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo $donnees['Désignation']; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo '<img src="'.$donnees['photo'].'">'; ?> </TD>
<TD ALIGN=CENTER width=75><?php echo' <A HREF="commande3.php?reference='.$reference.'">commander</A>'; ?> </TD>
 
<?php
$cpt++ ; // On compte le nombre de lignes
}
 
if (empty($_POST[Catégorie])) { echo"veuillez entrez une référence";}   //ici ligne 53 l'erreur NOTICE
 
if ( $cpt == 0 ) { echo "il n'y a aucune réponse à votre demande"; }
 
if ($cpt!=0) { echo "veuillez retenir la référence (colone de gauche) pour commander à la page suivante";}
 
mysql_close();
?>
 
</TABLE> </CENTER>


Message édité par Mac_Fly37 le 21-07-2005 à 17:16:17
Reply

Marsh Posté le 21-07-2005 à 16:59:35   

Reply

Marsh Posté le 21-07-2005 à 17:01:38    

S'il en manque un sur deux, bah suffit de faire une requête avec un seul.
 
Hésite pas à réfléchir un peu plus sur le problème :D Et à apprendre PHP, parce que les messages d'erreurs sont vraiment bidons ;)

Reply

Marsh Posté le 21-07-2005 à 17:49:08    

merci tu as raison dès fois faut mieux réfléchir deux secondes avant de poser sa question. C'est bon j'ai trouvé.
Sinon pour le fait d'apprendre php c'est effectivement ce que je suis en train de faire quand j'ai un peu de temps libre dans mon stage ;)


Message édité par Mac_Fly37 le 21-07-2005 à 17:49:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed