Rechercher : dans
Par :

[php] mise à jour donnée et affichage

Dernière réponse le 15 jui 2008 à 20:32:37 oie, le 27 mai 2006 à 02:22:29 
 Signaler ce message aux modérateurs

Bonjour!

voilà je voudrais pouvoir modifier la quantité de chaque article dans mon panier mais au lieu de ça, ça me modifie toutes les quantités des articles que le client à mis dans son panier

voici mon code :
[code]
<?
session_start();

$sessionidclient = $_SESSION['id_client'];
$article = $_POST['article'];
$quantite = $_POST['quantite'];

// connexion à la BDD

$req1 = "SELECT ref_produit, prix_produit FROM produit WHERE designation_produit = '".$article."'";
$query1 = mysql_query($req1) or die(mysql_error());
$fetch1 = mysql_fetch_array($query1);

$total = $fetch1[1]*$quantite;


$inser = "INSERT INTO panier (id_cli, ref_produit, quantite, total) VALUES ( '".$_SESSION['id_client']."','".$fetch1[0]."', '".$quantite."', '".$total."')";

$inquer = mysql_query($inser) or die(mysql_error());
$affected = mysql_affected_rows();

$reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";
$querytot = mysql_query($reqtot) or die(mysql_error());
$fetchtot = mysql_fetch_array($querytot);

$select = "SELECT ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";
$quersel = mysql_query($select) or die(mysql_error());

echo "<table border= 2>
<tr>
<td><center><b>Designation</td></center></b>
<td><center><b>Quantite</td></center></b>
<td><center><b>Prix(en €)</td> </center></b>
<td><center><b>Total produit</td></center></b>
<td>Modifier</td></tr>";

while($fetchsel = mysql_fetch_array($quersel))
{

$selectdesi = "SELECT designation_produit, prix_produit FROM produit WHERE ref_produit = '".$fetchsel[0]."'";

$querdesi = mysql_query($selectdesi) or die(mysql_error());
while ($fetchdesi = mysql_fetch_array($querdesi))
{

if(isset($_POST['sub_form']))
{
if ($_POST['sub_form'] == 'modifier')
{
$modif = "UPDATE panier SET quantite = ".$_POST['quantite'].", total = ".$fetchdesi[1] * $_POST['quantite']."
WHERE ref_produit = '".$fetchsel[0]."' AND id_cli = '".$_SESSION['id_client']."'";
echo $modif;
$res = mysql_query($modif) or die (mysql_error());
$fetchmodif = mysql_affected_rows();
}
}

$reqtott = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";

$querytott = mysql_query($reqtott) or die(mysql_error());
$fetchtott = mysql_fetch_array($querytott);

if(isset ($fetchmodif))
{
echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchdesi[0]."</td>
<td><input type = text name = quantite value = ".$_POST['quantite']." ></td>
<td>".$fetchdesi[1]."</td>
<td>".$fetchdesi[1] * $_POST['quantite']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</form>
</tr>
";
}
else
{
echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchdesi[0]."</td>
<td><input type = text name = quantite value = ".$fetchsel[1]." ></td>
<td>".$fetchdesi[1]."</td>
<td>".$total."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</form>
</tr>
";

}

}
}

if (isset ($fetchmodif))
{
echo "
<tr><td></td><td></td><b><center> </b></td><td align = \"center\"><b>Total : ".$fetchtott[0]." €</b></td></tr>";
echo"</table>";
}
else
{

echo "
<tr><td></td><td></td><b><center> </b></td><td align = \"center\"><b>Total : ".$fetchtot[0]." €</b></td></tr>";

echo"</table>
";
}



echo "<br><br>";
echo "<a href = essaipanier.php>Retour</a><br>";
echo "<a href = index.php>Accueil</a>";

?>
[/code]

je vous remercie beaucoup pour votre aide ...

Meilleures réponses pour « [php] mise à jour donnée et affichage » dans :
PHP - Bases de données Voir Php permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
PHP - Récupération de données Voir PHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
[PHP] Dernier jour du mois / Nombre de jours dans le mois VoirSoient $m le numéro du mois en question et $y l'année. La fonction date() permet d'afficher directement le nombre de jours dans le mois avec le caractère "t" :
[PHP] Date de dernière modification VoirGrâce à PHP il est possible d'afficher automatiquement la date de dernière modification de la page en cours : ...

1

P@, le 29 mai 2006 à 12:46:50
  • +1

Dis moi, quand tu regarde ton "code source" de la page html généré ...
est ce que tous les

<input type = text name = quantite value = ".$fetchsel[1]." >
on le même nom ?? ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

2

yop, le 29 mai 2006 à 15:14:02

Oauis mais je ne sais pas comment faire pour que quand je clique sur "modifier", ca me modifie juste la quantité d'un seul article..

suis completement perdu... :(

Répondre à yop

3

P@, le 29 mai 2006 à 15:17:26
  • +1

C'est parce qu'ils ont tous le même nom. alors soit tu as fait un formulaire par produit et dans ce cas il te faut nommer chaque formulaire pour soumettre uniquement le bon soit il faut différencier les nom de tes champs...

Je suis claire ou pas ???
je ne sais pas .
dis moi si tu as compris le problème parce que c'est tout bête, mais encore faut-il que se soit bien expliquer ... et là je ne suis pas sure d'être trés claire dans mes explications :D ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

4

yop, le 29 mai 2006 à 15:43:01

On va reprendre un code plus implifié :

$sessionidclient =  $_SESSION['id_client'];
 
 echo  $_SESSION['id_client']."Identifiant client";
 echo "<br><br>";
 
 $article = $_POST['article'];
 echo $article;
 echo "<br>";
$quantite = $_POST['quantite'];
 // connexion BDD

$req1 = "SELECT ref_produit, prix_produit FROM produit WHERE  designation_produit = '".$article."'";
$query1 = mysql_query($req1) or die(mysql_error());
$fetch1 = mysql_fetch_array($query1);


 $total = $fetch1['prix_produit']*$quantite;


$inser = "INSERT INTO panier (id_cli, ref_produit, quantite, total) VALUES ( '".$_SESSION['id_client']."','".$fetch1['ref_produit']."', '".$quantite."', '".$total."')";

$inquer = mysql_query($inser) or die(mysql_error());
$affected = mysql_affected_rows();

$reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
$querytot = mysql_query($reqtot) or die(mysql_error());
$fetchtot = mysql_fetch_array($querytot);

if(isset($_POST['sub_form']))
{
if ($_POST['sub_form'] == 'modifier')
{

  $modif = "UPDATE panier SET quantite = '".$_POST['quantite']."', total = '".$fetch1['prix_produit'] * $_POST['quantite']."'
  WHERE ref_produit = '".$fetch1['ref_produit']."' AND id_cli = '".$_SESSION['id_client']."'";
  $res = mysql_query($modif) or die (mysql_error());
  }
  }


$select = "SELECT  ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
$quersel = mysql_query($select) or die(mysql_error());



echo "<table border= 2>
<tr>
<td><center><b>Reference</td></center></b>
<td><center><b>Quantite</td></center></b>

<td><center><b>Total produit</td></center></b>
<td>Modifier</td></tr>";

while($fetchsel = mysql_fetch_assoc($quersel))
{


  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}
echo "</table>
";

?>



pour afficher tous les articles mis dans le panier, je boucle.

et j'ai ma requete UPDATE qui me permet de mettre à jour la quantite avec le $_POST['quantite'] en fonction de la ref_produit

et quand je veux modifier, ça me rajoute une ligne, un champs quantité en plus..

j'ai du mal à expliquer mon problème.. :(

Répondre à yop

5

P@, le 30 mai 2006 à 09:59:03
  • +1

Alors s'il te plait ... regarde dans la balise form

while($fetchsel = mysql_fetch_assoc($quersel))
{


  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}' >";
echo "<tr><input type = 'hidden' name = 'ref_produit' value = '".$fetchsel['ref_produit']."'/ >
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}


et ca devrait être mieux, non ?? ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

6

 carternets, le 15 jui 2008 à 20:32:37
  • +1

Salut,

ce que tu peux faire sinon c'est une incrémentation pour chaque boucle et la placer dans le nom de ton input.

Par exemple

$i=0;

while($fetchsel = mysql_fetch_assoc($quersel))
{

$i++;

  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}' >";
echo "<tr><input type = 'hidden' name = 'ref_produit".$i."' value = '".$fetchsel['ref_produit']."'/ >
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite".$i."' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}


Donc en gros ton premier input sera ref_produit1 la seconde boucle ref_produit2 etc...
Derrière sur ta page où tu récupères la donnée, tu utilises une structure conditionnelle où ce que tu veux.

Voilà, j'espère que ça t'aidera ;-)

Répondre à carternets
Collection CommentÇaMarche.net