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 :

Problème avec Array + Form


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut Problème avec Array + Form
    Bonjour à tous,

    voilà j'ai un gros soucis depuis hier soir sur un projet qui doit être terminé pour vendredi :/

    Donc, je vais essayer de faire simple...
    J'ai une première page où je choisi un nombre de cellule de texte.
    Je valide et arrive sur une seconde page avec le nombre de cellule de texte demandé.
    Du moins en terme de ligne car si sur la première page je met 4 j'aurais 4 lignes composées chacunes de :
    Un champ texte + un label + un champ texte + une liste déroulante.

    Le tout est dans une boucle for, voir ci-dessous :
    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
     
    $j = $_SESSION['nbr_stack'];
    for ($i = 0; $i <= $j-1; $i++)
    {
    echo '<div><input type="text" name="txt_stack['.$i.']" id="txt_stack['.$i.']" value="" />
     
    	<label for="txt_stack['.$i.']">ByPlies 0/45/-45/90</label>
     
    	<input type="text" name="nbr_stack['.$i.']" id="nbr_stack['.$i.']" value="" />
     
    	<select name="list_stack" id="list_stack">';
     
    	if (isset($_POST["IMA"])) 
    		echo '<option value="lst_stack['.$i.']">IMA_M21E_268_0.254</option>';
     
    	if (isset($_POST["T800"])) 
    		echo '<option value="lst_stack['.$i.']">T800_M21_268_0.25</option>';
     
    	echo '</select></div>';
    }
    (problème réglé avec les listes déroulante, voir autre post)

    Le problème viens de mon txt_stack['.$i.'] et de mon nbr_stack['.$i.'] (et donc aussi du lst_stack['.$i.'])

    Bon, cette page fonctionne, le soucis viens quand je valide avec un bouton.
    J'arrives donc sur la 3° page et là, impossible de récupérer mes variables.

    En fait, il faudrait que mes variables soit à la fois affiché mais aussi écrite dans un fichier texte. Enfin, si vous pouvez m'aider pour l'un je devrais arriver à faire l'autre.

    Dans la page 3, je ne peux pas trop vous montrer de code car j'ai essayé tellement de trucs que je ne sais plus ce qui est bon ou pas.


    Merci pour vos réponses.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Par défaut
    Assez simple ment, ton nbr_stack et ton txt_stack seront passées à ton script3 comme un array.

    Il te suffit donc d'itérer dessus pour voir ce qui se passe.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    Merci pour ta réponses mais est-ce que tu peux être plus explicite ?

    J'ai essayer des trucs du genre :
    $variable = $_SESSION['nbr_stack'];

    Ca ne fonctionne pas.

    var_dump ($_SESSION['nbr_stack']) me donne un résultat NULL.

    EDIT : J'ai essayé aussi stack[0][1] (0 et 1 remplacé par des variables) mais je ne sais pas comment faire les afficher avec un echo.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    Citation Envoyé par GoodWear Voir le message
    J'ai essayer des trucs du genre :
    $variable = $_SESSION['nbr_stack'];

    Ca ne fonctionne pas.

    var_dump ($_SESSION['nbr_stack']) me donne un résultat NULL.

    EDIT : J'ai essayé aussi stack[0][1] (0 et 1 remplacé par des variables) mais je ne sais pas comment faire les afficher avec un echo.
    essaie var_dump($_SESSION); ou print_r($_SESSION); tout en te rassurant que session_start() a ete appele au bon moment et bon endroit

  5. #5
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut,
    Le problème viens de mon txt_stack['.$i.'] et de mon nbr_stack['.$i.'] (et donc aussi du lst_stack['.$i.'])
    tu veux dire que txt_stack['.$i.'] sont des tableaux ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    salut,


    tu veux dire que txt_stack['.$i.'] sont des tableaux ?
    Oui.

    En fait là dans mon for j'ai des txt_stack['.$i.'] mais aussi des nbr_stack['.$i.']
    Donc ca me fais plusieurs tableaux et je ne sais pas comment m'y prendre pour afficher dans la page suivante ces mêmes tableaux.

    C'est à dire...

    Dans ma page 2 j'ai, admettons, une ligne avec donc 1 champ texte, un label, un autre champ texte et pour finir une liste déroulante.

    L'utilisateur va remplir les deux champs de textes et choisir un choix dans une liste déroulante. Le tout est affiché par une boucle for et donc les variables sont incrémentés.

    Le truc c'est qu'a la page suivante, je vais repasser par une boucle for pour tout affiché.
    MAIS... Je dois tout afficher ligne par ligne.
    hors, si je passe par un foreach (comme je l'ai fais au début) je vais pouvoir passer en revue ma première variable mais pas la 2°. En tout cas pas sur la même ligne...

    Putain j'essaye d'être clair mais j'ai peur de vous embrouiller, est-ce le cas ?

    (si oui je met tout le code si non je continu, lol)

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut Problème avec Array + Form
    Je suis du meme avis que mvachette.
    Surtout verifie si ton txt_stack est correct. Si il correct, verifie
    que la session est demarree ( l' appel de session_start() avant tout output )

    Si la page no 3 manque seulement les valeurs, ce sera parce que tu ne les as pas donnees a la page 2 : tu fais value =""

    Bonne chance

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    En fait au tout début de ma page j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
          session_name('calcul');
          session_start();
    ?>
    C'est écris sur les 4 premières lignes de chaque page.

    Ensuite j'ai dans ma bailse body :
    Mais j'ai d'autres variables SESSION qui fonctionnes. Là mon problème c'est soit le array soit d'avoir un array associatif (ou multidimentionnel).

    Exemple, si j'ai txt_stack [1][0], comment je dois l'affichier ?

    Merci.

  9. #9
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Exemple, si j'ai txt_stack [1][0], comment je dois l'affichier ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $txt_stack [1][0];

    si tu veux passer des valeurs, alors serts toi des formulaires:
    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
     
    $j = $_SESSION['nbr_stack'];
    for ($i = 0; $i <= $j-1; $i++)
    {
    echo ' <form action="page_suivante.php" method="post">
          <div><input type="text" name="txt_stack['.$i.']" id="txt_stack['.$i.']" value="" />
     
    	<label for="txt_stack['.$i.']">ByPlies 0/45/-45/90</label>
     
    	<input type="text" name="nbr_stack['.$i.']" id="nbr_stack['.$i.']" value="" />
     
    	<select name="list_stack" id="list_stack">';
     
    	if (isset($_POST["IMA"])) 
    		echo '<option value="lst_stack['.$i.']">IMA_M21E_268_0.254</option>';
     
    	if (isset($_POST["T800"])) 
    		echo '<option value="lst_stack['.$i.']">T800_M21_268_0.25</option>';
     
    	echo '</select></div>
                     </form> ';
    }
    une fois sur la page page_suivante.php, tu les récupéres par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $txt_stack = $_POST['txt_stack'];
    //de meme pour les autres
    //...
    print_r($txt_stack);

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 106
    Par défaut
    @ Thes32 : merci pour ta réponse.

    Par contre je suis sur les fesses... Effectivement ça fonctionne.
    Mais pourquoi ???

    Dans mon code, j'avais :
    $txt_stack = $_SESSION['txt_stack'];

    Si je met :
    $txt_stack = $_POST['txt_stack'];
    Ca fonctionne.

    Tu peux m'expliquer pourquoi ?

    Merci.

Discussions similaires

  1. Problème avec la Form Principale
    Par zagmoh dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2007, 23h15
  2. [MySQL] Problème avec array
    Par Dantahoua dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/03/2007, 22h53
  3. Problème avec document.forms
    Par Kernald dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2007, 12h15
  4. Problème avec HTML::Form
    Par Woufeil dans le forum Web
    Réponses: 1
    Dernier message: 05/06/2006, 13h59
  5. problème avec les forms 6i!
    Par JauB dans le forum Oracle
    Réponses: 2
    Dernier message: 07/11/2005, 08h33

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