Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compter un nombre de champs non-vide

    19 septembre 2019 à 22:27:59

    Bonjour, je voudrai savoir s'il est possible de m'aider car je suis perdu pour effectuer une requête mysqli.

    Je souhaite récupérer un certaine nombre de champs appelé : name_child1, name_child2, name_child3 ... name_child10 .

    Dans une table utilisateur ou l'id est égal à l'id de l'utilisateur.

    Mon soucis étant que je n'arrive pas à savoir combien de champs ne sont pas vide afin de renseigner une variable $child ( qui contient le résultat du comptage des champs remplis.

    Voici le code :

    $nb_child_query_one = " SELECT `name_child1`,`name_child2`,`name_child3`,`name_child4`,`name_child5`,`name_child6`,`name_child7`,`name_child8`,`name_child9, `name_child10` FROM " . T_USERS . " WHERE  `user_id` = {$user_id}";
        $nb_child_query_1    = mysqli_query($sqlConnect, $nb_child_query_one);
        $nb_child = mysqli_fetch_assoc($nb_child_query_1);
        $child = 0;
        for ($i = 1; $i < 11; $i++) {     
        if ($nb_child['name_child'.$i] !==null){
       
        $child++;
        	}
    	}

    La valeur $child est ensuite stocké dans la BDD.

    Merci par avance pour votre aide, je suis complètement paumé...

    • Partager sur Facebook
    • Partager sur Twitter
      20 septembre 2019 à 9:05:59

      Bonjour,

      Lorsque l'on numérote les colonnes pour renseigner des données similaire (ici un id utilisateur) c'est qu'il y a un problème de conception ...

      Que contiennent ces colonnes name_childX ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        22 septembre 2019 à 23:18:27

        Bonjour Benyouze et merci te ta réponse.

        J'ai 10 champs qui s'appelle name_child1 , 2 , 3 etc jusqu'à 10, n'étant pas très calé en php et SQL, j'ai préféré faire comme ceci...

        Sinon les différents champs contiennent le prénom de chaque enfants d'un utilisateur qu'il a renseigner précédement dans un formulaire.

        Du coup je sais comment faire pour les récupérer ...

        • Partager sur Facebook
        • Partager sur Twitter
          23 septembre 2019 à 11:31:33

          Ok.

          JeremyMastroianni a écrit:

          n'étant pas très calé en php et SQL, j'ai préféré faire comme ceci

          Il ne faut pas regarder les choses sous cet angle, mais plutôt chercher quelle est la bonne façon de faire non ?

          Autre question avant de te répondre, pourquoi as-tu une variable (constante T_USERS) sur le nom de la table ? Tu as créé une table par utilisateur ?

          -
          Edité par Benzouye 23 septembre 2019 à 11:44:30

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            23 septembre 2019 à 12:03:47

            En fait, j'ai une globale par nom de table T_USERS est le nom de la table utilisateurs
            • Partager sur Facebook
            • Partager sur Twitter
              23 septembre 2019 à 13:19:58

              En toute rigueur tu devrais avoir deux tables.

              • users ( user_id [pk], name, etc. )
              • children ( child_id [pk], user_id [fk], name, etc. )

              Ainsi un user peut avoir autant d'enfant qu'il le faut (pas limité à 10) et tu n'as pas à te soucier de tes 10 colonnes ...

              Pour retrouver les enfants d'un utilisateur, il "suffit" de faire :

              SELECT name
              FROM children
              WHERE user_id = {$user_id}

              Je te conseille aussi de regarder du côté des requêtes préparées pour sécuriser ta requête côté PHP.

              Tu peux aussi regarder une structure encore plus simple, en une seule table, avec l'auto référence :

              • users ( user_id [pk], parent_id [fk], name, etc. )

              Tu enregistres dans cette table tes utilisateurs ET leurs enfants. Un enfant aura parent_id valant l'id de son parent. Un parent aura parent_id NULL. Cela n'a de sens que si parent et enfant ont les mêmes attributs.

              Pour retrouver les enfants d'un utilisateur, il "suffit" de faire :

              SELECT name
              FROM users
              WHERE parent_id = {$user_id}

              -
              Edité par Benzouye 23 septembre 2019 à 14:47:37

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                3 octobre 2019 à 0:17:39

                Merci pour ta réponse je vais étudier la solution que tu me propose. merci encore
                • Partager sur Facebook
                • Partager sur Twitter

                Compter un nombre de champs non-vide

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown