A voir également:
- Mise a jour tableau php
- Mise a jour chrome - Accueil - Applications & Logiciels
- Tableau croisé dynamique - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
9 réponses
Utilisateur anonyme
8 juin 2012 à 13:51
8 juin 2012 à 13:51
Bonjour
Ici on ne voit que la création du formulaire, pas son traitement.
Déjà, il te faut des balises <form> et </form>
Mais tu as un gros problème : tu donnes les même nom (par exemple coutRepas) sur toutes les lignes de ton formulaire. Donc tu n'en récupèreras qu'un seul de chaque type, quel que soit le nombre de lignes affichées. Et tu ne sauras même pas à quel enregistrement il correspond.
Il faut que tu crées des noms de champs différents à chaque ligne. Sers-toi de l'id de chaque enregistrement. Et pour les récupérer plus facilement, appelle tous tes champs champ[$id]['coutRepas'], champ[$id]['cat_tarif'],
Comme ça, tu les récupères facilement :
Ici on ne voit que la création du formulaire, pas son traitement.
Déjà, il te faut des balises <form> et </form>
Mais tu as un gros problème : tu donnes les même nom (par exemple coutRepas) sur toutes les lignes de ton formulaire. Donc tu n'en récupèreras qu'un seul de chaque type, quel que soit le nombre de lignes affichées. Et tu ne sauras même pas à quel enregistrement il correspond.
Il faut que tu crées des noms de champs différents à chaque ligne. Sers-toi de l'id de chaque enregistrement. Et pour les récupérer plus facilement, appelle tous tes champs champ[$id]['coutRepas'], champ[$id]['cat_tarif'],
... $id = $dataAffTar['id']; echo " <tr> <td> <input type ='text' name='champ[$id]['coutRepas']' value='$coutRepas'> </td>...
Comme ça, tu les récupères facilement :
if (isset($_POST['champ'])) { foreach ($_POST['champ'] as $id=>$champ) { // là tu retrouves les $champ['coutRepas'],$champ['cat_tarif']... associés à l'enregistrement $id
Utilisateur anonyme
8 juin 2012 à 16:20
8 juin 2012 à 16:20
Je viens de m'apercevoir de deux erreurs :(
Si ton id n'est pas numérique, il vaudrait miex le mettre entre guillemets.
Et surtout (mea culpa) je t'ai fait écrire pour tes input un 'name' incorrect.
En effet, si on a name='qqchose le name s'arrête à l'apostrophe suivante. Or, je t'ai fait mettre des apostrophes autour de cat_tarif, etc... Le nom du champ s'arrête donc avant cat_tarif
->
Ça devrait aller mieux
Si ton id n'est pas numérique, il vaudrait miex le mettre entre guillemets.
Et surtout (mea culpa) je t'ai fait écrire pour tes input un 'name' incorrect.
En effet, si on a name='qqchose le name s'arrête à l'apostrophe suivante. Or, je t'ai fait mettre des apostrophes autour de cat_tarif, etc... Le nom du champ s'arrête donc avant cat_tarif
->
echo " <tr> <td align='center'> <input type ='text' name='champ[\"$id\"][\"cat_tarif\"]' value='$cat_tarif'> </td> ...
Ça devrait aller mieux
Utilisateur anonyme
Modifié par le père. le 8/06/2012 à 16:54
Modifié par le père. le 8/06/2012 à 16:54
D'après ton formulaire, on peut modifier la clé primaire aussi, ça complique la chose car si tu la modifies, il faut faire un certain nombre de vérifs. En particulier, imagine que tu essaye de donner à un enregistrement une valeur de clé primaire qui est déjà attribuée à un autre...
Je vais faire semblant de ne pas l'avoir remarqué.
En faisant bien attention aux ' pour encadrer les valeurs (non numériques au moins) et aux virgules pour séparer les variables successives (pas de virgule entre la dernière et le WHERE et sans oublier l'espace avant le where
[Edit : j'ai corrigé des parenthèses qui n'avaient rien à faire autour de $valeurs(['cat_tarif']). J'espère qu'il ne reste pas trop de fautes...
Je vais faire semblant de ne pas l'avoir remarqué.
if (isset($_POST['champ'])) { foreach ($_POST['champ'] as $id=>valeurs) { // il faudrait d'abord vérifier que les valeurs $valeur['cat_tarif'],$valeur['coutRepas']... sont acceptables $req="UPDATE categorie SET cat_tarif='".mysql_real_escape_string($valeurs['cat_tarif'])."'," "coutRepas='".mysql_real_escape_string($valeurs['coutRepas'])."'," ... WHERE cat_tarif='".mysql_real_escape_string($id)) }// foreach } // if (isset
En faisant bien attention aux ' pour encadrer les valeurs (non numériques au moins) et aux virgules pour séparer les variables successives (pas de virgule entre la dernière et le WHERE et sans oublier l'espace avant le where
[Edit : j'ai corrigé des parenthèses qui n'avaient rien à faire autour de $valeurs(['cat_tarif']). J'espère qu'il ne reste pas trop de fautes...
Utilisateur anonyme
8 juin 2012 à 15:39
8 juin 2012 à 15:39
Tu as bien mis ça dans le script qui traite le formulaire ?
Tu devrais retrouver les valeurs qu'il y avait dans le formulaire quand il a été envoyé.
Peux-tu ajouter, au début du script qui traite le formulaire :
pour voir ce que le formulaire t'envoie vraiment.
Tu devrais retrouver les valeurs qu'il y avait dans le formulaire quand il a été envoyé.
Peux-tu ajouter, au début du script qui traite le formulaire :
echo '<pre>'; var_dump($_POST); echo '</pre>';
pour voir ce que le formulaire t'envoie vraiment.
J'ai mis ça en m'aidant d'autres forum, mais je ne sais pas comment naviguer entre les id :
if (isset($_POST['champ']))
{
$champ=array();
$champ=$_POST['champ'];
echo '<pre>';
print_r($_POST['champ']);
echo '</pre>';
foreach ($_POST['champ'] as $id=>$value)
{
// echo $champ['coutRepas']." ".$champ['tarif_adh']." ". $champ['tarif_patr'];
echo '<pre>';
print_r($value);
echo '</pre>';
}
if (isset($_POST['champ']))
{
$champ=array();
$champ=$_POST['champ'];
echo '<pre>';
print_r($_POST['champ']);
echo '</pre>';
foreach ($_POST['champ'] as $id=>$value)
{
// echo $champ['coutRepas']." ".$champ['tarif_adh']." ". $champ['tarif_patr'];
echo '<pre>';
print_r($value);
echo '</pre>';
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
8 juin 2012 à 15:48
8 juin 2012 à 15:48
Est-ce que le print_r t'affiche bien les valeurs que tu avais saisies dans le formulaire ?
Utilisateur anonyme
8 juin 2012 à 15:54
8 juin 2012 à 15:54
Alors tu as dû te tromper au niveau de la création du formulaire. Peux-tu montrer le code qui crée le formulaire ?
<form action="DonneeAppli.php?action=enregistrer" method= "post">
<!--Tableau des informations tarifaires-->
<table border="1">
<tr>
<th colspan="6">
INFORMATIONS TARIFAIRES
</th>
</tr>
<tr>
<th>
Categories tarifaires
</th>
<th>
Cout du repas
</th>
<th>
Tarif usagers/categorie
</th>
<th>
Subvention Employeur/categorie
</th>
<th>
Prix unitaire subvention Admin.
</th>
<th>
Prix unitaire subvention d'equilibre
</th>
</tr>
<?php
$reqAffTar= "SELECT cat_tarif, tarif_adh, tarif_patr, Subv_Admin, Subv_Equil FROM categorie";
$resultAffTar = mysql_query($reqAffTar) or die (mysql_error( ));
while($dataAffTar = mysql_fetch_array($resultAffTar))
{
$id=$dataAffTar['cat_tarif'];
$cat_tarif=$dataAffTar['cat_tarif'];
$tarif_adh = $dataAffTar['tarif_adh'];
$tarif_patr = $dataAffTar['tarif_patr'];
$Subv_Admin = $dataAffTar['Subv_Admin'];
$Subv_Equil = $dataAffTar['Subv_Equil'];
echo "
<tr>
<td align='center'>
<input type ='text' name='champ[$id]['cat_tarif']' value='$cat_tarif'>
</td>
<td>
<input type ='text' name='champ[$id]['coutRepas']' value='$coutRepas'>
</td>
<td>
<input type ='text' name='champ[$id]['tarif_adh']' value='$tarif_adh'>
</td>
<td>
<input type ='text' name='champ[$id]['tarif_patr']' value='$tarif_patr'>
</td>
<td>
<input type ='text' name='champ[$id]['Subv_Admin']' value='$Subv_Admin'>
</td>
<td>
<input type ='text' name='champ[$id]['Subv_Equil']' value='$Subv_Equil' size='5'>
</td>
</tr>";
}
?>
</table>
</form>
if($_GET['action'] == "enregistrer")
{
if (isset($_POST['champ']))
{
$champ=array();
$champ=$_POST['champ'];
echo '<pre>';
print_r($_POST['champ']);
echo '</pre>';
foreach ($_POST['champ'] as $id=>$value)
{
// echo $champ['coutRepas']." ".$champ['tarif_adh']." ". $champ['tarif_patr'];
echo '<pre>';
print_r($value);
echo '</pre>';
}
}
<!--Tableau des informations tarifaires-->
<table border="1">
<tr>
<th colspan="6">
INFORMATIONS TARIFAIRES
</th>
</tr>
<tr>
<th>
Categories tarifaires
</th>
<th>
Cout du repas
</th>
<th>
Tarif usagers/categorie
</th>
<th>
Subvention Employeur/categorie
</th>
<th>
Prix unitaire subvention Admin.
</th>
<th>
Prix unitaire subvention d'equilibre
</th>
</tr>
<?php
$reqAffTar= "SELECT cat_tarif, tarif_adh, tarif_patr, Subv_Admin, Subv_Equil FROM categorie";
$resultAffTar = mysql_query($reqAffTar) or die (mysql_error( ));
while($dataAffTar = mysql_fetch_array($resultAffTar))
{
$id=$dataAffTar['cat_tarif'];
$cat_tarif=$dataAffTar['cat_tarif'];
$tarif_adh = $dataAffTar['tarif_adh'];
$tarif_patr = $dataAffTar['tarif_patr'];
$Subv_Admin = $dataAffTar['Subv_Admin'];
$Subv_Equil = $dataAffTar['Subv_Equil'];
echo "
<tr>
<td align='center'>
<input type ='text' name='champ[$id]['cat_tarif']' value='$cat_tarif'>
</td>
<td>
<input type ='text' name='champ[$id]['coutRepas']' value='$coutRepas'>
</td>
<td>
<input type ='text' name='champ[$id]['tarif_adh']' value='$tarif_adh'>
</td>
<td>
<input type ='text' name='champ[$id]['tarif_patr']' value='$tarif_patr'>
</td>
<td>
<input type ='text' name='champ[$id]['Subv_Admin']' value='$Subv_Admin'>
</td>
<td>
<input type ='text' name='champ[$id]['Subv_Equil']' value='$Subv_Equil' size='5'>
</td>
</tr>";
}
?>
</table>
</form>
if($_GET['action'] == "enregistrer")
{
if (isset($_POST['champ']))
{
$champ=array();
$champ=$_POST['champ'];
echo '<pre>';
print_r($_POST['champ']);
echo '</pre>';
foreach ($_POST['champ'] as $id=>$value)
{
// echo $champ['coutRepas']." ".$champ['tarif_adh']." ". $champ['tarif_patr'];
echo '<pre>';
print_r($value);
echo '</pre>';
}
}
Utilisateur anonyme
8 juin 2012 à 16:03
8 juin 2012 à 16:03
Je vois que tu as utilisé cat_tarif comme id, j'espère que cat_tarif est bien différent pour chaque ligne de ta base.
Sinon, ça a l'air correct, peux tu recopier ce qu'affiche le print_r($_POST['champ']); (et supprimer le print_($value) pour l'instant)
Sinon, ça a l'air correct, peux tu recopier ce qu'affiche le print_r($_POST['champ']); (et supprimer le print_($value) pour l'instant)
Yes ça marche! :)
Array
(
["B"] => Array
(
["cat_tarif"] => B
["coutRepas"] => 7.73
["tarif_adh"] => 3.15
["tarif_patr"] => 4.58
["Subv_Admin"] => 1.15
["Subv_Equil"] => 1.15
)
["C"] => Array
(
["cat_tarif"] => C
["coutRepas"] => 7.73
["tarif_adh"] => 3.26
["tarif_patr"] => 4.47
["Subv_Admin"] => 1.15
["Subv_Equil"] => 1.15
)
["E"] => Array
(
["cat_tarif"] => E
["coutRepas"] => 7.73
["tarif_adh"] => 4.40
["tarif_patr"] => 3.30
["Subv_Admin"] => 0
["Subv_Equil"] => 45
)
["F"] => Array
(
["cat_tarif"] => F
["coutRepas"] => 7.73
["tarif_adh"] => 5.08
["tarif_patr"] => 2.65
["Subv_Admin"] => 0
["Subv_Equil"] => 1
)
Est-ce que tu pourrais me donnais un exemple pour extraire les informations afin de pouvoir mettre a jour ma base de donnée?
Array
(
["B"] => Array
(
["cat_tarif"] => B
["coutRepas"] => 7.73
["tarif_adh"] => 3.15
["tarif_patr"] => 4.58
["Subv_Admin"] => 1.15
["Subv_Equil"] => 1.15
)
["C"] => Array
(
["cat_tarif"] => C
["coutRepas"] => 7.73
["tarif_adh"] => 3.26
["tarif_patr"] => 4.47
["Subv_Admin"] => 1.15
["Subv_Equil"] => 1.15
)
["E"] => Array
(
["cat_tarif"] => E
["coutRepas"] => 7.73
["tarif_adh"] => 4.40
["tarif_patr"] => 3.30
["Subv_Admin"] => 0
["Subv_Equil"] => 45
)
["F"] => Array
(
["cat_tarif"] => F
["coutRepas"] => 7.73
["tarif_adh"] => 5.08
["tarif_patr"] => 2.65
["Subv_Admin"] => 0
["Subv_Equil"] => 1
)
Est-ce que tu pourrais me donnais un exemple pour extraire les informations afin de pouvoir mettre a jour ma base de donnée?
Merci pour tout!
Oui dans le formulaire, on peut modifier la clé primaire, je sais c'est très mauvais, mais j'ai fait ça pour pouvoir récupérer un "name" à travers un $_POST pour faciliter la requête where...=$cat_tarif.
Je n'ai pas trouver d'autres alternatives, si je la met juste en texte, je ne sais pas comment la récupérer en $_POST
Oui dans le formulaire, on peut modifier la clé primaire, je sais c'est très mauvais, mais j'ai fait ça pour pouvoir récupérer un "name" à travers un $_POST pour faciliter la requête where...=$cat_tarif.
Je n'ai pas trouver d'autres alternatives, si je la met juste en texte, je ne sais pas comment la récupérer en $_POST