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 :

[Tableaux] caddie php variable formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 78
    Points : 37
    Points
    37
    Par défaut [Tableaux] caddie php variable formulaire
    bonjour à tous

    j'aurais une question à poser.

    comment se fait-il que dans ce script:
    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
    <form method="POST" action="">
    <?php
    require('inc_connect.php');
    foreach($_POST['case'] as $modif)
    {
    $sql="Select* from base_articles where id='$modif'";
    $req=mysql_query($sql,$connexion)
    while( $data=mysql_fetch_array($req) )
     {
    echo"<b>Produit :</b>  <i>".$data['DESCRIPTIONFRANCAISE']."</i><br>";
    echo"<b>Quantité commandée :</b> <input type='text' 
    name='exqte[$modif]' value='".$_SESSION['panier'][$modif]."' size='2'><hr>";
    }//fin du while
    }//fin du foreach
    mysql_close();
    ?>
    <input type="submit" name="action" value="OK">
    </form>
    <?php
    le $modif concerne à la fois l'id du produit (where id='$modif'" ) ET le nombre rentré (qui est en fait la quantité voulue) dans le champ name='exqte[$modif]'? (value='".$_SESSION['panier'][$modif]."')

    alors que le formulaire qui demande ce nombre est:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type='text' name='qte' size='5'> <input type='submit' name='action' value='Commander'></td></tr>".
        "<input name='id' type='hidden' value='".$data['id']."'>";

    et les variables qui récupèrent ces champs sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id=$_POST['id'];
    $qte=$_POST['qte'];
    mis ensuite dans la variable session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['panier'][$id]=$qte;
    une idée ? merci d avance

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    c'est quoi ca ?
    une variable de tableau?
    si c'est le cas pourquoi n'est-il pas précédé d'un $?
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  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
    d'abord est que ce script est fonctionnel où tu as des erreurs si ou lesquel

    ensuite d'ou viens $_POST['case'] je pense qu'il contient les id que tu passe a la variable $modif donc $modif est bien l'id

    c'est quoi ca ?
    une variable de tableau?
    non tous simplement le nom du champ text ainsi cela permet de le récupérer dans le tableau $_POST['exqte'] à l'id du produit correspondany
    Stay in Bed .. Save Energy

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    en fait (si j ai bien compris car c est assez compliqué),
    ($_POST['case'] a pour valeur value='".$data['id']."' ca,je l avais pas dis... )

    donc quand je fais foreach($_POST['case'] as $modif),

    $modif va prendre la valeur de l id de l objet, d ou:

    $sql="Select* from base_articles where id='$modif'";

    maintenant,il faut savoir que

    $_SESSION['panier'][$id]=$qte; ou $id est l id de l objet et $qte le nombre d objet que tu veux.


    maintenant donc, quand je fais

    echo"<b>Quantité commandée :</b> <input type='text' name='exqte[$modif]' value='".$_SESSION['panier'][$modif]."' size='2'><hr>";

    $_SESSION['panier'][$modif] est egal a $_SESSION['panier'][$id] mais uniquement pour ce qui a été coché!

    c est donc normal que $modif soit a la fois l id
    ($sql="Select* from base_articles where id='$modif'")

    et la quantité dans le formulaire
    (name='exqte[$modif]' value='".$_SESSION['panier'][$modif]."')

    maintenant, la variable $modif contient autant d id qu il y a eu de case cochees de par la commande
    foreach($_POST['case'] as $modif)

    le nom du formulaire est donc un tableau qui contient tous les $modif car

    <input type='text' name='exqte[$modif]' value='".$_SESSION['panier'][$modif]."' size='2'><hr>";

    le tableau est donc de nom exqte

    dites moi si mes explications tiennent la route sil vous plais

    merci

  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
    tout le début c'est bon

    le nom du formulaire est donc un tableau qui contient tous les $modif car

    <input type='text' name='exqte[$modif]' value='".$_SESSION['panier'][$modif]."' size='2'><hr>";

    le tableau est donc de nom exqte
    cette partie permet dans ton formulaire de regrouper tout les champs text qui affiche la quantité dans un tableau exqte qui pourra etre recuper en $_POST

    ainsi pour un produit d'id=1 tu récuperas la quantité modifié grace à:

    $_POST['exqte'][1]
    Stay in Bed .. Save Energy

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    merci pour ta réponse

    maintenant voici la suite du code:
    en gros, si le gars a cliqué sur ok en modifiant le chiffre, ça enregistre la modification

    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
    // nous allons changer une comande : ETAPE 2
    if(isset($_POST['action']) and $_POST['action']=='OK')
    {
    foreach ($_POST['exqte'] as $type =>$nbre)
    {
    if( empty($nbre))// si l'internaute à changé la quantité à 0
    {
    unset($_SESSION['panier'][$type]);
    }
    else
    $_SESSION['panier'][$type]=$nbre;
    }//fin du foreach
    ?>
    <script language="Javascript">
    window.location.replace('Panier4_3.php');
    </script>
    <?php
    }//fin des changements ETAPE 2
    ?>
    Ce que je ne comprends pas c'est pourquoi on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($_POST['exqte'] as $type =>$nbre)
    et non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($_POST['exqte'][$modif] as $type =>$nbre)...

    merci d'avance

  7. #7
    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
    un print_r de $_POST['exqte'] t'aurait aidé à comprendre

    $_POST['exqte'] est un tableau contenant toutes les modification de quantités avec pour clé l'id donc on parcour le tableau et on lis chaque "id/quantité"


    alor que en faisant ça :$_POST['exqte'][$modif]

    $modif n'existe plus c'etait dans le foreach du formulaire et de toute maniere tu n'aurais qu'une valeur
    Stay in Bed .. Save Energy

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    merci beaucoup boo64

    je vais retravailler tout ca mais maintenant c est beaucoup plus clair grace a tes explications


    encore merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2006, 14h49
  2. [Tableaux] Structure PHP pour variable complexe
    Par winnie82 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 13h53
  3. [Tableaux] passer une variable php dans une url
    Par griese dans le forum Langage
    Réponses: 27
    Dernier message: 12/06/2006, 09h02
  4. [Tableaux] passage de variable formulaire
    Par Stef.web dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2006, 10h44
  5. Réponses: 4
    Dernier message: 05/10/2005, 18h19

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