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 formulaire précocher des cases pour modif


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 98
    Points : 34
    Points
    34
    Par défaut problème formulaire précocher des cases pour modif
    bonjour à tous.

    je vous expose mon problème:

    j'ai un site avec une page formulaire (composé de zones texte à remplir et de cases à cocher.

    quand on submit ca envoie sur une page qui contrôle si c'est bon, le cas échéant ca rentre les données en BDD, sinon ca revient sur le formulaire (qui est vide mais ça c'est pas le problème!)

    imaginons, qq1 remplit le formulaire, all is ok et ca rentre en base de données nickel.

    puis un jour il va sur modif.php pour modifier qqchose sur son formulaire (=identique a celui d'ajout.php), et là je souhaite le pré-remplir pour plus de simplicité; pour les zones textes aucun soucis j'ai fais une requête sur la BDD et je place les données choisies au préalable; mon problème est de recocher les cases, du moins les précocher;

    à savoir que lors de ajout.php, je fais une concaténation de toutes les cases cochées (si le mec coche ABS=coché, DA=coché, autoradio=coché, ca me ressort une chaine dans la BDD qui est --ABS--DA--autoradio--).
    donc ce que j'avais pensé faire, sachant que je n'ai aucun doublons au niveau des mots, c'était faire une fonction qui prend en paramètre la chaine de caractere dans la BDD et qui test si ABS est dedans, elle rend 1 et dans ce cas on CHECKED la case de ABS et ainsi de suite....

    mais cela me parait un peu laborieux pour si peu...

    avez vous un moyen plus pratique? une idée autre?

    d'avance merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Réponse sale :
    un http://php.net/explode + http://php.net/in_array devrait subvenir à tes besoins.

    Réponse propre :
    Une colonne pour chaque champs de tes formulaires. Pour les checkbox, cette colonne contient un booléen : 1 == coché, 0 == non coché

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 98
    Points : 34
    Points
    34
    Par défaut
    comme on se retrouve Mr.N

    dites moi une colonne = dans la base de données c'est cela?
    c'est pas bete du tout

    mais comment envoyé ça???

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par Skeud007
    dites moi une colonne = dans la base de données c'est cela?
    Oui une colonne c'est une colonne d'une table d'une base de données.

    Citation Envoyé par Skeud007
    mais comment envoyé ça???
    Envoyé ? quoi ? A qui ? par mail ?

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut! J'ai une démo, exactement sur ce sujet dans la FAQ :
    http://php.developpez.com/sources/?page=forms#postcheck

    J'explique rapidement:

    • On poste un tableau donc, chaque élément aura une checkbox. Ici, ce sont les jours de la semaine. La 1ère partie du code va préparer le formulaire, en particulier, on récupére le post précédent pour pouvoir réafficher les cases cochées ou non. Ce tableau est contenu dans la variable $select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $liste=Array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
    $cnt=count($liste);
    $select=@$_POST['select'];
    $ret='';
    • Puis viens ensuite la partie "traitement du formulaire", celle qui réceptionne et traîte les informations (enregistrement dans la base de données par exemple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['valider'])){
        for($x=0;$x<$cnt;$x++)
           if(isset($select[$x]))
              $ret.=$liste[$x].'<br/>';
    }
    • Puis viens enfin le formulaire HTML avec son bouton submit.
    Tu noteras que dans le code, la valeur des checkboxes est définie cochée en ajoutant checked dans la balise...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ret.='<br/><form method="post">';
    for($x=0;$x<$cnt;$x++){
       $ret.='<input type="checkbox" name="select['.$x.']"';
       if(isset($select[$x])) $ret.=' checked';
       $ret.='/>'.$liste[$x].'<br/>';
    }
    $ret.='<br/>'.
          '<input type="submit" name="valider" value=" ENVOYER "/>'.
          '</form>';
    echo $ret;
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/01/2008, 11h52
  2. [formulaire] activer des cases à cocher
    Par tomas dans le forum IHM
    Réponses: 2
    Dernier message: 25/04/2007, 16h17
  3. Réponses: 2
    Dernier message: 14/12/2006, 15h43
  4. Réponses: 4
    Dernier message: 05/12/2006, 15h50
  5. Réponses: 8
    Dernier message: 28/03/2006, 16h52

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