par
piedbleu » 16 déc. 2006, 20:15
Oui c'est exactement ce que je veux, une mise à jour sur les deux articles dont les références s'affichent ds les deux lignes de mon formulaire: est - ce possible? Dans le cas contraire je revois la structure de mon bidule.
Je précise que je ne gère pas un panier et que j'ai qque chose du genre:
idunique=1 1 art11 1 11
idunique=2 1 art12 2 22
idunique=3 2 art21 1 12
idunique=4 2 art22 2 55
idunique est un chmap auto+.
J'effectue une requête portant sur le 2nd champ et qui m'affiche un formulaire prérempli des enregistrements correspondants.
Si par exemple 2nd champ=1, j'affiche donc 2 lignes de formulaires préremplies des valeurs (art11, 1, 11) d'une part et (art12, 2, 22) d'autre part.
Une modification de l'une de ces valeurs m'enregistre invariablement ds la table la 2nde ligne pour 2nd champ=1.
Je ne vois pas pourquoi ces 2 lignes ne sont pas distinguées lors de l'update ! Alors que je récupère tout bien ds mon tableau.
Je me permet de reposter mon code très légèrement modifié:
initialisation à 1 de $idcommande - pour l'exemple.
modification de la requête ds case 2 => $req2.
Ds le formulaire que je ne poste pas j'ai juste ajouté un champ caché pour faire passer $idcommande.
<?php
include('include/connexion.php');
$etape = 0;
$idcommande = 1;
if (isset($_REQUEST['etape']) & !empty($_REQUEST['etape'])) {
$etape = $_REQUEST['etape'];
}
if (isset($_REQUEST['idcommande']) & !empty($_REQUEST['idcommande'])) {
$idcommande = $_REQUEST['idcommande'];
}
switch ($etape) {
case "0": // saisie formulaire
$etape = 1;
include('essaiform.php');
break;
case "1": // enregistrement et affichage pour modifs
// test contenu de la variable article postée: OK
echo 'contenu de article posté: test ok';
echo '<pre>';
print_r($_POST["article"]);
echo '</pre>';
// affectation de la variable postée
for($i=0;$i<=1;$i++){
$article["nom"] = $_POST["article"]["nom"];
$article["qte"] = $_POST["article"]["qte"];
$article["pu"] = $_POST["article"]["pu"];
}
// test contenu de la variable affectée: OK
echo 'contenu de article affecté: test ok';
echo '<pre>';
print_r($article);
echo '</pre>';
// insertion ds la table: OK
for($i=0;$i<=1;$i++){
$req1="insert into essaiarticle (idcommande, nom_art, qte, pu )
values($idcommande, '{$article[nom][$i]}', '{$article[qte][$i]}', '{$article[pu][$i]}' )";
$rep1=mysql_query($req1)or die("Enregistrement ds table article impossible");
}
echo $idcommande;
$etape=2;
include('essaiform.php');
break;
case "2": // maj enregistrement suite modifs de saisie
// affectation suite maj
for($i=0;$i<=1;$i++){
$article["nom"] = $_POST["article"]["nom"];
$article["qte"] = $_POST["article"]["qte"];
$article["pu"] = $_POST["article"]["pu"];
}
// ICI PROBLEME: REQUETE NON PRISE EN COMPTE - ARRGHHH !
for($i=0;$i<=1;$i++){
$req2="UPDATE essaiarticle SET nom_art='{$article[nom][$i]}', qte='{$article[qte][$i]}', pu='{$article[pu][$i]}'
WHERE idcommande='$idcommande'";
$rep2=mysql_query($req2)or die("MAJ table article impossible");
}
echo $idcommande;
echo 'contenu de article maj: test OK';
echo '<pre>';
print_r($article);
echo '</pre>';
include('essaiform.php');
}
?>
Oui c'est exactement ce que je veux, une mise à jour sur les deux articles dont les références s'affichent ds les deux lignes de mon formulaire: est - ce possible? Dans le cas contraire je revois la structure de mon bidule.
Je précise que je ne gère pas un panier et que j'ai qque chose du genre:
idunique=1 1 art11 1 11
idunique=2 1 art12 2 22
idunique=3 2 art21 1 12
idunique=4 2 art22 2 55
idunique est un chmap auto+.
J'effectue une requête portant sur le 2nd champ et qui m'affiche un formulaire prérempli des enregistrements correspondants.
Si par exemple 2nd champ=1, j'affiche donc 2 lignes de formulaires préremplies des valeurs (art11, 1, 11) d'une part et (art12, 2, 22) d'autre part.
Une modification de l'une de ces valeurs m'enregistre invariablement ds la table la 2nde ligne pour 2nd champ=1.
Je ne vois pas pourquoi ces 2 lignes ne sont pas distinguées lors de l'update ! Alors que je récupère tout bien ds mon tableau.
Je me permet de reposter mon code très légèrement modifié:
initialisation à 1 de $idcommande - pour l'exemple.
modification de la requête ds case 2 => $req2.
Ds le formulaire que je ne poste pas j'ai juste ajouté un champ caché pour faire passer $idcommande.
[php]
<?php
include('include/connexion.php');
$etape = 0;
$idcommande = 1;
if (isset($_REQUEST['etape']) & !empty($_REQUEST['etape'])) {
$etape = $_REQUEST['etape'];
}
if (isset($_REQUEST['idcommande']) & !empty($_REQUEST['idcommande'])) {
$idcommande = $_REQUEST['idcommande'];
}
switch ($etape) {
case "0": // saisie formulaire
$etape = 1;
include('essaiform.php');
break;
case "1": // enregistrement et affichage pour modifs
// test contenu de la variable article postée: OK
echo 'contenu de article posté: test ok';
echo '<pre>';
print_r($_POST["article"]);
echo '</pre>';
// affectation de la variable postée
for($i=0;$i<=1;$i++){
$article["nom"] = $_POST["article"]["nom"];
$article["qte"] = $_POST["article"]["qte"];
$article["pu"] = $_POST["article"]["pu"];
}
// test contenu de la variable affectée: OK
echo 'contenu de article affecté: test ok';
echo '<pre>';
print_r($article);
echo '</pre>';
// insertion ds la table: OK
for($i=0;$i<=1;$i++){
$req1="insert into essaiarticle (idcommande, nom_art, qte, pu )
values($idcommande, '{$article[nom][$i]}', '{$article[qte][$i]}', '{$article[pu][$i]}' )";
$rep1=mysql_query($req1)or die("Enregistrement ds table article impossible");
}
echo $idcommande;
$etape=2;
include('essaiform.php');
break;
case "2": // maj enregistrement suite modifs de saisie
// affectation suite maj
for($i=0;$i<=1;$i++){
$article["nom"] = $_POST["article"]["nom"];
$article["qte"] = $_POST["article"]["qte"];
$article["pu"] = $_POST["article"]["pu"];
}
// ICI PROBLEME: REQUETE NON PRISE EN COMPTE - ARRGHHH !
for($i=0;$i<=1;$i++){
$req2="UPDATE essaiarticle SET nom_art='{$article[nom][$i]}', qte='{$article[qte][$i]}', pu='{$article[pu][$i]}'
WHERE idcommande='$idcommande'";
$rep2=mysql_query($req2)or die("MAJ table article impossible");
}
echo $idcommande;
echo 'contenu de article maj: test OK';
echo '<pre>';
print_r($article);
echo '</pre>';
include('essaiform.php');
}
?>
[/php]