Warning sur liste select multiple

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 : Warning sur liste select multiple

par AB » 18 nov. 2008, 21:19

Merci .
En fait la variable est déclarée implicitement dans le select puisque la liste lui affecte des valeurs.

J'ai trouvé la solution.
Le warning venait effectivement du fait que je manipulais un tableau "caché" dans un select.
La solution est de rajouter le code ci après pour afficher correctement la récupération des valeurs SANS avoir un message warning.
if(isset($_POST['variables']) && !empty($_POST['variables'])){
	$Col1_Array = $_POST['variables'];
        foreach($Col1_Array as $univers){
                echo $univers."<br>";
:P :P
En effet par mesure de sécurité, avec php5 on travaille avec register_global désactivé. Il faut donc toujours vérifier les variables provenant de l'extérieur.

Sinon pour info tu pourrais simplifier ton code car si !empty($_POST['variables']) est vrai alors nécessairement isset($_POST['variables']) le sera également.
Donc if(!empty($_POST['variables'])) est suffisant :wink:

par Alain78 » 18 nov. 2008, 20:48

Merci .
En fait la variable est déclarée implicitement dans le select puisque la liste lui affecte des valeurs.

J'ai trouvé la solution.
Le warning venait effectivement du fait que je manipulais un tableau "caché" dans un select.
La solution est de rajouter le code ci après pour afficher correctement la récupération des valeurs SANS avoir un message warning.
if(isset($_POST['variables']) && !empty($_POST['variables'])){
	$Col1_Array = $_POST['variables'];
        foreach($Col1_Array as $univers){
                echo $univers."<br>";
:P :P

par Hywan » 18 nov. 2008, 20:42

Hey :),

Où est déclarée ta variable $variables ? Il semblerait que ce ne soit pas un tableau.

Warning sur liste select multiple

par Alain78 » 18 nov. 2008, 19:55

J'ai une liste avec choix multiple.
Je récupère les valeurs sélectionnées par le user dans un tableau variables[] que je lis ensuite dans une boucle foreach

Le problème est qu'avant la sélection par le user un warning m'est affiché :
Warning: Invalid argument supplied for foreach() in droits_univers.php on line XXX

et pourtant lorsque le user a validé sa sélection le message disparait et les valeurs sélectionnées sont bien affichées.
Voici le code (extrait).

Trouvez vous le pourquoi du warning ?
echo "<select name='variables[]' size='3' multiple='multiple' >";
   	while ($row = mysql_fetch_assoc($resultat)) {
 		if ($valeur_init == $row["ref_univers"]) {
			echo "<option value=" . $row['ref_univers'] ." selected=\"selected\">" . $row['nom_univers'] . "</option>"; 
          	}else{
			echo "<option value=" . $row['ref_univers'] .">" . $row['nom_univers'] . "</option>"; 
        	}
	}
 echo '</select>';

foreach($variables as $univers) {
echo $univers.'<br/>';
}					

:oops: :oops: