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 :

opérateur de coalescence non accepté


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut opérateur de coalescence non accepté
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $message = "";
    $message.= $_POST['prenom']." ".$_POST['nom']." souhaite être rappelé aux heures suivantes : ".($_POST["matin1"]) ?? NULL;
    echo $message."<br/>";
    donne ce message d'erreur : Warning: Undefined array key "matin1" in C:\projets\arnaudmarion\action-form-rappel.php on line 15
    Je suis en local et en PHP 8.2.2
    Quel est le problème SVP ?

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 436
    Points : 4 930
    Points
    4 930
    Par défaut
    Bonjour,

    Il faut mettre toute la condition entre parenthèse et pas seulement $_POST['matin1'] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($_POST["matin1"] ?? NULL)

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 785
    Points : 3 048
    Points
    3 048
    Par défaut
    Note : n'utilise pas NULL ici puisque tu souhaites concaténer des chaînes de caractères.

    Utilise plutôt une chaîne vide.

    Et oui, le diable se cache dans les détails.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Merci ; bien noté.
    Autre souci mais autre discussion vu que le titre ne correspond plus...

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Autre souci mais autre discussion vu que le titre ne correspond plus...
    Pas besoin ; je viens de trouver (et y a plus de null) :

    Code php : 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
      function disp_with_coma($str, $list)
            {
                if (($list != "") && ($str != ""))
                    return(", ".$str);
                else return $str;
            }
            $vars=[$_POST['matin1'] ?? "", $_POST['matin2'] ?? "", $_POST['aprem1'] ?? "", $_POST['aprem2'] ?? "", $_POST['aprem3'] ?? ""];
            $one_item_notnull = false;
            foreach($vars as $var)
                {
                    if (($var ?? "") !== "")
                        $one_item_notnull = true;
                }
            if (!$one_item_notnull)
                echo "Veuillez sélectionner au moins un horaire";
            else {
                $message = "";
                $list = "";
                foreach($vars as $var){
                    $list.=(disp_with_coma($var ?? "",$list));
                }
     
                $message.= $_POST['prenom']." ".$_POST['nom']." souhaite être rappelé aux heures suivantes : ".$list;
                echo $message."<br/>";

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 436
    Points : 4 930
    Points
    4 930
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (($var ?? "") !== "")
    peut être simplifié

    Et d'après ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $one_item_notnull = false;
    foreach($vars as $var){
         if (($var ?? "") !== "")
               $one_item_notnull = true;
    }
    if (!$one_item_notnull)
          echo "Veuillez sélectionner au moins un horaire";
    je vois que vous examinez les valeurs du tableau pour vous assurer qu'il y'a au moins une valeur non vide, array_filter est utile dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $one_item_notnull=!empty(array_filter($vars));
    Par défaut, array_filter retourne seulement les valeurs non vides.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     function disp_with_coma($str, $list)
            {
                if ((!empty($list))  && (!empty($str)))
                    return(", ".$str);
                else return $str;
            }
            $vars=[$_POST['matin1'] ?? "", $_POST['matin2'] ?? "", $_POST['aprem1'] ?? "", $_POST['aprem2'] ?? "", $_POST['aprem3'] ?? ""];
            $one_item_notnull=!empty(array_filter($vars)); //Par défaut, array_filter retourne seulement les valeurs non vides.

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

Discussions similaires

  1. Méthode non acceptée : ajout d'un objet dans une collection
    Par Nzs26 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 09/11/2007, 19h31
  2. caractère non accepté
    Par intelcore dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 30/06/2007, 20h58
  3. Saisie d'un numérique non acceptée
    Par pcayman dans le forum IHM
    Réponses: 3
    Dernier message: 19/05/2007, 23h09
  4. Coalesce non implémenté ?
    Par All Jinx dans le forum Paradox
    Réponses: 3
    Dernier message: 05/09/2006, 18h12
  5. [MySQL] champ non accepté ?
    Par Makari dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/08/2006, 23h41

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