une requête qui varie en fonction des checkbox

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : une requête qui varie en fonction des checkbox

Re: une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 23:46

Oui c'était ça, je ne t'avais pas compris, mais bon.
Dans la mesure ou la variable est entre apostrophes c'est considéré comme un string et donc il ne la considère surement pas comme deux valeurs séparées par une virgule.

Enfin j'imagine que ça doit être ça ou à peu près.

Merci en tout cas.

Il ne me reste plus qu'à coder l'édition des poules pour la compet .

Et si jamais un jour on a à nouveau le droit de faire du judo j'aurai un outil pour la compet de mon club

Re: une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 23:42

Yes c'était les apostrophes
ne fonctionne pas
 $query ="SELECT * from judo where annee in ('$annee') AND genre = '$genre'";
et là ça fonctionne
 $query ="SELECT * from judo where annee in ($annee) AND genre = '$genre'";

Re: une requête qui varie en fonction des checkbox

par or 1 » 10 avr. 2021, 23:39

SELECT * from judo where annee in ('2011,2012') AND genre = 'G'
il n'y a qu'une valeur pour le in, pas deux.

Re: une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 23:37

ben non le $annee quand je le echo il a bien plusieurs valeurs separees d'une virgule
le print_r du post ==> Array ( [annee] => Array ( [0] => 2011 [1] => 2012 ) [genre] => G )
Warning: Invalid argument supplied for foreach() in /home/lesfigueci/www/Judo/choix.php on line 38

le echo de $annee ==> 2011,2012
Après oui j'ai une erreur sur le Foreach mais bon ...
et je echo mon query j'ai ça
SELECT * from judo where annee in ('2011,2012') AND genre = 'G'

Re: une requête qui varie en fonction des checkbox

par or 1 » 10 avr. 2021, 23:19

https://www.mysqltutorial.org/sql-in.aspx/
"Separate the values in the list by commas (,)."
il n'y a qu'une valeur dans la requête finale pour le in, d'où le résultat différent de celui attendu.

Re: une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 23:13

$annee=null;
	foreach ($_POST as $v){
		foreach ($v as $val) {
			if (!$annee) $annee=$annee.$val;
			else $annee=$annee.','.$val;
			}
	}
	echo '<br/>'.$annee;
	if (isset($_POST['genre'])) $genre=$_POST["genre"];
	
	if (isset($_POST['genre'])){
		$query ="SELECT * from judo where annee in ('$annee') AND genre = '$genre'";
la ça marche j'ai bien mes années 2012,2013 par exemple bon il m'affiche que les 2012 mais si il le faut c'est SQL qui ne sait pas faire

Re: une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 22:54

echo'<input type="checkbox" value="'.$rowAll[$i]['annee'].'" id="annee" name="annee[]"> '.$rowAll[$i]['annee'].'<br/>';
...
...
foreach ($_POST as $v){
		foreach ($v as $val) $annee=$annee.$val.',';}
...
...
$query ="SELECT * from judo where annee in ('$annee') AND genre = '$genre'";
je m'y approche là dans ma variable année j'ai bien mes années voulues avec une virgule en trop à la fin et du coup il n'affiche pas correctement les données désirées.

une requête qui varie en fonction des checkbox

par Figuedi » 10 avr. 2021, 22:31

Bonjour,

je propose de cocher les différentes tranches d'ages présent dans ma BDD de choisir le genre et je voudrais qu'il affiche la liste que j'ordonnerais après en fonction des différents critères mais je ne réussis pas a trouver un moyen de prendre en compte le fait qu'il choisisse une ou plusieurs années de naissance.
sauriez vous m'indique la voix ?
$query ="SELECT DISTINCT annee from judo";
try {
	$pdo_select = $pdo->prepare($query);
	$pdo_select->execute();
	$NbreData = $pdo_select->rowCount();
	$rowAll = $pdo_select->fetchAll();
}catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
<form action="" method="POST">
		<?php
			for($i=0;$i<$NbreData;$i++){
				echo'<input type="checkbox" name="annee'.$i.'"> '.$rowAll[$i]['annee'].'<br/>';
				}
			?>
			<input type="radio" value="G" id="genre" name="genre" > Garçon <br/>
			<input type="radio" value="F" id="genre" name="genre" > Fille <br/>
		<input type="submit" id="choix">
	</form>
	if (isset($_POST['annee0']))$annee=$annee.$_POST['annee0'].',';
	if (isset($_POST['annee1']))$annee=$annee.$_POST['annee1'].',';
	if (isset($_POST['annee2']))$annee=$annee.$_POST['annee2'].',';
	if (isset($_POST['annee3']))$annee=$annee.$_POST['annee3'].',';
	if (isset($_POST['annee4']))$annee=$annee.$_POST['annee4'].',';
	if (isset($_POST['annee5']))$annee=$annee.$_POST['annee5'].',';
	if (isset($_POST['annee6']))$annee=$annee.$_POST['annee6'].',';
	if (isset($_POST['genre'])) $genre=$_POST["genre"];
	
	if (isset($_POST['genre'])){
		$query ="SELECT * from judo where annee in ('$annee') AND genre = '$genre'";