Problème de transmission de valeur d'un formulaire

BFH
Eléphant du PHP | 214 Messages

10 mai 2005, 09:33

Bonjour, eh oui encore moi comme d'habitude avec un problème passablement ...[censuré]

Je transmet les valeurs d'un formulaire d'une page à une autre en utilisant le "GET".
Lorsque mes champs ont des noms simples tels que :
"P", "Boitier", "Chipset", ...
Je n'ai aucun problème de transmission ni de reception et de traitement. Explication, la formule :
if(isset($_GET["P"]))
{
$P=$_GET["P"];
}

echo $P;
fonctionne parfaitement et je recuprère la bonne valeur de $P

Par contre, lorsque mes champs ont des noms plus complexes du style :
"Réseaux", "PCI/AGP", "périphérique" etc...
Avec la formule precédente :
if(isset($_GET["Réseaux"]))
{
$R=$_GET["Réseaux"];
}

echo $R;
Rien ne se passe, enfin si aucune valeur n'est récupérée!
Comment faire pour récupérer ces valeurs, j'ai essayé avec "POST" au cas où mais là non plus rien!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

10 mai 2005, 09:38

N'utilises pas de caractères spéciaux dans les noms de tes index: pas d'accent, pas d'espace ni caractères tels que / ou \ ou autre du même style.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

10 mai 2005, 10:38

Désolé mais je crois pas avoir le choix!
j'ai une table qui stock des catégories de matériel informatique, d'où les noms "Réseaux", "périphériques", etc ...

Sur une page j'affiche tous ces noms de catégorie :
while($row=mysql_fetch_assoc($result))
{
?>
<TR>
<TD width="10%">&nbsp;</TD>
<TD><font color="#0033CC" ><B> <?=$row["IPage"];?></B></font></TD>
<TD><CENTER><INPUT TYPE=checkbox name=" <?=$row['IPage'];?> " ></CENTER></TD>
<TD width="10%">&nbsp;</TD>
</TR>
<TR>
<TD></TD>
</TR>
<?
}
?>
Je peux toujours changer le name mais bon je voulais que cela soit indexé.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

10 mai 2005, 10:50

N'oublie pas que ce ne sont que des index sans rapport direct avec les noms des champs de ta table: il t'appartient de savoir à quel champ correspond tel index pour récupérer la bonne information. Comme tu dis, tu n'as pas le choix, mais pas dans le sens où tu l'envisages. Il te faut utiliser des noms d'index valides pour que ça fonctionne. Donc si tu envoies un paramètre, son nom peut être "Reseau" mais pas "Réseau", à toi de traduire ce que tu affiches ensuite, mais tu n'affiches pas les index, tu affiches les valeurs.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

10 mai 2005, 10:56

Oui c'est vrai tu as raison, j'ai realisé mon erreur pendant que tu devais ecrire ton post. C'est pour cela que j'ai modifié mon formulaire comme suit:
$i=0;
while($row=mysql_fetch_assoc($result))
{
?>
<TR>
<TD width="10%">&nbsp;</TD>
<TD><font color="#0033CC" ><B> <?=$row["IPage"];?></B></font></TD>
<TD><CENTER><INPUT TYPE=checkbox value="<?=$row['IPage'];?>" name="<?=$i;?>"></CENTER></TD>
<TD width="10%">&nbsp;</TD>
</TR>
<TR>
<TD></TD>
</TR>
<?
$i++;
} 
Par contre pour moi le value="<?=$row['IPage'];?>" c'est le seul moyen que je connais pour savoir si un champs a été séléctionné ou pas
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

10 mai 2005, 11:04

Je ne comprends pas trop le lien entre les paramètres aux noms exotiques que tu envoies et le formulaire en question... :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

10 mai 2005, 11:28

Donc en gros :

_Sur une page je propose une liste de catégorie avec en face un seul bouton type "checkbox", non selectionné par défaut.

_Si on valide un checkbox cela signifie qu'on veut voire apparaitre sur la page suivante le nom de la catégorie avec tous les matériels de la catégorie séléctionnée. Si plusieures catégories sont les catégories et leurs matériels seront présentés les uns à la suite des autres

C'est pour cela que je pense qu'il faut envoyer les noms des catégories pour faire la bonne selection a la page suivante
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

10 mai 2005, 11:35

OUi, ton schéma est logique, ce que je comprends moins, c'est le code que tu nous montres. ce formulaire sert si j'ai à peu près suivi à identifier les produits et à la sélection, tu vas envoyer la valeur de la case cochée, c'est bien ça ?
Cette valeur doit en principe correspondre à l'identifiant d'un produit qui va te servir pour la requête sur la page suivante.

Donc la première chose, c'est que l'attribut name de la balise checkbox n'a pas besoin d'un nom dynamique sinon tu pourras cocher toutes les cases: donc choisis un seul nom name="id_prod" par exemple et sur la page suivante, tu récupère ce paramètre que tu utilises dans ta requête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

10 mai 2005, 11:46

Bin justement,
je dois pouvoir cocher toutes les cases ou juste une ou un nombre variable.

Et je ne sais pas comment faire alors pour selectionner les catégories choisi et afficher les produits qui en dépendent si je ne transmet pas la ligne suivante :
<INPUT TYPE=checkbox value="<?=$row['IPage'];?>" name="<?=$i;?>"></INPUT>
le value ici transmet le nom de la catégorie
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

10 mai 2005, 11:58

Autant pour moi, j'ai mélangé checkbox et radio.
Mais ça veut dire que tu vas afficher sur la page suivante autant de produits que de cases cochées.
Dans ce cas-là, met dans ton check_box name="id_produit[]"
Comme ça, tu récupères un tableau indexé.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
pjl
ViPHP | 2119 Messages

10 mai 2005, 12:59

N'utilises pas de caractères spéciaux dans les noms de tes index: pas d'accent, pas d'espace ni caractères tels que / ou \ ou autre du même style.
La remarque est aussi valable pour les bases de données (nom de la base, des tables ou des champs.

BFH
Eléphant du PHP | 214 Messages

11 mai 2005, 13:52

La remarque est aussi valable pour les bases de données (nom de la base, des tables ou des champs.
Désolé, mais c'est pas moi qui rempli la base mais un logiciel !
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

11 mai 2005, 14:04

Pardon Cyrano mais je ne voit pas comment utiliser
name="id_produit[]" 
Je sais où le placer mais je voudrais savoir si je doit mettre
name="id_produit['$i']" 

ou autre chose... est ce que je doit mettre quelquechose dans "value" ?

et comment je recupère ça ? Avec un
if(isset($_GET['id_produit']))
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

ViPHP
pjl
ViPHP | 2119 Messages

11 mai 2005, 17:05

La remarque est aussi valable pour les bases de données (nom de la base, des tables ou des champs.
Désolé, mais c'est pas moi qui rempli la base mais un logiciel !
Ce n'est pas le logiciel qui impose ses noms quand même.

BFH
Eléphant du PHP | 214 Messages

11 mai 2005, 21:07

Ce n'est pas le logiciel qui impose ses noms quand même.
Eh si ! Utilise AIDA32 si tu me crois pas ou encore Everest (attention ce dernier est un shareware)
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...