Se connecter avec
S'enregistrer | Connectez-vous

[PHP] Problème de variables, d'array, et de formulaires

Dernière réponse : dans Programmation

Bonsoir à tous,

J'ai un petit soucis sur le traitement d'un gros formulaire.
J'explique simplement : 30 cases à cocher. On fait ok.
Si la case est coché, ca affiche un second formulaire (donc dans une seconde page, qui traite le premier formulaire).
Vu le nombre de checkbox, j'ai décidé de faire un boucle.

Exemple du traitement des check box :
Citation :

//On regarde si les checkbox sont cochés, si oui on prépare une //variable contenant ce qui devra rentrer dans l'array

$compta30=$_POST['compta30'];
if (!empty($compta30))
{$compta30='"Comptabilité 30" => "compta30" ';}
else {$compta30='';}
$gescom30=$_POST['gescom30'];
if (!empty($gescom30))
{$gescom30='"Gestion commerciale 30" => "gescom30" ';}
else {$gescom30='';}

//On fait la variable tableau

$produits = array(
$compta30.',
'.$gescom30);

//On fait la boucle pour ressortir le formulaire :

foreach ($produits AS $nom => $nom_var)
{
echo '
<tr>
<td>
'.$nom.'<br />
<select name="'.$nom_var.'">
<option value="sql_sage">SQL Sage</option>
<option value="proprio">BDD Propriétaire</option>
<option value="sql_serveur" selected="selected">SQL Serveur</option>
<option value="oracle">Oracle</option>
</select>
</td>
</tr>';
}


Maintenant mon problème : ca me renvoit (si je coche les deux cases) ceci :
Citation :
0
[la liste déroulante]
Lassé par la pub ? Créez un compte

je suppose qu'avec les "=>" tu veux faire clé => valeur comme pour un tableau, or, tu entoures par des '', ca donne donc des chaines de caractère.

et le tableau au final ne contient qu'un seul élément qui est la chaine de caractère complère.


pour la boucle, je suppose que le but est d'avoir autant d'éléments dans la liste déroulante que dans le tableau, or tu inclues "<select/>" dans la boucle, tu crée donc autant de liste déroulante que d'éléments dans le tableau.

Pour la boucle, non c'est bien ce que j'ai fait. Je veux une liste déroulante pour chaque case coché.

Et j'ai trouvé le problème, ce n'est pas la chène de caractère. On peut faire un tableau avec des chaines de caractère (vu sur le site du zéro).
En fait quand je lui donne la variable, au lieu de la lire, puis de considérer ce qu'il y a a l'intérieur, il ne voit que la variable. Donc il fait un tableau numéroté avec la liste des variables. D'où le "0" quand j'affiche le coté gauche du tableau (les clés, je sais je parle en terme d'impie ^^).

Voilà, j'ai mis la journée à trouver ca... merci quand même :) 

Trigium a dit :

Et j'ai trouvé le problème, ce n'est pas la chène de caractère. On peut faire un tableau avec des chaines de caractère (vu sur le site du zéro).

le chêne n'a rien à voir la dedans et je sais qu'on peut faire des tableaux avec des chaines de caractères, mais il y a une différence notable entre:
  1. $tab = array ("clé1 => valeur1, clé2 => valeur2");

qui donnera un tableau à un seul élément qui sera:
$tab[0] contiendra "clé1 => valeur1, clé2 => valeur2"
et
  1. $tab = array ("clé1" => "valeur1", "clé2" => "valeur2");

qui donnera un tableau à 2 éléments:
$tab["clé1"] contiendra "valeur1"
$tab["clé2"] contiendra "valeur2"
Trigium a dit :

merci quand même :) 

de rien

Oui oui je comprends ce que tu veux dire, mais la variable que je donnais pour le tableau contenait : "Comptabilité 30" => "compta30"
Donc je pensais que ca ferai un tableau associatif.
Mais non comme je donne une variable il voit pas que y'a deux chaines dedans ^^

Trigium a dit :

Mais non comme je donne une variable il voit pas que y'a deux chaines dedans ^^

c'est pas qu'il ne voit pas, tout langage a des règles, l'une de ces règles est qu'une chaine de caractère peut etre entouré par des " ou par des '
tu assignes à une variable ' "toto" => "machin" '
du fait des ', ca fait une chaine de caractère
après, on peut inventer des choses, mais c'est plus du php :p 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde