IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

soucis pour mise à jour de données


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut soucis pour mise à jour de données
    bonjour à tous!

    j'ai creé un panier et c'est à ce niveau là que je butte depuis un bout de temps .
    je donne la possibilité pour le client de pouvoir modifier la quantité des articles qu'il aura choisi.
    mais mon problème est que ça ne modifie rien dans mon formulaire (champs quantite) et dans ma base de données ça me modifie mais ça me rajoute une ligne avec seulement renseignés id_cli et la quantite (normalement sont renseignés les champs suivants : id_cli, ref_produit, quantite, total).

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?
    session_start();
     
    $sessionidclient =  $_SESSION['id_client'];
    $article = $_POST['article'];
    $quantite = $_POST['quantite'];
     
    //connexion BDD
     
    $req1 = "SELECT ref_produit, prix_produit FROM produit WHERE  designation_produit = '".$article."'";
    $query1 = mysql_query($req1);
    $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);
    $affected = mysql_affected_rows();
     
    $reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
    $querytot = mysql_query($reqtot);
    $fetchtot = mysql_fetch_array($querytot);
     
     
    $select = "SELECT  ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
    $quersel = mysql_query($select);
     
    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);
    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] * $fetchsel[0]."  WHERE  ref_produit = '".$fetchsel[0]."' AND id_cli = '".$_SESSION['id_client']."'";
      $res = mysql_query($modif) or die (mysql_error());
    }
    }
    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>
    ";
     
    }
    }
     
    echo "
    <tr><td></td><td></td><b><center>  </b></td><td align = \"center\"><b>Total : ".$fetchtot[0]." €</b></td></tr>
    </table>
    ";
    si quelqu'un pourrait m'aider ce serait vraiment sympas...

    merci d'avance.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Première chose, pour tes résultats de requêtes c'est pas terrible de faire $fetch[0], il est préférable de faire $fetch['nom_champ'].

    Deuxième chose, quand tu fais un mysq_query ajoute un or die("mysql_error()") au bout de la ligne comme ça tu verras si la requête a foiré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fetch = mysql_query($requete) or die(mysql_error());
    Ensuite, fais un "echo $requete;" après les requêtes douteuses (les INSERT incriminés), comme ça tu pourras cibler l'erreur.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    +1 jwhite

    deplus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    designation_produit = '".$article."'";
    $query1 = mysql_query($req1);
    $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);
    $affected = mysql_affected_rows();
     
    $reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
    $querytot = mysql_query($reqtot);
    $fetchtot = mysql_fetch_array($querytot);
     
     
    $select = "SELECT  ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
    $quersel = mysql_query($select);
    Le select en rouge sert a rien pour moi puisque il me semble que tu sors de ta base ce que tu vien d'insereR....met plutot les champs que tu as inserer dans des variables ...



    Ps: Félicitations au Mans (pau catastrophique)
    Stay in Bed .. Save Energy

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ps: Félicitations au Mans (pau catastrophique)
    C'est clair, ce qui nous arrive est totalement inespéré, et quelle surprise de voir l'Elan se faire taper à domicile... Cholet va avoir de gros regrets d'avoir laissé passer la première manche à domicile. Et dsl pour samedi on sera à fond derrière Cholet, ça serait un truc de malade un derby MSB - CB en demi mais bon faut pas rêver...
    Le forum est mort aujourd'hui c'est chiant

    Heureusement qu'Océane nous file du travail Faut attendre qu'elle se lève maintenant...

    D'ailleurs autre remarque les deux SELECT ont la même condition WHERE, il serait plus judicieux de n'en faire qu'un seul...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Citation Envoyé par JWhite
    C'est clair, ce qui nous arrive est totalement inespéré, et quelle surprise de voir l'Elan se faire taper à domicile... Cholet va avoir de gros regrets d'avoir laissé passer la première manche à domicile. Et dsl pour samedi on sera à fond derrière Cholet, ça serait un truc de malade un derby MSB - CB en demi mais bon faut pas rêver...
    Le forum est mort aujourd'hui c'est chiant

    Heureusement qu'Océane nous file du travail Faut attendre qu'elle se lève maintenant...

    D'ailleurs autre remarque les deux SELECT ont la même condition WHERE, il serait plus judicieux de n'en faire qu'un seul...
    Oui bien mort le forum lol

    Pour le select c pas faux...

    Et la demi dont tu reves c'est fortement possible vu comment ils ont joués hier soir.....bon certes les 2pivots de la saison sont bléssés,le joker aussi donc la on jou avec le joker du joker médical....mais bon deja qu'on a pris 30point a domicile face a strasbourg.....faudrait qu'il se bouge les cus on se fais massacrer a l'interieur
    Stay in Bed .. Save Energy

  6. #6
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    oyé oyé
    bon maintenant les modifications s'affichent, mais quand je modifie la quantité d'un article, ça me modifie toutes les quantites de tous les articles :s parce que en faite quand je modifie je ne précise pas sur quelle ligne exacte du produit doit etre faite les modifications mais bon comment faire...

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Le "WHERE refproduit=" ne suffit pas ? Enfin si tu connais l'origine du problme ça devrait aller non... Sinon il faut donner plus de détails.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    arf non le WHERE ref_produit =... ne suffit pas.
    quand je modifie par exemple la quantité du produit de ref_produit = 1 et si j'ai ajouté à mon panier un autre produit (ref_produit = 2) de quantité X , j'ai ça (en faisant un echo de ma requete UPDATE):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE panier SET quantite = 4, total = 6396 WHERE ref_produit = '1' AND id_cli = '2'
    UPDATE panier SET quantite = 4, total = 3396  WHERE ref_produit = '2' AND id_cli = '2'
    alors que seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE panier SET quantite = 4, total = 6396 WHERE ref_produit = '1' AND id_cli = '2'
    devrait s'afficher..

    ça me modifie toutes les quantites..

  9. #9
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    en faite dans ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $modif = "UPDATE panier SET quantite = ".$_POST['quantite'].", total = ".$fetchdesi[1] * $_POST['quantite']."  
      WHERE ref_produit = '".$fetchsel[0]."' AND id_cli = '".$_SESSION['id_client']."'";
    ref_produit = '".$fetchsel[0]."' vient de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $select = "SELECT  ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
    et cette requete donne toutes les references des produits mis dans le panier, donc c'est normal que lorsque je veux modifier une quantite, ça me modifie tout.

    ya pas un moyen pour que ça me modifie simplement la quantité d'un seul produit?

    merci..

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Première chose, pour tes résultats de requêtes c'est pas terrible de faire $fetch[0], il est préférable de faire $fetch['nom_champ'], c'est beaucoup plus lisible (bis).

    J'ai du mal à te suivre, tu sais ce que tu dois faire mais tu le fais pas, où ça coince Tu as un problème avec tes requêtes et tes while, alors fais un echo de TOUTES tes requêtes pour voir laquelle n'a pas le résultat escompté.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  11. #11
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut snif
    oulala je me tire les cheveux depuis des heures et rien de concluant
    j'ai simplifié ce code mais rien à faire, ça me rajoute une ligne avec la modification au lieu d'afficher la modification dans le champs "quantite"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?
     
     session_start();
     $sessionidclient =  $_SESSION['id_client'];
     
     echo  $_SESSION['id_client']."Identifiant client";
     echo "<br><br>";
     
     $article = $_POST['article'];
     echo $article;
     echo "<br>";
    $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['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>
    ";
     
    }
     
    ?>
    ci joint l'imprime écran de ce que ça donne (j'ai voulu modifier la quantite initiale (qui est de 10) par 1)
    [ATTACH]imp_ecran[/ATTACH]
    Images attachées Images attachées  

  12. #12
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut j'arrive pas à modifier la quantité dans mon panier
    s'il vous plait aidé moi... j'arrive à rien ...

Discussions similaires

  1. Bonne pratique pour la mise à jour de données en base
    Par abbepierre94 dans le forum Silverlight
    Réponses: 3
    Dernier message: 23/08/2010, 23h12
  2. Réponses: 3
    Dernier message: 15/09/2008, 08h32
  3. Réponses: 3
    Dernier message: 18/07/2007, 17h20
  4. [VBA-E]Récupération de données pour mise à jour !
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 13/03/2007, 12h06
  5. Import XML pour mise à jour de données
    Par stylee307 dans le forum Access
    Réponses: 2
    Dernier message: 20/09/2006, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo