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] Parcourir un tableau ? [Débutant(e)]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut [Tableaux] Parcourir un tableau ?
    Bonjour tout le monde,

    Alors voilà je débute en php et c'est un point que je n'ai jamais abordé. Je suis en train de faire une application de gestion de cartouches d'imprimantes. J'en suis à la partie "Sortie stocks".

    J'ai donc un tableau résultant d'une requête dans lequel je crée des zones de textes en boucle. Voici ce que ca donne :



    Voici le bout de code associé :
    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
    <form action="sortie_cart3.php?ref=<?php print($ref)?>" method="post" name="sortie_cart">
     
    <center>
    <table width=50% border=15 bgcolor="#99CC99" bordercolor="#FFFFCC">
     
    <tr align=center>          
          <td><b>Réf</b></td>
          <td><b>Date peremption</b></td>
          <td><b>Quantité</b></td>
          <td><b>Sortie</b></td>
    </tr>
     
    <?php
     
    $sql="SELECT ref, date_peremp, quantite FROM cartouche WHERE ref='$ref'";
     
    $req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    while ($ligne = mysql_fetch_array($req)) 
    {
       $date=$ligne["date_peremp"];
     
       echo "<tr>
       <td>".$ligne["ref"]."</td>
       <td>$date</td>
       <td>".$ligne["quantite"]."</td>
       <td><input type='text' name='$date' size=5 value=0></td>
       </tr>";
     
    }
     
    ?>
     
    </table>
     
    <br>
     
    <input type="submit" value="   Valider   ">
    </center>
     
    </form>
    Donc ce que j'aimerais, c'est parcourir mon tableau lors du clique sur "valider" pour faire des update sur la quantité en fonction des valeurs saisies dans les zones de textes.

    Quelqu'un aurait-il une petite piste ?

    Je vous remercie par avance

  2. #2
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    salut !

    tout d'abord il est etonant que tu n'est pas de message d'erreur au vue de ta requetes, car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="SELECT ref, date_peremp, quantite FROM cartouche WHERE ref='$ref'";
    n'est pas correct, il te faut concatener ta chaine de caractere sql avec la variable $ref, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="SELECT ref, date_peremp, quantite FROM cartouche WHERE ref='".$ref."'";
    ensuite pour que ton formulaire puisse faire un traitement sur la base de donné, il te faut faire un script php qui update ta DB et faire pointer ton formulaire sur ce script avec l'attribut "action".

    mais la ce n'est plus un pb de PHP et il faut poster sur le forum HTML

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  3. #3
    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
    C'est pas ce qu'il fait déjà là :
    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)

  4. #4
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Berrrrrkkk du bgcolor dans des balises html



    INVALID PAGE !!! Utilise le CSS !!!
    " Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley

  5. #5
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    salut

    dans ta page principale tu fait
    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
     
    <form action="sortie_cart3.php?ref=<?php print($ref)?>" method="post" name="sortie_cart">
     
    <center>
    <table width=50% border=15 bgcolor="#99CC99" bordercolor="#FFFFCC">
     
    <tr align=center>         
          <td><b>Réf</b></td>
          <td><b>Date peremption</b></td>
          <td><b>Quantité</b></td>
          <td><b>Sortie</b></td>
    </tr>
     
    <?php
     
    $sql="SELECT ref, date_peremp, quantite FROM cartouche WHERE ref='$ref'";
     
    $req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    $i=1;      
    while ($ligne = mysql_fetch_array($req))
    {
       $date=$ligne["date_peremp"];
     
       echo "<tr>
       <td>".$ligne["ref"]."</td>
       <td>$date</td>
       <td>".$ligne["quantite"]."</td>
       <td><input type='text' name='$date' size=5 value=0>
              <input type='hidden name='ref".$i."' value=".$ligne["ref"]."</td>
       </tr>";
       $i++;
    }
     
    ?>
     
    </table>
    <? echo "<input type='hidden' name='cpt' value='$i'>"; ?>
    <br>
     
    <input type="submit" value="   Valider   ">
    </center>
     
    </form>
    et sur la page de traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $j=1;
    while($j<=$_GET['cpt'])
    {
         $req="update (......) where ref='".$_GET['ref'.$j]."';";
         //execution requete...
    $j++;
    }
    Rod

  6. #6
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    Mais je crois que tout marche bien il a pas d'erreur vu qu'il nous a fait un "imprime ecran"
    tout d'abord il est etonant que tu n'est pas de message d'erreur au vue de ta requetes, car :
    Rod

  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
    Pas bête ça, ça peut servir. Merci funckfot
    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 du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Effectivement même sans concaténer je n'ai pas d'erreur, tout s'affiche parfaitement bien.

    Merci pour vos réponses en tout cas j'essai ca de suite

  9. #9
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Je vais être chiant mais :

    VALIDE TES PAGES !!!

    >> http://validator.w3.org/
    " Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley

  10. #10
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    sens de la deduction les gas


    lol²(special dédicace a vincent)

    ps: désoler pour les fautes je sais pas écrire
    Rod

  11. #11
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    le fait que tu puisse afficher une image n'implique pas forcement que ta logique fonctionne !

    pour ma part j'ai pas tout lu mais je vois une variable $sql qui commence par une double quote et au milieu une variable $reg entre simple quote sans operateur de concatenation.

    je ne sais pas sur quelle version de php il travaille mais combien meme son interpretezur le prends correctement, ca n'empeche de faire du code propre

    ce genre d'ecriture c'est un cas typique de probleme futur lorsque son site sera deplace sur un hebergeur ou que sa version de php evolura, ca va causer des bug et en generale tu met trois jours a identifier l'endroit ou ca a planté...


    s'il debute en PHP autant débuter tout de suite avec de bonne habitudes

    je maintiens donc ma remarque sur la syntaxe de sa requete

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  12. #12
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut bien
    il a raison sur le fait que les versions change et le mieux et de faire comme a dit wdionysos
    Rod

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    C'est corrigé wdion

    Je n'aurai pas le probleme de l'hebergeur puisque je travaille directement sur le serveur hebergeur de ma société, par contre je bosse en php4 et ils vont passer en 5 bientôt, il y aurai donc peut etre eu quelques problèmes, merci du conseil

    Et mLk92 je suis navré mais je n'ai pas le temps de m'occuper d'un CSS, mais tu as bien raison, cela aurait été beaucoup mieux

    Et pour finir Funkfot, et bien j'ai essayé ton bout de code mais ca ne marche pas, je n'ai aucun message d'erreur mais la page de traitement ne fait pas son boulot

    Je pense que le probleme se trouve dans ma requete, j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="update cartouche set quantite=quantite-??? where ref='".$_GET['ref'.$j]."';";
    Je ne sais pas quoi mettre , j'ai testé avec $date puisque ma zone de texte a pour name la date de peremption :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' name='$date' size=5 value=0>
    Mais ca ne marche pas. Je dois mettre le même nom pour chaque zone ? Du genre name='sortie' ou je laisse comme ca ?

    J'avour etre complètement paumé

  14. #14
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    Bon visiblement on a devier un peu de ton prob de depart ! donc j'ai un peu de mal a comprendre quel sont tes pb initiaux, j'ai repris le post depuis le debut.

    tu fais un select, tu recupere les resultat et tu les affiche dans ta page ! jusque ici tout va bien !


    mais ou est ta requete d'update ? peux tu nous monter le script php qui met ta base a jour.

    Le principe, a chaque fois que tu valide le bouton, tu passe en parametre de ton url tes meme variable php comme un lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://mapage.php?date='".$date."'&&ref='".$ref."'&&quantite='.$qte."'">Validez</a>
    et tu recupere cette requete dans un script php qui fait un update sur ta base puis recharge ta page d'origine qui refait un select


    etc...


    c'est ca que tu veux ???

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    En fait mon probleme c'est que je ne savais pas comment parcourir mon tableau. En fait l'utilisateur saisie les quantités et lorsque il valide je dois faire des update en boucle, tant qu'il y'a des lignes dans mon tableau, sachant que la clé primaire de ma table est "Ref,Date_peremp".

    ca fait donc : (en se basant sur mon screen)

    UPDATE cartouche SET quantite=quantite-zonesortie1 WHERE ref='FX3' AND date_peremp=zonedate_peremp1

    UPDATE cartouche SET quantite=quantite-zonesortie2 WHERE ref='FX3' AND date_peremp=zonedate_peremp2

    et ainsi de suite...

    J'espère que c'est un peu plus clair

    Mais je pense avoir trouvé la solution grace au script de funck, je test ca dès demain et je vous tiens au courant

  16. #16
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    juste une petite remarque à dyonisos, il est tout à fait normal qu'il n'y ait pas eu d'erreur avec ses quotes car les variables est écrites entre double quote sont interprétées. Ce n'est pas très propre, mais c'est correct. La concaténation est obligatoire s'il utilise des simple quotes.
    mais pourquoi tu cours?

  17. #17
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    si tu as bon, noublies pas le p'tit "résolu" sinon repost ici !

    WD 8)
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Bon bah c bon j'ai réussi

    Voilà donc le bout de script que ca me donne :
    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
    <?php
     
    $sql="SELECT ref, date_peremp, quantite FROM cartouche WHERE ref='".$ref."'"; 
     
    $req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    $i=1;
     
    while ($ligne = mysql_fetch_array($req)) 
    {
       $date=$ligne["date_peremp"];
     
       echo "<tr>
       <td>".$ligne["ref"]."</td>
       <td>$date<input type='hidden' name='date".$i."' value='".$date."'></td>
       <td>".$ligne["quantite"]."</td>
       <td><input type='text' name='sortie".$i."' size=5 value=0></td>
       </tr>";
     
       $i++; 
     
    }
     
    ?>
     
    </table>
     
    <?php echo "<input type='hidden' name='cpt' value='$i'>"; ?>
    Et sur la page de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $j=1; 
    while($j<$_POST['cpt']) 
    { 
    	$req="update cartouche set quantite=quantite-".$_POST['sortie'.$j]." where ref='".$ref."' and date_peremp='".$_POST['date'.$j]."';"; 
    	mysql_query($req);
    	$j++; 
    }
     
    ?>
    Encore un grand à vous tous, et surtout à Funck qui m'a bien mis sur la voie grâce à son script

  19. #19
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    BRAVO !!!
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2008, 20h44
  2. [Tableaux] Parcourir un tableau
    Par gewixmassiv dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2008, 17h17
  3. Réponses: 4
    Dernier message: 11/02/2008, 18h03
  4. [Tableaux] Parcourir un tableau PHP
    Par patjaff dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2007, 16h11
  5. [Tableaux] Parcourir un tableau en sens inverse
    Par phoque.r dans le forum Langage
    Réponses: 7
    Dernier message: 13/04/2007, 10h08

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