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 :

Portée des variables du formulaire ?


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Portée des variables du formulaire ?
    Bonjour à tous,

    Je suis en train de créer un petit générateur de bannières en gif animé.
    Dans un 1er temps, je demande combien d'images veut le user.
    J'ai ensuite un form qui demande d'entrer un texte et une couleur pour chaque image voulue. Jusque là, pas de prob.
    Voici comment s'articule 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
    
    //traitement du form pour transmettre à la page qui va générer la bannière et l'afficher avec un <img src="affiche_ban.php?params=$params......>
    
    if(isset($_POST['submit']{
    $texte = $_POST['texte'];
    $coul_T = $_POST['coul_T'];
    //comme ce sont des tableaux...
    foreach($_POST as $key => $value){
    if(is_array($value))
    for($i =1; $i<=$nb_im;$i++){
    
    if($key.$i == "texte".$i){$value[$i] = urlencode($value[$i]);}
    if($key.$i == "coul_T".$i){$value[$i] = str_replace("#","",$value[$i]);}
    $url .= "&".$key.$i."=".$value[$i].""; //$url étant les params du <img src> qui transmettent le texte et sa couleur.
    }
    }
    
    //champ dynamique en fonction de $nb_im
    for($i=1;$i<=$nb_im;$i++)
    {
    echo "<tr> 
    <td>Votre texte pour l'image N° $i</td>
    <td><input name='texte[$i]' type='text' value='?????'></td>
    </tr>";
    }
    Etant donné que le traitement du form est sur la même page que lui, il s'affiche en dessous de la bannière générée. Ca fonctionne très bien. Mon problème est que je voudrais réafficher les valeurs saisies dans le champ du fomulaire (value='?????') au cas où le user voudrait modifier un des params. J'ai essayé avec $GLOBALS sans succès. Bref je ne sais pas du tout comment faire étant donné que les valeurs sont issues d'un tableau...
    J'espère avoir été clair...
    Merci à ceux qui savent.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    avez vous essayer quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for($i=1;$i<=$nb_im;$i++)
    {
        $value = (isset($_POST[texte[$i]]))? $_POST[texte[$i]]:'';
    echo "<tr> 
    <td>Votre texte pour l'image N° $i</td>
    <td><input name='texte[$i]' type='text' value='$value'></td>
    </tr>";
    }
    Je n'ai pas testé, il y a peut-être une légère erreur de syntaxe

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci de vous pencher sur mon prob et pour votre suggestion...je viens de la tester. Hélas, cela n'affiche pas la valeur dans le champ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 112
    Points
    112
    Par défaut
    Pouvez vous essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for($i=1;$i<=$nb_im;$i++)
    {
         $index = "texte[$i]";
        $value = (isset($_POST[$index]))? $_POST[$index]:'';
    echo "<tr> 
    <td>Votre texte pour l'image N° $i</td>
    <td><input name='texte[$i]' type='text' value='$value'></td>
    </tr>";
    }

  5. #5
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Malheureusement, Fred64, cela ne fonctionne toujours pas...c'est à s'arracher les cheveux...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 112
    Points
    112
    Par défaut
    Désolé,

    personnelement j'aurai fait un peu différemment, a savoir :

    J'aurai nommé mes differents champs qui se répetent de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input name="texte_1" type="text" value="">
    <input name="texte_2" type="text" value="">
    <input name="texte_3" type="text" value="">
    ensuite pour savoir le nombre de champs renseignés, on compte de 1 à n en regardant si il y quelque chose dans texte_1, puis texte_2, etc..

    Pour le réaffichage des champs avec les valeurs déjà saisies lors de la soumission di formulaire, j'aurai fait quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            for ($i=1; $i<=$nb_champs; $i++){
                    $dynamique = 'texte_'.$i; 
                    $value = $_POST[$dynamique];
                    echo "<input name='texte_$i' type='text' value='$value'>";
            }
    (ce n'est qu'un exemple pour le principe)

    Car il n'est pas aisé dans votre cas d'accéder a des variables dynamiques dans un tableau $_POST ( bien que cela soit certainement possible )

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui, j'y ai bien pensé, mais je suis un peu obligé d'utiliser une boucle for pour afficher mes champs à l'ouverture du formulaire, car leur nombre dépend du var $nb_im renseigné auparavant. Si le user veut 2 img dans son gif animé, alors j'affiche 2 champs texte...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 112
    Points
    112
    Par défaut
    D'accord, qu'est ce qui vous empeche de faire ceci :

    Remplacez mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input name="texte_1" type="text" value="">
    <input name="texte_2" type="text" value="">
    <input name="texte_3" type="text" value="">
    par celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Pour l'affichage initial :
     
     for ($i=1; $i<=$nb_champs; $i++){
                    echo "<input name='texte_$i' type='text' value=''>";
            } 
     
    // pour le réaffichage apres soumission :
     
            for ($i=1; $i<=$nb_champs; $i++){
                    $dynamique = 'texte_'.$i; 
                    $value = $_POST[$dynamique];
                    echo "<input name='texte_$i' type='text' value='$value'>";
            }
    Ne sachant pas si vous utilisez la même page pour l'affichage initial et pour le résultat après soumission, je suis un peu dans le vague, désolé, j'espère avoir compris votre problème...

  9. #9
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui le traitement est le form sont sur la même page, puisque le form s'affiche à nouveau sous le traitement. Mais j'ai besoin que la var $_POST['texte'] soit un tableau pour le traitement. C'est pourquoi j'utilise
    name='texte[$i]'
    au lieu de
    name='texte_$i'

  10. #10
    Membre régulier Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 261
    Points : 107
    Points
    107
    Par défaut
    il faut faire echo "...".$value."...";
    --
    Dépanneur Informatique à Domicile dans le Valenciennois
    https://www.depannage-informatique-valenciennes.site/

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par harlock59
    il faut faire echo "...".$value."...";

    Il faut lire les contributions précédentes pour faire une suggestion intéressante

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  2. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  3. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  4. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  5. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05

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