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 :

Concaténation de variables $_POST


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Concaténation de variables $_POST
    Bonjour

    Je débute en php et j'ai un peu de mal avec les tableaux !

    J'ai un formulaire par lequel je récupère 8 variables $_POST : $_POST["id_langue_1"], $_POST["id_langue_2"], $_POST["id_langue_3"], etc

    Dans le formulaire elles peuvent prendre les valeurs de lettres de l'alphabet :
    $_POST["id_langue_1"] peut devenir "a", $_POST["id_langue_2"] peut devenir "b", $_POST["id_langue_3"] peut devenir "c", etc

    Au traitement du formulaire je voudrais concaténer ces variables $_POST si elles existent en 1 seule variable id_langue qui sera de type VARCHAR(8) dans ma base de données.

    Par exemple en final cette variable id_langue pourrait être égale à : "abe"
    dans le cas ou $_POST["id_langue_3"] et $_POST["id_langue_4"] n'existaient pas.

    Ou alors égale à "bcd" dans le cas ou $_POST["id_langue_1"] n'existait pas.

    J'ai commencé à essayer de le faire avec un tableau en testant si $_POST existait. Puis il me faudrait concaténer ensuite les variables du tableau mais je patauge un peu. Pour l'instant ça donne ça mais je bute pour la suite...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ($i=1; $i<9; $i++){ 
    	if (isset($_POST['id_langue_'.$i.'']))
    	$tab_langue[$i] = array(($_POST['id_langue_'.$i.'']));
    }
    Pouvez-vous m'aider ?

    Merci

  2. #2
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonsoir,
    Les champs de ton formulaire sont égals à "0" ou ils sont vides ?

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Ils sont vides
    Il pouvait y avoir une confusion en effet...

    Si l'utilisateur n'a pas coché les cases ils sont vides (c'est une checkbox)

  4. #4
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Pourquoi ne pas faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $langue = $_POST['id_langue_1'].$_POST['id_langue_2'].$_POST['id_langue_3'].$_POST['id_langue_4'].$_POST['id_langue_5'].$_POST['id_langue_6'].$_POST['id_langue_7'].$_POST['id_langue_8'];

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Réponse
    Pas mal !

    J'ai peur toutefois que si une variable n'est pas renseignée ça me fasse un caca ! Non ?

    J'essaie de suite...

  6. #6
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Si ta checkbox n'est pas cochée elle ne renvoie pas de valeur, donc dans la concaténation c'est comme si elle n'était pas prise en compte.
    Tu as testé ?

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut erreur
    Ca me fait une erreur "unexpected $end" sur $id_langue en arrivant car les valeurs $POST n'existent pas.

    Il faudrait ajouter une condition "si le formulaire a été posté" avant la concaténation que tu m'as donnée...

  8. #8
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Regarde si tu as bien mis un ";" à la fin de la concaténation ou autre part.
    Tu dois avoir le numéro de ligne normalement ...

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Accolade
    Exact il me manquait une accolade sur une ligne ! Tu es très fort !

    Maintenant j'ai une erreur "Undefined index" sur tous les id_langue_1, id_langue_2, etc sur la ligne de la concaténation. Il ne faudrait faire la concaténation que si le formulaire a été posté car en arrivant les variables $POST n'existent pas alors ça plante.


    Je te mets le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $id_langue = ($_POST["id_langue_1"].$_POST["id_langue_2"].$_POST["id_langue_3"].$_POST["id_langue_4"].$_POST["id_langue_5"].$_POST["id_langue_6"].$_POST["id_langue_7"].$_POST["id_langue_8"]);

  10. #10
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Il faudrait me montrer tout ton code car avec le code actuel, tu ne dois pas avoir d'erreur ...

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut 1200 lignes
    Il fait 1200 lignes... le formulaire et le traitement sont sur la même page.

    Mais pas besoin il suffit juste de mettre une condition "si le formulaire est posté" avant la concaténation puisque l'erreur vient de là !

    Je crois que ça existe mais je ne connais pas la syntaxe... Sinon je vais mettre des conditions "SI $_POST["id_langue_1"] existe OU SI $_POST["id_langue_2"] existe OU SI $_POST["id_langue_3"] existe, etc..." avant la concaténation et ça passera.

  12. #12
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    C'est surtout la partie traitement qui m'intéresse ...
    EDIT : Tu dois utilser des variables $_POST pour effectuer des if, non ?

  13. #13
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Ca marche !
    J'ai ajouté les conditions de mon précédent message. je n'ai plus le message d'erreur "Undefined index" et la concaténation fonctionne même si une variable $POST n'a pas été renseignée.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ((isset($_POST["id_langue_1"])) || (isset($_POST["id_langue_2"])) || (isset($_POST["id_langue_3"])) || (isset($_POST["id_langue_4"])) || (isset($_POST["id_langue_5"])) || (isset($_POST["id_langue_6"])) || (isset($_POST["id_langue_7"])) || (isset($_POST["id_langue_8"]))) {
    $id_langue = ($_POST["id_langue_1"].$_POST["id_langue_2"].$_POST["id_langue_3"].$_POST["id_langue_4"].$_POST["id_langue_5"].$_POST["id_langue_6"].$_POST["id_langue_7"].$_POST["id_langue_8"]);}

    Ca va alléger ma base de données ! Au lieu de 8 champs je n'en ai plus qu'1 !
    Maintenant il me reste décoder dans l'autre sens pour dire que "a" = anglais, "b" = français, "c" = allemand, etc ! Mais ceci est une autre histoire...!

    Tu ne connais pas la condition "si le formulaire n'a pas été posté" ? Je l'ai déjà vue mais je ne l'ai pas notée.. C'est pas $POST[SERVER] ou quelque chose comme ça ?

    Ca aurait été plus élégant que cette série de conditions !

  14. #14
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Si le submit de ton formulaire ce fait avec un bouton, tu lui donnes un nom(au bouton) et ensuite tu fais un test à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_POST['nom_du_bouton'])) {
    .................}

  15. #15
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Ok
    Oui exact je le savais mais cette information s'était perdue dans les méandres de mon cerveau malade...!

    Merci pour ton aide car je n'aurais pas eu l'idée de faire une concaténation directe... Pourquoi faire simple qd on peut faire compliqué !

    J'ai posté un autre message aujourd'hui mais le problème me semble un peu plus épineux....

    http://www.developpez.net/forums/f92...ngage/debuter/

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

Discussions similaires

  1. Concaténation dans la variable $_post
    Par fixbraun dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2007, 18h12
  2. Réponses: 1
    Dernier message: 30/12/2005, 10h57
  3. Concaténation de variable ???
    Par dj-julio dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2005, 14h10
  4. [SQL] Concaténation de variables
    Par dogi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/11/2005, 20h49
  5. Concaténer deux variables ?
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 19/12/2003, 13h53

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