par
Cyrano » 11 févr. 2006, 12:20
Ben ne me dis pas que tu comprends alors : je ne te mordrais pas si tu me dis que tu ne comprends pas et je ne prendrai pas pour acquis que tu as saisi : sinon, on risque de faire des impasses et en fin de compte tu seras largué depuis un moment.
Reprenons :
- Première étape, le formulaire : tu as un certain nombre de champs générés dans une boucle : pour éviter que les champs n'aient tous le même nom, il faut utiliser des valeurs "tabulaire" (des tableaux), donc au lieu de name="nom", on va mettre name="nom[]". Les valeurs seront alors stockées dans des tableaux indexés;
- Seconde étape, la récupération des valeurs du formulaire dans la page de traitement (qui peut éventuellement être la même page). Si on avait qu'un seul champ avec name="nom", on récupèrerait la valeur de ce champ en initialisant une variable $nom et on lui assignerait la valeur stockée dans la super-globale $_POST['nom'] : $nom serait alors une variable "scalaire" ayant une unique valeur. Si par contre on a dans notre formulaire des champs avec name="nom[]", on sait qu'on récupère un tableau de valeurs toujours dans $_POST['nom'] : on initialise $nom avec cette valeur mais cette fois $nom n'est plus une variable scalaire mais un tableau indexé : on va donc travailler sur $nom[0], $nom[1], etc...
Tu dois maintenant générer une requête SQL en utilisant l'identifiant de la case cochée : mais avec des cases à cocher, tu peux avoir plusieurs valeurs : donc soit tu crées une requête par valeur, soit tu crées une seule requête qui va extraire plusieurs lignes de données : dans ce dernier cas, ta requête ressemblera à
$sql = "SELECT champ_1, champ_2 FROM table_xyz ".
"WHERE champ_z = ". $nom[0] ." ".
"OR champ_z = ". $nom[1] .";";
Est-ce que c'est plus clair comme ça ?
Ben ne me dis pas que tu comprends alors : je ne te mordrais pas si tu me dis que tu ne comprends pas et je ne prendrai pas pour acquis que tu as saisi : sinon, on risque de faire des impasses et en fin de compte tu seras largué depuis un moment.
Reprenons :
- Première étape, le formulaire : tu as un certain nombre de champs générés dans une boucle : pour éviter que les champs n'aient tous le même nom, il faut utiliser des valeurs "tabulaire" (des tableaux), donc au lieu de name="nom", on va mettre name="nom[]". Les valeurs seront alors stockées dans des tableaux indexés;
- Seconde étape, la récupération des valeurs du formulaire dans la page de traitement (qui peut éventuellement être la même page). Si on avait qu'un seul champ avec name="nom", on récupèrerait la valeur de ce champ en initialisant une variable $nom et on lui assignerait la valeur stockée dans la super-globale $_POST['nom'] : $nom serait alors une variable "scalaire" ayant une unique valeur. Si par contre on a dans notre formulaire des champs avec name="nom[]", on sait qu'on récupère un tableau de valeurs toujours dans $_POST['nom'] : on initialise $nom avec cette valeur mais cette fois $nom n'est plus une variable scalaire mais un tableau indexé : on va donc travailler sur $nom[0], $nom[1], etc...
Tu dois maintenant générer une requête SQL en utilisant l'identifiant de la case cochée : mais avec des cases à cocher, tu peux avoir plusieurs valeurs : donc soit tu crées une requête par valeur, soit tu crées une seule requête qui va extraire plusieurs lignes de données : dans ce dernier cas, ta requête ressemblera à
[php]$sql = "SELECT champ_1, champ_2 FROM table_xyz ".
"WHERE champ_z = ". $nom[0] ." ".
"OR champ_z = ". $nom[1] .";";[/php]
Est-ce que c'est plus clair comme ça ?