Petit problème php et requete sql
Résolu/Fermé
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
-
20 mai 2010 à 00:29
zemzoum89 Messages postés 543 Date d'inscription mercredi 3 décembre 2008 Statut Membre Dernière intervention 11 novembre 2012 - 25 mai 2010 à 19:22
zemzoum89 Messages postés 543 Date d'inscription mercredi 3 décembre 2008 Statut Membre Dernière intervention 11 novembre 2012 - 25 mai 2010 à 19:22
A voir également:
- Petit problème php et requete sql
- Easy php - Télécharger - Divers Web & Internet
- Petit 3 ✓ - Forum Word
- Symbole des mètre cubes ✓ - Forum Word
- Excel trier du plus grand au plus petit - Guide
- Petit 2 ✓ - Forum Bureautique
5 réponses
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
20 mai 2010 à 00:31
20 mai 2010 à 00:31
on ma proposé cette solution mais elle n'a pas fonctionné:
tout en sachant que le champ nb_etoiles est un entier...
<form action="" method="post"> <input type="checkbox" name="nb_etoiles[]" value="1" />1 étoiles <input type="checkbox" name="nb_etoiles[]" value="2" />2 étoiles <input type="checkbox" name="nb_etoiles[]" value="3" />3 étoiles <input type="submit" /> </form>
<?php foreach($_POST['nb_etoiles'] AS $val) if (ctype_digit($val)) exit($val.' n\'est pas un entier valide'); $etoiles = implode(',', $_POST['nb_etoiles']); $req = 'SELECT cols FROM tables WHERE nb_etoiles IN ('.$etoiles.')';
tout en sachant que le champ nb_etoiles est un entier...
josh64
Messages postés
56
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
18 janvier 2013
1
20 mai 2010 à 10:26
20 mai 2010 à 10:26
Tiens essayes ça :
// ton formulaire
<?php
for ($i=0;$i<3;$i++)
{
echo"
<form action=\"recup.php\" method=\"post\">
1 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"1\" />
2 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"2\" />
3 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"3\" />
<input type=\"submit\" value=\"Valider\" />
</form>
";
}
?>
//Ton recup.php
<?php
$nb_etoiles=$_POST['nb_etoiles']; //tu récupère les valeurs des cases cochées
for ($j=0;$j<3;$j++)
{
if (isset($menu[$j]) )
{
$req = "SELECT cols FROM tables WHERE nb_etoiles='$nb_etoiles[$j]'";
$res=mysql_query($res);
if(!$res)
{
$message = 'Requete req invalide : ' . mysql_error() . "\n";
$message .= 'Requete complete : ' . $query;
die($message);
}
}
}
?>
// ton formulaire
<?php
for ($i=0;$i<3;$i++)
{
echo"
<form action=\"recup.php\" method=\"post\">
1 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"1\" />
2 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"2\" />
3 étoiles <input type=\"checkbox\" name=\"nb_etoiles[$i]\" value=\"3\" />
<input type=\"submit\" value=\"Valider\" />
</form>
";
}
?>
//Ton recup.php
<?php
$nb_etoiles=$_POST['nb_etoiles']; //tu récupère les valeurs des cases cochées
for ($j=0;$j<3;$j++)
{
if (isset($menu[$j]) )
{
$req = "SELECT cols FROM tables WHERE nb_etoiles='$nb_etoiles[$j]'";
$res=mysql_query($res);
if(!$res)
{
$message = 'Requete req invalide : ' . mysql_error() . "\n";
$message .= 'Requete complete : ' . $query;
die($message);
}
}
}
?>
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
20 mai 2010 à 18:49
20 mai 2010 à 18:49
Bonsoioir,
$menu[$j] c'est quoi cette variable au juste vous ne l'avez mentionnée nul part a part dans le if(isset ($menu[$j]))... Merci de m'éclaircir les idées...
$menu[$j] c'est quoi cette variable au juste vous ne l'avez mentionnée nul part a part dans le if(isset ($menu[$j]))... Merci de m'éclaircir les idées...
josh64
Messages postés
56
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
18 janvier 2013
1
21 mai 2010 à 09:11
21 mai 2010 à 09:11
c'est une erreur de ma part ^^
il faut le remplacer par : $nb_etoiles[$j]
il faut le remplacer par : $nb_etoiles[$j]
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
24 mai 2010 à 21:33
24 mai 2010 à 21:33
Merci pour votre aide mais dans ce cas la il va me sortir trois requetes non ?? merci beaucoup de m'aider....
josh64
Messages postés
56
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
18 janvier 2013
1
25 mai 2010 à 10:18
25 mai 2010 à 10:18
non, ce sera en fonction des cases qui seront cochées
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
25 mai 2010 à 12:00
25 mai 2010 à 12:00
oui et si trois cases sont cochées ???? ce code génèrera-il trois requêtes?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 mai 2010 à 14:24
25 mai 2010 à 14:24
seules les cases cochées sont postées, donc une autre solution:
<?php echo" <form action=\"recup.php\" method=\"post\"> 1 étoiles <input type=\"checkbox\" name=\"nb_etoiles[]\" value=\"1\" /> 2 étoiles <input type=\"checkbox\" name=\"nb_etoiles[]\" value=\"2\" /> 3 étoiles <input type=\"checkbox\" name=\"nb_etoiles[]\" value=\"3\" /> <input name=\"submit\" type=\"submit\" value=\"Valider\" /> </form> "; ?> //Ton recup.php <?php $nb_etoiles=$_POST['nb_etoiles']; //tu récupère les valeurs des cases cochées sous forme d'un array for ($j=0;$j<sizeof($nb_etoiles);$j++) { //ainsi on ne fait que les requettes correspondantes au nombre de cases cochées $req = "SELECT cols FROM tables WHERE nb_etoiles='$nb_etoiles[$j]'"; $res=mysql_query($res); if(!$res) { $message = 'Requete req invalide : ' . mysql_error() . "\n"; $message .= 'Requete complete : ' . $query; die($message); }else{ //affichage des resultats } }
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
25 mai 2010 à 15:24
25 mai 2010 à 15:24
Merci beaucoup d'avoir essayé de m'aider,
j'ai trouvé cette solution
if ($_POST['nb_etoiles'] === array())
// la requête sans WHERE
$req = 'SELECT cols FROM tables ;
else
// la requête avec WHERE
$req = 'SELECT cols FROM tables WHERE nb_etoiles IN ('.$etoiles.')';
j'ai trouvé cette solution
if ($_POST['nb_etoiles'] === array())
// la requête sans WHERE
$req = 'SELECT cols FROM tables ;
else
// la requête avec WHERE
$req = 'SELECT cols FROM tables WHERE nb_etoiles IN ('.$etoiles.')';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 mai 2010 à 18:13
25 mai 2010 à 18:13
Humm pas très logique
- quelque soit le nombre de cases cohées si le name des chexkbox est name= "nb_etoiles[]" , avec des crochets[]
tu as dans tous les cas un array
ex: si 3 etoiles seule est cochée tu aura $_POST['nb_etoiles'][0]= 3
- ensuite si tu as 1 étoile et 3 étoiles cochées
la première des tes requettes (celles sans WHERE) te sortira tous les enr donc 1 , 2 ,3 étoiles
- ensuite au lieu de
if ($_POST['nb_etoiles'] === array()) je ferait plutôt
- quelque soit le nombre de cases cohées si le name des chexkbox est name= "nb_etoiles[]" , avec des crochets[]
tu as dans tous les cas un array
ex: si 3 etoiles seule est cochée tu aura $_POST['nb_etoiles'][0]= 3
- ensuite si tu as 1 étoile et 3 étoiles cochées
la première des tes requettes (celles sans WHERE) te sortira tous les enr donc 1 , 2 ,3 étoiles
- ensuite au lieu de
if ($_POST['nb_etoiles'] === array()) je ferait plutôt
if (is_array($_POST['nb_etoiles']))
zemzoum89
Messages postés
543
Date d'inscription
mercredi 3 décembre 2008
Statut
Membre
Dernière intervention
11 novembre 2012
18
25 mai 2010 à 19:22
25 mai 2010 à 19:22
j'ai travaillé avec if ($_POST['nb_etoiles'] == array())
et ca marche tres bien car si je coche 3 et 5 il ne me sortira pas les hotels de catégorie 4... Merci beaucoup pour votre remarque...
et ca marche tres bien car si je coche 3 et 5 il ne me sortira pas les hotels de catégorie 4... Merci beaucoup pour votre remarque...