Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

php. variables et requete

11 réponses
Avatar
alainL
Bonjour,
J'ai une erreur de syntaxe dans une requête et je ne vois pas où ? type
de variable ?? c'est survenu quand j'ai voulu ajouter et tester un
champ int dans ma table.
Voilà une partie du code :
_______________________________________________________________________________________________________
Le formulaire contient des select (qui eux fonctionnent) et un input
pour entrer ce qui sera un entier
________________________________________________________________________________________________________
le traitement passe les variables (ça aussi ça marchait qd il n'y avait
pas le text nb_petales que je change en entier avec intval...
<?
$fleur = $_POST['fleur'];
$bois = $_POST['bois'];
$nervures = $_POST['nervures'];
$nbpetales = $_POST['nb_petales']; # <---------------- ???
$nb_petales=intval($nbpetales); # <---------------- ???
$petales = $_POST['petales'];
$corolle = $_POST['corolle'];
$couleur = $_POST['couleur'];
$lumiere = $_POST['lumiere'];
$terrain = $_POST['terrain'];
$altitude = $_POST['altitude'];
print ("Critères retenus : ");
print("$fleur + $bois + feuilles : $nervures + $nb_petales pétales +
pétales : $petales $corolle + $couleur + terrain : $lumiere, $terrain,
$altitude") ;
echo '<br>';

# jusque là, le progr marche et affiche ce que je demande, y compris
nb_petales...

//connexion table
$db=mysql_connect('localhost','root','');
mysql_select_db('floresoule',$db);
$sql = "SELECT nom, lien, vignette, fleur, bois, nervures, petales_min,
petales_max, petales, corolle, couleur, lumiere, terrain, altitude FROM
floresoule2 WHERE fleur like '%$fleur%' and bois like '%$bois%' and
'petales_min'<=%nb_petales% and 'petales_max'>=%nb_petales% and nervures
like '%$nervures%' and petales like '%$petales%' and corolle like
'%$corolle%' and couleur like '%$couleur%' and lumiere like '%$lumiere%'
and terrain like '%$terrain%' and altitude like '%$altitude%' ORDER BY nom";
$req = mysql_query($sql) or die('Erreur
SQL!<br>'.$sql.'<br>'.mysql_error());
$total=mysql_num_rows($req);

# j'ai donc ajouté à cette requête la condition nb_petales doit être
entre petales_min et petales_max (champs déclarés et renseignés) comme
entiers dans la table
__________________________________________________________________________________________________

et voilà le résultat :_((( :



Critères retenus : grandes fleurs + non_ligneuse + feuilles : simples +
5 pétales + pétales : différents % + % + terrain : %, %, % ## ça
c'est bon
Erreur SQL!
SELECT nom, lien, vignette, fleur, bois, nervures, petales_min,
petales_max, petales, corolle, couleur, lumiere, terrain, altitude FROM
floresoule2 WHERE fleur like '%grandes fleurs%' and bois like
'%non_ligneuse%' and 'petales_min'<=%nb_petales% and
'petales_max'>=%nb_petales% and nervures like '%simples%' and petales
like '%différents%' and corolle like '%%%' and couleur like '%%%' and
lumiere like '%%%' and terrain like '%%%' and altitude like '%%%' ORDER
BY nom
Erreur de syntaxe près de '%nb_petales% and 'petales_max'>=%nb_petales%
and nervures like '' à la ligne 1
___________________________________________________________________________________________________

Merci pour vos conseils !

--
Alain L

1 réponse

1 2
Avatar
alainL
SAM a écrit :
..................;
or tu avais écrit :
and petales_min <= $nb_petales
and petales_max >= $nb_petales

ce qui semble bien exact

du moins pour ce qui est de l'ordre de la recherche
reste à savoir si on écrit: >= ou => ?




Mysql (4.0.15) m'a renvoyé une erreur de syntaxe lorsque je lui ai
proposé => et =<

...........
Comment est censé fonctionner :
and terrain like '%$terrain%'
si terrain n'a pas été renseigné ?
Je vois que dans ce cas le formulaire renvoie '%'
Est-ce suffisant pour satisfaire le choix de n'importe quel terrain ?



Dans le form pour chq select :
<option value="%" selected="selected">pas de réponse</option>

Lorsqu'un champ n'est pas renseigné, il est considéré comme 'vrai' . Si
l'utilisateur n'est pas en mesure de renseigner l'exposition, toutes les
fleurs répondant aux autres critères sortiront quelle que soit
l'exposition.

--
Alain L

Mon village en Haute Soule : http://jarailet.club.fr
Carnet de voyages: http://jarailet.club.fr/Randobal
1 2