champs[1]

ViPHP
ViPHP | 2291 Messages

23 juil. 2006, 23:22

Bonsoir,

La meilleurs manière de nommé des champs de formulaire est laquelle?
Je vois souvant ceci "nom_du_champs[]" je me demande pourquoi le []??
Quelle est l'avantage pour la récupération des donnée?
Pourquoi champs[1] et mieux que champ_1 ?

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juil. 2006, 00:10

Bonsoir,

Les crochets indiquent l'utilisation d'un tableau d'éléments. En l'occurence, toto[1] désigne le 2ième élément "toto" (car un tableau commence à 0).
Après à toi de voir le nom qui te parrait le plus simple/logique dans ton cas.
Si tu as +ieus éléments similaires, un tableau peut être relativement pratique sinon ça n'a que peu d'intérêt
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 197 Messages

24 juil. 2006, 02:42

dans un formulaire c'est bien d'utiliser un tableau avec l'utilisation des checkbox... tu stockes tout, un coup de foreach et voilà le résultat... ça sert à économiser pas mal de lignes de code

genre
fonction($var1);
fonction($var2);
fonction($var3);
...
fonction($varX);
par
foreach($var as $key => $value) {
fonction($value);
}

ViPHP
ViPHP | 2291 Messages

24 juil. 2006, 08:37

Bonjour,

Merci pour vos réponse, donc imaginont qe je suis malin et que j'ai compris cela donnerais:
exemple je nomme mes champs (nom[1]) , (nom[2]) , (nom[3]) , etc...
Et il me suffirais de faire un truc du genre
.mysql_escape_string($_POST(nom[]),
Au lieu de :
mysql_escape_string($_POST['nom_1'] "','" .mysql_escape_string($_POST['nom_2'] "','" etc....
C'est bien ça ? :shock:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 juil. 2006, 09:54

Non, cela ne te dispense pas de traiter chaque chaine.. l'avantage, c'est juste de récupérer les données sous la forme d'un tableau (éventuellement indexé) plutôt que dans chaque valeur dans une variable.

Typiquement dans le cas de cases à cocher comme l'a signalé Hanx, plutôt que de tester chaque variable $_POST['var_1'], $_POST['var_2'] ... $_POST['var_74'], on se contente de récupérer $_POST['var'] (si chaque case a pour nom "var[]"), sachant que cette variable est un tableau contenant les valeurs des cases qui ont été cochées.

On peut ainsi grandement simplifier le code en faisant une boucle sur les éléments du tableau sans avoir à se soucier de savoir combien il y a de cases, de tester si $_POST['var_26'] est défini ou non pour récupérer sa valeur, etc.

Eléphant du PHP | 197 Messages

24 juil. 2006, 11:07

Bonjour,
.mysql_escape_string($_POST(nom[]),
Au lieu de :
mysql_escape_string($_POST['nom_1'] "','" .mysql_escape_string($_POST['nom_2'] "','" etc....
C'est bien ça ? :shock:

NOOOOOOOOON surtout pas !

$nom[] << défini signifie l'élément suivant du tableau

exemple :
$nom[1]='arbre';
$nom[2]='fleur';
$nom[3]='champignon';
$nom[]='fruit'; //se place en $nom[4]
si tu veux faire une manipulation totale sur un tableau, utilises $nom... il faut voir la doc de la fonction si elle permet de traiter des tableaux. Mais si tu ne veux pas avoir de problêmes, tu fais un foreach...
foreach($_POST as $key => $value) {
$_POST[$key]=mysql_escape_string($value);
}

ViPHP
ViPHP | 2291 Messages

24 juil. 2006, 12:56

Salut,

Génial et merci, juste une question :oops: :oops: pourquoi dire tableau concernant [] ????
Et pour être certain d'avoir compris, j'ai un formulaire avec les champs
nom_1 nom_2 nom_3
Et pour bien faire je devrais les nommé
 $nom[1], $nom[2], $nom[3]
et pour ma requête INSERT
$sql="INSERT INTO test (nom,xxxxx,xxxxx,xxxxx,) VALUES ('".mysql_escape_string($_POST $nom[1])."','".mysql_escape_string($_POST $nom[2])."','".mysql_escape_string($_POST $nom[3] etc......
C'est bien ça ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juil. 2006, 22:18

$_POST $nom[3] 
C'est bien ça ?
Oui, en faisant un petit effort sur la syntaxe :shock: , mais je pense que tu as effectivement compris le principe ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 2291 Messages

24 juil. 2006, 22:21

$_POST $nom[3] 
C'est bien ça ?
Oui, en faisant un petit effort sur la syntaxe :shock: , mais je pense que tu as effectivement compris le principe ;)
Un petit seulement ? tu est sympa :lol:
Le principe oui je pense avoir compris, MAIS je ne trouve cependant pas la différence avec :
($_POST['nom_1'] 
Sorry hein :?:

Merci pour la patience :roll:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juil. 2006, 23:57

$_POST['nom'][3]
car tu récupère le 3ème élément du tableau 'nom', lui même passé en POST :)
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 2291 Messages

29 juil. 2006, 15:44

$_POST['nom'][3]
car tu récupère le 3ème élément du tableau 'nom', lui même passé en POST :)
Bon ......
Mais juste pour être certain de comprendre!!!!
Exemple:
mes champs nommé nom_1,nom_2 etc se récupére
INSERT nom_1,nom_2 etc....

Mes champs nommé nom[1], nom[2], etc.... se récupére
INSERT POST_$nom[], et là il récupére les nom[1] et nom[2] j'ai bien comprid :?:
a+
[/php]
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.