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 :

Validation que je ne réussi pas à faire.. [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Points : 72
    Points
    72
    Par défaut Validation que je ne réussi pas à faire..
    Bonjour,

    Voici un projet je fais fait en parallèle à mon cours universitaire....

    http://benoitmignault.ca/calculatrice/calcul.php

    Lorsque je saisie 88866rr (les chiffres avec le boutons ou dirait dans le textfield)

    et que je viens pour appuyer sur un des type d'opération, les caractères non numériques s'effacent...

    Mais j'aimerais plus avoir un résultat du genre textfield = NULL

    Voici un extraint de mon code PHP 7
    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
     
    // Lorsqu'on pèse sur l'une des opérations arithmétiques on commence à préparer l'opération futur
        if (isset($_POST['add']) || isset($_POST['sous']) ||
            isset($_POST['multi']) || isset($_POST['div'])){
            // On ne peut pas faire une opération si le nombre 1 est vide
            if (!is_numeric($nombre1) || $nombre1 == NULL){
                $nombre1 = "nombre 1 invalide";
            } else {              
                foreach($_POST as $key => $info){ 
                    // En fonction de la confition du if, il peut avoir seulement le type opérateur 
                    // qui sera utiliser plutard dans un switch/case pour déterminer de quel genre opération qu'on a à faire
                    if (($key != "nombre1") && ($key != "nombreFinal") && 
                        ($key != "nombre2") && ($key !="typeOpe")){                    
                        $typeOpe = $info;                     
                    }
                }
            }            
        }
    Quelqu'un aurait des idées ?

    Je mentionne que je fais tous ça en php seulement sans JS pour le fun...

  2. #2
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    Salut.

    Je sais pas si tu le sais, mais en PHP tu ne peux rien faire tant que l'utilisateur n'a pas cliqué sur le bouton du formulaire ; c'est la grosse différence avec JS et c'est pourquoi on retrouve souvent les deux en meme temps.

    Bref si toutefois on voulait faire quelque chose lorsque l'utilisateur clique tu le bouton du formulaire, cela ressemblerait a peu près à ca :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <?php
     
    // En temps normal j'aurais fait un code plus élaboré mais je ne veux pas t'embrouiller
     
    // On va collecter les erreurs dans ce tableau
    $errors = [];
    $result = null;
     
    // Est-ce que le formulaire à été soumis ?
    if (!empty($_POST)) {
     
        // Validation
        if (!array_key_exists('typeOpe', $_POST)
            || !array_key_exists('nombre1', $_POST)
            || !array_key_exists('nombre2', $_POST)
        ) {
            $errors[] = 'Le formnulaire est corrompu ; des clefs sont manquantes';
     
        } elseif (empty($_POST['typeOpe'])) {
            $errors[] = 'Opérateur manquant';
     
        } elseif(empty($_POST['nombre1'])) {
            $errors[] = 'Valeur manquante pour le premier nombre';
     
        } elseif(empty($_POST['nombre2'])) {
            $errors[] = 'Valeur manquante pour le deuxième nombre';
        }
     
     
        // Cela ne sert a rien de continuer si il y a des déjà des erreurs
        if (empty($errors)) {
            // Transformation des valeurs (tu as dis que tu voulais supprimer automatiquement ce qui n'est pas numérique
            // Les expressions régulières sont très pratiques dans ce cas la
            $_POST['nombre1'] = preg_replace("/[^0-9]/", '', $_POST['nombre1']);
            $_POST['nombre2'] = preg_replace("/[^0-9]/", '', $_POST['nombre1']);
     
            switch ($_POST['typeOpe']) {
                case '+':
                    $result = $_POST['nombre1'] + $_POST['nombre2'];
                break;
                case '-':
                    $result = $_POST['nombre1'] - $_POST['nombre2'];
                break;
                case '*':
                    $result = $_POST['nombre1'] * $_POST['nombre2'];
                break;
                case '/':
                    $result = $_POST['nombre1'] / $_POST['nombre2'];
                break;
                default:
                    $errors[] = 'Opérateur invalide';
                break;
            }
        }
    }
    ?>
     
    <html>
        <head></head>
        <body>
     
        <?php
            // Si il y a des erreurs on les affiches
            if (!empty($errors)) {
                echo '<ul>';
                foreach ($errors as $error) {
                    echo '<li>' . $error . '<li>';
                }
                echo '</ul>';
            }
        ?>
            <form method="post">
                <input type="text" name="nombre1" value="<?php if (isset($_POST['nombre1'])) { echo $_POST['nombre1']; } ?>">
                <input type="text" name="typeOpe" value="<?php if (isset($_POST['nombre1'])) { echo $_POST['typeOpe']; } ?>">
                <input type="text" name="nombre2" value="<?php if (isset($_POST['nombre1'])) { echo $_POST['nombre2']; } ?>">
                <input type="text" name="nombreFinal" value="<?php echo $result ?>">
            </form>
        </body>
    </html>

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Points : 72
    Points
    72
    Par défaut
    Merci ! Ça répond à ma question !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ne dit pas pourquoi ton code de départ ne donnait pas le résultat attendu.
    Tu avais à mon avis sûrement une conversion en entier de ta chaine mais tu n'as pas montré la bonne partie du code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. une manipulation de Form que je ne sais pas faire
    Par JeanNoel53 dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/02/2011, 14h19
  2. Sélection que je n'arrive pas à faire
    Par Thewil dans le forum jQuery
    Réponses: 2
    Dernier message: 16/06/2009, 09h05
  3. Réponses: 6
    Dernier message: 13/09/2006, 19h02
  4. Ce que je n'arrive pas à faire ou à trouver.
    Par warwink dans le forum Windows Vista
    Réponses: 13
    Dernier message: 16/06/2006, 17h00
  5. Une requête que je n'arrive pas à faire
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/12/2005, 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