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

NodeJS Discussion :

Incrémenter variable sur EJS


Sujet :

NodeJS

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut Incrémenter variable sur EJS
    bonjour à tous

    Code ejs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <% for (i = 0; i < telb; i++) { %>
    <br/>  
     
    <tr class="table-dark">
                            <td><%= tache0 %></td>
                            <td><%= tache0 %></td>
                            <td><%= tache0 %></td>
                            <th colspan="2">Actions</td>
                        </tr>
     
     
    <% } %>

    au lieu de tache0 je souhaiterai afficher tache0, puis tache1 etc, j'ai essayé
    Code ejs : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><%= tache0 %>.<%= i %></td>
    mais sans succès, je ne sais même pas si c'est possible tellement les fonctionnalités semblent limitées sur ce genre de templates, cordialement stef

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    le début "tache" est du code html donc essayez cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <tr class="table-dark">
     
    	<% for (i = 0; i < telb; i++) { %>
    		<td>tache<%= i %></td>
    	<% } %>
     
    	<td colspan="2">Actions</td>
     
    </tr>

    et donc ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <tr class="table-dark">
     
    		<td>tache0</td>
    		<td>tache1</td>
    		<td>tache2</td>
     
    	<td colspan="2">Actions</td>
     
    </tr>

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    ça m'affiche effectivement tache0 , tache1 etc, mais pas le résultat ce qu'il y a à l'intérieur de la variable
    Ce qui m'intéresse c'est d'obtenir le résultat de ma variable tâche0, puis le résultat de ma variable tùâche1 et ainsi desuite. Quand j'écris <td><%= tache0 %></td> ça m'affiche le nom de ma tâche, cad le résultat de la variable, dans le navigateur, j'aimerai la même chose mais en concaténant.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    d'où viennent ces variables ?
    pour boucler sur des données, il vaut mieux les stocker dans une liste par exemple au lieu de différentes variables.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Elles viennent de mon serveur, oui mais je suis une daube en ejs et c'était la meilleure solution que j'avais trouvé, je n'ai pas pensé aux limitations du template et même avec des boucles ça aurait une grosse galère, en fait je ne sais même pas qui a eu l'idée d'inventer node, je peux faire ça en 3 min chrono sur php mais c'est un devoir à rendre dans le cadre d'une formation donc je suis en train de faire quelque chose depuis 2 semaines que je pourrai faire en 3 clicks de souris. Très cool le nombre d'outils à disposition mais on voit bien qu'on est tout de suite limité dès qu'on essaie de faire un ou 2 trucs un peu compliqués.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    je peux faire ça en 3 min chrono sur php
    oui mais combien de temps passé sur PHP avant de le faire en 3 min ?

    Très cool le nombre d'outils à disposition mais on voit bien qu'on est tout de suite limité dès qu'on essaie de faire un ou 2 trucs un peu compliqués.
    Je pense que c'est la même chose avec les autres langages, il faut parfois savoir être patient

    Pour en revenir à
    ça m'affiche effectivement tache0 , tache1 etc, mais pas le résultat ce qu'il y a à l'intérieur de la variable
    je n'ai pas trop saisi mais ... je te propose de tester ceci :
    Code html : 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
    <%
    // via une donnée
    const datas = ["un", "deux", "trois", "quatre"];
    // via une fonction
    function getValue(val){
      return datas[val].toUpperCase();
    }
    %>
    <!-- template -->
    <table>
      <tr>
      <%_ datas.forEach( (data, index) => { -%>
        <td><%= data %></td>
        <td><%= getValue(index) %></td>
      <%_ });-%>
        <td>Dernière colonne</td>
      </tr>
    </table>

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    yes je n'ai pas tout saisi mais le but n'est pas de faire un tableau avec 1,2,3,4 etc mais de boucler parce que je ne sais pas combien il y aura de tâches. Concrètement voilà les éléments dont je dispose :
    -la variable i qui est le nombre de tâches
    -le fait de savoir que chaque tâche s'intitule tache1, tache2, etc soit tache i et que je souhaite récupérer la valeur de cette variable
    En l'occurrence si je savait qu'il y avait simplement 4 tâches je ne me serait pas pris la tête j'aurai simplement écrit : tache0, tache1 , tache2, tache3 et ça fonctionne

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    les valeurs montrées par NoSmoking était juste un exemple d'utilisation. dans votre cas les valeurs dans le tableau seront les valeurs des taches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let liste_taches = [
    	"valeur tache 1",
    	"valeur tache 2",
    	"valeur tache 3",
    	"valeur tache 4",
    ];
    et si vous avez besoin d'associer un code à chaque valeur, vous pouvez les stocker sous forme d'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    let objet_taches = {
    	"tache1" : "valeur tache 1",
    	"tache2" : "valeur tache 2",
    	"tache3" : "valeur tache 3",
    	"tache4" : "valeur tache 4",
    };
    en sachant que l'objet se parcourt comme un tableau avec une boucle "forEach" par exemple.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Mais je les ai déjà les valeurs, je cherche juste à afficher tache1 tache2 etc pour que cela affiche les valeurs qui sont déjà stockées en fait
    concrètement si j'écris <%= tache0 %> dans le navigateur il y aura marqué : découper les carottes
    et si j'écris <%= tache0 %> il y aura marqué ajouter la moutarde

    maintenant je sais qu'il y a admettons 10 taches grâce à ma variable i
    et je souhaiterai afficher automatique tache0, tache1, tache 2 afin qu'il me marque : découper les carottes, ajouter la moutarde etc
    mais par exe si je tente de faire <%= tache %>.<% i %> ça ne fonctionne pas par contre si je tape tache0 ça affiche bien découper les carottes

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    on vous a déjà répondu à tous cela. maintenant si vous voulez qu'on vous aide à mettre ça en place, il faut que vous nous montrez le code ou les informations qui expliquent comment et où vous récupérez ces données.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Je peux mais cela ne vas pas vous arranger parce que je les récupère sue une page javascript et je les renvoie sur une page ejd, donc je ne pense pas que cela vous facilite la tâche sachant que vous avez déjà tous les éléments en votre possession


    Alors concrètement


    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
     
    var nombredetaches = "select count(id_tache) as tata FROM users left JOIN tache ON users.id = tache.id_utilisateur where users.id = '"+userId+"'";
     
          db.query(nombredetaches, function(err, resb){ 
             telb = resb[0].tata;
    // ici je récupère le nombre de tâches et je le transfere dans une variable intitulée telb
    }); 
     
    var sql="SELECT id, first_name, last_name, user_name, nom_tache FROM users left JOIN tache ON users.id = tache.id_utilisateur where users.id = '"+userId+"'";
     
       db.query(sql, function(err, results){
          //var tel = results[0];
     
    for (i = 0; i < telb; i++) { 
          eval('tache' + i + ' = \'' + results[i].nom_tache + '\';');
     
          } 
     
          tel = results[0].id;
    // ici je récupère le nom de ma première tache et je le transfère dans une variable intitulée tel
    Il va s'en dire que j'ai essayé de faire passé le tableau ou de directement taper dans ejs mais cela ne fonctionnait pas d'où la nécessité de transférer mes résultats dans des noms de variables avant d'envoyer sur ma page ejs

  12. #12
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    je pense que c'est là que vous vous compliquez la tâche.
    vous n'avez pas besoin d'une 1re requête pour compter le nombre de résultat, vous pouvez directement faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var sql = "SELECT id, first_name, last_name, user_name, nom_tache FROM users left JOIN tache ON users.id = tache.id_utilisateur where users.id = '"+userId+"'";
     
     
    db.query(sql, function (err, results) {
     
    	ejs.renderFile("template.ejs", {"results" : results}, {}, function (err, str) {
     
    		// le code html généré est dans "str"
     
     
    	});
     
    }

    et dans le fichier template.ejs, quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <table>
      <tr>
      <%_ results.forEach((data, index) => { -%>
        <td><%= data["nom_tache"] %></td>
      <%_ });-%>
        <td>Dernière colonne</td>
      </tr>
    </table>
    une fois que vous aurez votre résultat qui fonctionne, pensez à revenir sur la requête sql parce que en la construisant de cette façon, vous pouvez avoir un trou de sécurité qui permet une injection sql.

Discussions similaires

  1. Loop sur incrémenter variables
    Par pablofr dans le forum jQuery
    Réponses: 1
    Dernier message: 02/11/2015, 14h22
  2. [Batch] Incrémentation variable sur un script
    Par Tiffany2015 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/07/2015, 10h23
  3. auto-incrément Mysql sur Access
    Par maxireus dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/03/2006, 21h20
  4. Incrémentation Variable
    Par Boujou dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 21/04/2005, 11h28
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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