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 :

Champ mulitzones et auto-skip [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Champ mulitzones et auto-skip
    Bonjour,

    J'ai un souci, en voyant certains sites qui font ce que je souhaiterai faire, je me demande si je peux le faire sans javascript...

    Voici, supposons une date JJ-DDD-YYYY

    Il y a bien des façons d'encoder celle-ci.

    Une serait de définir 3 fields, jours, mois et année.
    Mais

    • Y a t'il moyen de faire un auto-skip de JJ à MM par ex ?
    • Faut'il définir 3 champs dans la forme ?
    • Si signe de ponctuation, il y a (ici les -) peut'on les skipper dans l'encodage ?


    3 bêtes questions auxquels JS réponds sans doute mais je n'en veux pas.
    En HTML 4, suis à peu près certains que ce n'est pas possible, HTML 5 ?
    Et même si je ne possède pas encore PHP5, ce n'est pas son objectif de résoudre ce genre de question et si il y a moyen, je n'ai pas vu où....

    Merci pour vos infos
    Esteban

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Y a t'il moyen de faire un auto-skip de JJ à MM par ex ?
    Pas sans JS.

    Faut'il définir 3 champs dans la forme ?
    Perso je préfère mettre la date dans un seul champ pour éviter d'avoir à cliquer sur le champ suivant à chaque fois.

    Si signe de ponctuation, il y a (ici les -) peut'on les skipper dans l'encodage ?
    Qu'appelles-tu encodage ?

    En HTML 4, suis à peu près certains que ce n'est pas possible, HTML 5 ?
    Je ne pense pas. A voir dans la section en question.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut multi champ & encodage
    Merci, cela confirme ce que je pensais.

    Par encodage, j'entends taper au clavier... simple non ?

    Merci en tout cas, j'attends encore 2 jours avant de cloturer la discussion !!
    Esteban

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Par encodage, j'entends taper au clavier...
    Pour faciliter la saisie j'autorise 31102010 ou 311010, pour le traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $n = strlen($_POST['date']) ; // Longueur de la saisie
    if ( $n == 6 ) { // Format JJMMYY
        $format = '%2s%2s%2s' ;
    } elseif ( $n == 8 ) { // Format JJMMYYYY
        $format = '%2s%2s%4s' ;
    }
    list($day, $month, $year) = sscanf($_GET['date'], $format) ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Encodage multi champ
    Pas con ton idée et cela évite en effet de cliquer ou la touche TAB

    Merci
    Esteban

  6. #6
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Mieux....
    Mais ceci aurait été mieux....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $n = strlen($_POST['date']) ; // Longueur de la saisie
    if ( $n == 6 ) { // Format JJMMYY
        $format = '%2s%2s%2s' ;
    } elseif ( $n == 8 ) { // Format JJMMYYYY
        $format = '%2s%2s%4s' ;
    }
    list($day, $month, $year) = sscanf($_POST['date'], $format) ;
    Pas grave.....
    Esteban

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et pourquoi ne veux tu pas de javascript tant que cela n'est pas intrusif ?

    Tu pourrais bien faire par exemple trois champs distincts avec passage automatique de l'un à l'autre en javascript ce qui serait pratique pour la très grande majorité des utilisateurs ayant javascript activé, et pour la très petite quantité de visiteurs pour lesquels javascript est désactivé ils cliquent dans le champs suivant ou utilisent la touche tab...

  8. #8
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Champ multi-zone
    Demain, je fais la date en 3 zones distinctes.
    Pour ce qui est de Jscript que je ne connais PLUS... c'est une autre histoire...
    Je pense que pour la plupart des utilisateurs qui utilisent la souris, l'autoskip n'est pas forcément nécessaire...

    Merci
    Esteban

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bon ok, mais juste à titre d'information pour les visiteurs qui liraient ce topic suite à une recherche sur le titre, voici un début de solution pour passer d'un champ à un autre avec un petit contrôle :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript">
    <!--
    function Controle_suivant(form, enCours, suivant, limite, evenement)
    {
    	//Pour que la tabulation avant/arrière, les flèches de navigation gauche/droite et capslock restent fonctionnelles
    	var touche = window.event ? evenement.keyCode : evenement.which;
    	if (touche == 9 || touche == 16 || touche == 20 || touche == 37 || touche == 39) return false;
     
    	// Teste que la valeur du champ est un entier (on pourrait faire plus simple) sinon efface le champ
    	var exp = new RegExp('^[0-9]+$','g');
        if(!(exp.test(enCours.value))) enCours.value = ''; 
     
    	// Passe au champ suivant (valeur de la variable "suivant") si le nombre de caractères à rentrer est atteint
    	if (enCours.value.length == limite) form[suivant].focus();		
    }
    -->
    </script>
    </head>
      <body>
        <form action = '#' >
    	<p>
    	Date au format numérique jj-mm-aaaa
    	</p>
    	<p> 
          <input type = "text" maxlength = "2" name = "jour" size = "2" onkeyup = "Controle_suivant(this.form, this, 'mois', 2, event)" />
          - <input type = "text" maxlength = "2" name = "mois" size = "2" onkeyup = "Controle_suivant(this.form, this, 'an', 2, event)" />
          - <input type = "text" maxlength = "4" name = "an" size = "4" onkeyup = "Controle_suivant(this.form, this, 'an', 4, event)" />
        </form>
    	</p>
      </body>
    </html>
    On pourrait améliorer ce code suivant les besoins ou sinon passer par exemple par jquery et un plugin auto-tab

  10. #10
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Autoskip...
    Merci pour le code.
    Je le conserve dans mes tablettes pour essayer de l'utiliser encore cette semaine.
    Je te dirais alors ce qu'il en est.
    Pour le moment, je parviens dans ma configuration HTML - PHP, ce qui ne facilite pas tjs les choses, à encoder une date et à faire en sorte qu'elle soit acceptée par checkdate et ma forme mais en un seul field.
    Je termine ma tâche actuelle, puis deux petites autres et simples puis je l'essaye.
    N'attends rien de ma part avant jeudi/vendredi.

    Merci, vraiment merci
    Esteban

  11. #11
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Code HTML -> PHP : Textarea
    Olivier,

    Je m'étonne du contenu de ton dernier mail car j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<textarea name="text" cols="'.$this->cols.'" rows="'.$this->rows.'">' ;
    echo (isset($_POST["text"])) ? $_POST["text"] : "" ;
    echo '</textarea>' ;
    Et jusqu'à preuve du contraire, cela fonctionne....
    Et je n'ai pas de if, j'utilise tjs loperateur tertiaire....

    On apprend tous les jours, non ?

    Esteban

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu fais pas de htmlspecialchars ?

  13. #13
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Et je n'ai pas de if, j'utilise tjs loperateur tertiaire....
    je vois pas pourquoi ca marcherai pas

    L'opérateur ternaire comme son nom l'indique, contient à minima 3 opérandes qui sont l'expression à tester, l'instruction si l'expression est réalisée et l'instruction si l'expression est non réalisée.

    Dans ton cas de figure, tu fais une instruction uniquement si ton expression se trouve réalisée (en gros tu fais un if sans le else) donc ton else correspond à l'instruction "" ce qui est pas forcément joli mais fonctionnel

    Ps: quand tu dis mail tu parles de message sur le forum ? Car je t'ai pas envoyé d'email sinon ^^

  14. #14
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Code HTML -> PHP : Textarea
    Non, je ne sais même pas ce que c'est, dsl....

    Esteban

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    L'opérateur ternaire comme son nom l'indique, contient à minima 3 opérandes qui sont l'expression à tester, l'instruction si l'expression est réalisée et l'instruction si l'expression est non réalisée.

    Dans ton cas de figure, tu fais une instruction uniquement si ton expression se trouve réalisée (en gros tu fais un if sans le else) donc ton else correspond à l'instruction "" ce qui est pas forcément joli mais fonctionnel
    tu peux en faire que 2 a partir de php 5.3, en omettant la condition positive

    Citation Envoyé par ETVigan
    Non, je ne sais même pas ce que c'est, dsl....
    c'est pour protégé ta valeur sinon bonjour le XSS

  16. #16
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Code HTML -> PHP : Textarea
    Dsl OLivier,

    J'ai envoyé le msg 'Je ne sais même pas ce que c'est' sur le mauvais post, le notre et tu l'as pris pour toi, dsl encore pour le temps que tu as mis pour me répondre

    Merci
    Esteban

  17. #17
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu peux en faire que 2 a partir de php 5.3, en omettant la condition positive
    je connaissais pas merci. Par contre, il auraient du le faire aussi en omettant la condition négative, cela aurait été plus utile

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/02/2009, 13h32
  2. Initialiser un champ de type Auto-incrément
    Par amtdev dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2008, 13h21
  3. Réponses: 3
    Dernier message: 26/07/2007, 16h23
  4. Réponses: 2
    Dernier message: 03/10/2006, 23h02
  5. Réponses: 1
    Dernier message: 25/09/2006, 10h18

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