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

JavaScript Discussion :

Mettre une condition à une ligne de code selon une variable booléenne.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2021
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 276
    Par défaut Mettre une condition à une ligne de code selon une variable booléenne.
    Bonjour,

    je cherche comment faire pour insérer une condition dans un code javascript

    Le code ci-dessous me sert à récupérer des variables et les insérer dans un tableau qui est exploité plus loin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Nous initialisons une liste de marqueurs (tableau de positions)
     var positions = 
    {
      "id5": { "lat": lat5, "lon": lon5, "nomtete": [tete5], "etiquette": [nom5], "lieu": [lieu5], "horodate": [horodate5] },
      "id4": { "lat": lat4, "lon": lon4, "nomtete": [tete4], "etiquette": [nom4], "lieu": [lieu4], "horodate": [horodate4] },
      "id3": { "lat": lat3, "lon": lon3, "nomtete": [tete3], "etiquette": [nom3], "lieu": [lieu3], "horodate": [horodate3] },
      "id2": { "lat": lat2, "lon": lon2, "nomtete": [tete2], "etiquette": [nom2], "lieu": [lieu2], "horodate": [horodate2] },
      "id1": { "lat": lat1, "lon": lon1, "nomtete": [tete1], "etiquette": [nom1], "lieu": [lieu1], "horodate": [horodate1] },
    };
    Le tableau comporte au maximum 5 lignes, comme vous le voyez ci-dessus. Avec chacune 6 variables (longitude latitude, nom, etiquette, lieu et horodate)
    Ici je les ai déterminées en dur puisque je ne sais pas faire autrement.
    Dans certaines conditions (que je vais probablement gérer par une 7eme variable genre ok#) je veux que la ligne ne puisse pas exister.
    Genre si la variable ok3 est false, je ne veux pas construire la ligne "id3" dans ce tableau (et donc n'avoir un tableau que de 4 lignes : 1 2 4 et 5).

    Comment je pourrais coder ça ?

  2. #2
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2021
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 276
    Par défaut
    Est-ce que ça peut marcher si, par exemple, je code ça façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (okN == true) {
       j'écris le code de la ligne N;
      } else {
        je laisse la ligne vide;
      }
    ?

    ce qui donnerait, une fois développé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var positions = 
    {
      if (ok5 == true) {  "id5": { "lat": lat5, "lon": lon5, "nomtete": [tete5], "etiquette": [nom5], "lieu": [lieu5], "horodate": [horodate5] }, } else {}
      if (ok4 == true) {  "id4": { "lat": lat4, "lon": lon4, "nomtete": [tete4], "etiquette": [nom4], "lieu": [lieu4], "horodate": [horodate4] }, } else {}
      if (ok3 == true) {  "id3": { "lat": lat3, "lon": lon3, "nomtete": [tete3], "etiquette": [nom3], "lieu": [lieu3], "horodate": [horodate3] }, } else {}
      if (ok2 == true) {  "id2": { "lat": lat2, "lon": lon2, "nomtete": [tete2], "etiquette": [nom2], "lieu": [lieu2], "horodate": [horodate2] }, } else {}
      if (ok1 == true) {  "id1": { "lat": lat1, "lon": lon1, "nomtete": [tete1], "etiquette": [nom1], "lieu": [lieu1], "horodate": [horodate1] }, } else {}
    };
    Mmmh, ça me semble quand même bancal, mon truc. j'ai l'impression qu'il manque des ; mais je ne sais pas où les mettre.

  3. #3
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    d'ou viennent les valeurs de la variable ? comment est construit l'objet positions ?

  4. #4
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2021
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 276
    Par défaut
    Citation Envoyé par -Nikopol- Voir le message
    d'ou viennent les valeurs de la variable ? comment est construit l'objet positions ?
    Ahah, terrible question. Enfin, non, c'est la réponse qui va être terrible, surtout…

    Donc, au départ on a des données encodées en xml (je ne vais pas alourdir en expliquant la collecte des données xml, ce qui n'aurait pas d'intérêt, il me semble) sous la forme suivante

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <donnees>
    	<personne id="1">
    		<nom>Jérôme</nom>
    		<tete>Jerome</tete>
    		<lieu>sur la mezzanine devant un écran</lieu>
    		<latitude>48.15</latitude>
    		<longitude>1.23</longitude>
    		<horodate>14 Dec 2021, 19 : 51</horodate>
    	</personne>
    etc. jusqu'à id="5"


    Ce xml est d'abord lu dans par du code PHP pour en extraire les variables

    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
    <?php
     
          // le code simplexml_load_file convertit un fichier XML en objet
          $donnees = simplexml_load_file ( 'donnees.xml' ); 
     
          // Pour chaque <personne>, nous extrayons <nom>, <tete>, <lieu>, <horodate>, <latitude» et <longitude>
          // pour les injecter dans des variables PHP qui seront récupérées par le script ensuite
          foreach ($donnees -> personne as $personne)
            {
            if ($personne->latitude=='0.0' && $personne->longitude=='0.0')
              {} else {
              if ($personne['id'] == '5') 
                {
                $nom5 = $personne -> nom ;
                $tete5 = $personne -> tete ;
                $lieu5 = $personne -> lieu ;
                $horodate5 = $personne -> horodate ;
                $lat5 = $personne -> latitude ;
                $lon5 = $personne -> longitude ;
                }
     // etc pour les id 4 3 2 et 1
              }
            } 
        ?>

    Ici on voit que j'ai mis deux conditions if afin de ne pas récupérer les données des personnes dont les valeurs latitude et longitude sont égales à 0.0, car je ne veux pas les afficher sur la carte (je vais les traiter autrement).
    Après ce code PHP, on a donc des variables de type nomN, teteN, lieuN etc (N pour chaque id de 1 à 5, sauf ceux qui ont été exclus par les if)
    je n'ai pas du tout incorporé de variable booléenne okN pour séparer ceux qui passent le double if et ceux qui ne le passent pas pour le moment. Mais on peut facilement l'imaginer.

    Et plus loin, DANS ce même fichier PHP (je n'ai pas encore réussi à traiter ça dans un .js à part, ça fait l'objet d'une autre discussion), le script qui réintègre ces variables, il ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script>
    // récupération des variables PHP personne 1
          var nom1='<?PHP echo $nom1;?>';
          var tete1='<?PHP echo $tete1;?>';
          var lat1='<?PHP echo $lat1;?>';
          var lon1='<?PHP echo $lon1;?>';
          var horodate1='<?PHP echo $horodate1;?>';
          var lieu1='<?PHP echo $lieu1;?>';
    etc jusqu'à 5
    Déjà, ici il faut peut-être que je conditionne la récupération des données à un true/false via le okN pour éviter des msg d'erreur s'il essaye de récupérer des données inexistantes.

    Et donc après cette récupération de variable PHP en variable JS, il y a le code que j'ai donné plus haut.

    Et encore après du code qui va utiliser tout ça pour créer des marqueurs sur une carte OSM (là aussi, il ne semble pas utile que je mette le code ici, ça n'apporterait probablement rien sinon plus de confusion).

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    étant donné que vous faites déjà un traitement de ces données en php, vous pouvez peut-être faire ce filtre au moment endroit.
    d'où viennent ces informations "ok..." ?

  6. #6
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Décembre 2021
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 276
    Par défaut
    Bonjour.

    Le problème est que, comme vous le voyez dans mon premier code javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Nous initialisons une liste de marqueurs (tableau de positions)
     var positions = 
    {
      "id5": { "lat": lat5, "lon": lon5, "nomtete": [tete5], "etiquette": [nom5], "lieu": [lieu5], "horodate": [horodate5] },
      "id4": { "lat": lat4, "lon": lon4, "nomtete": [tete4], "etiquette": [nom4], "lieu": [lieu4], "horodate": [horodate4] },
      "id3": { "lat": lat3, "lon": lon3, "nomtete": [tete3], "etiquette": [nom3], "lieu": [lieu3], "horodate": [horodate3] },
      "id2": { "lat": lat2, "lon": lon2, "nomtete": [tete2], "etiquette": [nom2], "lieu": [lieu2], "horodate": [horodate2] },
      "id1": { "lat": lat1, "lon": lon1, "nomtete": [tete1], "etiquette": [nom1], "lieu": [lieu1], "horodate": [horodate1] },
    };
    Je détermine ici 5 lignes de données dans le tableau positions.
    Ces 5 lignes sont déterminées en dur; Donc même si je vide les données au préalable dans le PHP, ce tableau comportera toujours 5 lignes de données.
    Or, ce dont j'ai besoin c'est que les lignes dont les valeurs lat et lon sont égales à 0 ne soient pas générées.

    Exemples, (pour simplifier je ne montre que la valeur lat, pour le principe)

    1 ) cas normal, imaginons que les valeurs issues du PHP sont

    lat1 = 42
    lat2 = 18
    lat3 = 20
    lat4 = 15
    lat5 = 60

    le code JS va générer tableau positions JS avec les valeurs suivantes:

    id1 : lat = 42
    id2 : lat = 18
    id3 : lat = 20
    id4 : lat = 15
    id5 : lat = 60

    Et tout va bien, je vais générer les ligne id1 id2 id3 id4 et id5 (soit 5 lignes).


    2 ) Mais, si, par exemple, la valeur lat2 est == à 0,

    Donc on recevrait les valeurs PHP suivantes

    lat1 = 42
    lat2 = 0
    lat3 = 20
    lat4 = 15
    lat5 = 60

    Si je ne change rien, le code JS va générer tableau positions JS avec les valeurs suivantes:

    id1 : lat = 42
    id2 : lat = 0
    id3 : lat = 20
    id4 : lat = 15
    id5 : lat = 60

    Soit encore un tableau de 5 lignes
    Mais ça me pose problème (parce que ça va afficher, sur la carte, un pointeur qui est faux).

    Donc j'ai besoin que le tableau généré en JS devienne, dans ce cas

    id1 : lat = 42
    id3 : lat = 20
    id4 : lat = 15
    id5 : lat = 60

    càd que ce tableau ne contienne QUE les lignes id1 id3 id4 et id5, MAIS PAS id2, soit 4 lignes seulement.

    En résumé :
    J'ai besoin qu'une condition if puisse déterminer à chaque ligne si elle est générée ou pas dans le tableau positions
    Et c'est ça que je ne sais pas faire.
    Je ne sais pas comment je dois modifier mon code actuel pour que le tableau de données positions ne contienne que les lignes qui me conviennent (et que je peux discriminer par avance avec une variable okN générée par le PHP).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/10/2019, 20h00
  2. mettre une variable ds document.getElementById('')?
    Par zorba49 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 27/06/2006, 16h30
  3. [Excel]Mettre une variable dans une fonction
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/04/2006, 12h00
  4. Réponses: 7
    Dernier message: 29/03/2006, 11h50
  5. Réponses: 17
    Dernier message: 31/12/2005, 13h23

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