par
sadeq » 31 mai 2006, 16:37
Je viens de lire ton code, je ne pense pas que tu auras besoin du tuto que je t'ai proposé.
Si j'ai bien compris, tu affiches un tableau HTML croisé qui présente à l'intersection d'une ligne supérficie et d'une colonne périodicité le tarif de la supérficie pour cette périodicité.
Et tu veux pouvoir modifier le tarif d'une supérficie/semaine.
Tu as tous prévu c'est bien, sauf la clé primaire avec laquelle la modif peut se faire facilement avec une requête update.
En effet, tu as nommé un input porteur de tarif avec un nom composé du couple (supérficie-périodicité) alors qu'il suffisait de le nommer comme un tableau "tarifs" indexé par la valeur de la clé primaire (CODE_TAB) selon le schèma de ta table de BD :
Ma table s'appelle :
TABLEAU_PRIX
il y a comme champs :
CODE_TAB (PK)
PERIODICITE_SEM
TARIF
NUM_CONTRAT (FK)
Ainsi quand tes inputs (tarifs) sont modifiés, au submit du formulaire, tu recevra une liste "tarifs" indexée par CODE_TAB contenant les tarifs.
Liste que tu va utiliser pour lancer des updates.
Exemple de correction :
$reqsql5 = mysql_query("SELECT code_tab, tarif
from tableau_prix
where num_contrat='$num'
and periodicite_sem='$periode'
and superficie='$super'");
while ($rep5 = @mysql_fetch_object($reqsql5)) {
$tarif = $rep5->tarif;
$code_tab = $rep5->code_tab;
?>
<td align="center" >
<input name="tarifs[<?php echo $code_tab; ?>]" type="text" align="texttop" value="<?php echo $tarif ?>" size="6" maxlength="6"></td>
Si tu place ton tableau dans un form de type GET et tu ajoute un bouton submit : ton programme va recevoir dans $_GET un tableau nommé "tarifs"
dont les indexes sont les "code_tab" (clés primaires) et les valeurs sont les tarifs modifiés.
Le programme de modification se voit ainsi:
//Réception des tarifs
$tarifs = $_GET["tarifs"];
//Mise à jour de la BD à partir des tarifs reçus
if ($tarifs)
//Parcourir la liste $tarifs : une ligne est indexée par code_tab et contient la valeur du tarif
foreach ($tarifs as $code_tab=>$tarif){
//SQL update
$sql = "update tableau_prix set tarif = $tarif where code_tab = '$code_tab'";
//Exécuter SQL
....
} //tarif suivant
Je viens de lire ton code, je ne pense pas que tu auras besoin du tuto que je t'ai proposé.
Si j'ai bien compris, tu affiches un tableau HTML croisé qui présente à l'intersection d'une ligne supérficie et d'une colonne périodicité le tarif de la supérficie pour cette périodicité.
Et tu veux pouvoir modifier le tarif d'une supérficie/semaine.
Tu as tous prévu c'est bien, sauf la clé primaire avec laquelle la modif peut se faire facilement avec une requête update.
En effet, tu as nommé un input porteur de tarif avec un nom composé du couple (supérficie-périodicité) alors qu'il suffisait de le nommer comme un tableau "tarifs" indexé par la valeur de la clé primaire (CODE_TAB) selon le schèma de ta table de BD :
[quote]
Ma table s'appelle :
TABLEAU_PRIX
il y a comme champs :
CODE_TAB (PK)
PERIODICITE_SEM
TARIF
NUM_CONTRAT (FK)
[/quote]
Ainsi quand tes inputs (tarifs) sont modifiés, au submit du formulaire, tu recevra une liste "tarifs" indexée par CODE_TAB contenant les tarifs.
Liste que tu va utiliser pour lancer des updates.
Exemple de correction :
[php]
$reqsql5 = mysql_query("SELECT code_tab, tarif
from tableau_prix
where num_contrat='$num'
and periodicite_sem='$periode'
and superficie='$super'");
while ($rep5 = @mysql_fetch_object($reqsql5)) {
$tarif = $rep5->tarif;
$code_tab = $rep5->code_tab;
?>
<td align="center" >
<input name="tarifs[<?php echo $code_tab; ?>]" type="text" align="texttop" value="<?php echo $tarif ?>" size="6" maxlength="6"></td>
[/php]
Si tu place ton tableau dans un form de type GET et tu ajoute un bouton submit : ton programme va recevoir dans $_GET un tableau nommé "tarifs"
dont les indexes sont les "code_tab" (clés primaires) et les valeurs sont les tarifs modifiés.
Le programme de modification se voit ainsi:
[php]
//Réception des tarifs
$tarifs = $_GET["tarifs"];
//Mise à jour de la BD à partir des tarifs reçus
if ($tarifs)
//Parcourir la liste $tarifs : une ligne est indexée par code_tab et contient la valeur du tarif
foreach ($tarifs as $code_tab=>$tarif){
//SQL update
$sql = "update tableau_prix set tarif = $tarif where code_tab = '$code_tab'";
//Exécuter SQL
....
} //tarif suivant
[/php]