Partage
  • Partager sur Facebook
  • Partager sur Twitter

joiture - suivie d'un id

Sujet résolu
    14 mai 2019 à 19:02:24

    Bonjour à tous ,

    je suis vraiment désolé de mettre un titre pareil mais je ne connais pas le terme approprié ...

    Voici mon problème :

    j'ai 4 tables :

    users ,  propriétaire ,  locataire et biens .

    quand l'utilisateur ce connecte il peut ajouter un bien , un locataire et un propriétaire ( le propriétaire peut être différent de l'utilisateur )

    quand utilisateur créer un bien j'ai fais suivre son id sur toutes les tables .

    mais comment faire pour qu'un utilisateur est accès à bien avec le proprietaire et le locataire qui correspond à ce bien.

    Je ne comprend pas quel structure de table ou comment faire ça ? J'ai bien fait suivre l'id de l'user sur toutes les tables mais quand il sélectionnera un bien ça ne pourra pas marcher !

    Je me sens bien C** d'écrire ce sujet mais je trouve pas la logique...

    merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2019 à 20:46:30

      Bonjour,

      Je n'ai pas compris ton problème...

      Peux-tu poster la structure de tes tables, ainsi que reformuler ta question ?

      Où au moins donner un exemple précis de ce que tu cherches à faire ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        15 mai 2019 à 11:14:31

        Bonjour ,

        schema bdd

        Voici un jolie dessin :)

        les liens en noir sont existant , quand l'utilisateur créer un bien , un proprio et un locataire je récupère l'id par la session en cours.

        Et je souhaite pourvoir afficher/modifier tous les biens d'un utilisateur avec ses locataires et son proprietaire ( dans mon idée les liens en rouge)

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2019 à 11:18:24

          On parle ici d'une simple clause WHERE genre :

          SELECT *
          FROM ipro_bien
          WHERE id_users = 'id user connecté'

          Après, avec ce modèle, un bien peut avoir plusieurs locataires.

          Et un bien peut avoir des locataires avec des id_user différents, idem pour les propriétaires ...

          -
          Edité par Benzouye 15 mai 2019 à 11:19:00

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            15 mai 2019 à 11:41:20

            merci et super rapide , VIVE LA ROI ARTHUR :;)

            je suis d'accord mais si l'user a plusieurs biens , et comme chaque bien à des locataires et des propriétaires précis ça ne peut pas fonctionner juste avec l'id de l'user qui est sur toutes les tables ...

            • Partager sur Facebook
            • Partager sur Twitter
              15 mai 2019 à 12:49:45

              Si tu veux tous les locataires des biens créés par un utilisateur donné, il faut utiliser une jointure :

              SELECT *
              FROM
                  ipro_bien B
                      INNER JOIN ipro_locataire L
                          ON B.id_bien = L.id_bien
              WHERE B.id_users = 'id user connecté'

              La même logique s'appliquera pour identifier les propriétaires :

              SELECT *
              FROM
                  ipro_bien B
                      INNER JOIN ipro_proprietaire P
                          ON B.id_bien = P.id_bien
              WHERE B.id_users = 'id user connecté'

              Si ces choses t'étaient inconnues il est grand temps de te former au SQL ... là on parle de la base de la base ... cf. ma signature pour un cours MySQL.

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                15 mai 2019 à 15:41:12

                j'ai pas du être assez précis.

                comment je fais pour avoir le locataire d'un bien ? ( et pas le locataire d'un user car un user peut avoir plusieurs bien et donc plusieurs locataire )

                Chaque locataire doit donc être assigné à un bien ?  je comprend la méthode pour faire ça ?

                merci pour ta patience !!!

                -
                Edité par vinxentgillou 15 mai 2019 à 15:41:52

                • Partager sur Facebook
                • Partager sur Twitter
                  15 mai 2019 à 15:58:03

                  vinxentgillou a écrit:

                  comment je fais pour avoir le locataire d'un bien

                  Les deux requêtes ci-dessus te retournent la listes des locataires (pour la première) et la liste des propriétaires (pour la deuxième), pour tous les biens créés par un utilisateur donné, quel que soit l'id_user présent sur le locataire ou le propriétaire.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    15 mai 2019 à 19:22:14

                    c'est pas faute d'avoir lu beaucoup de tuto ( dont ceux de ta signature ) mais je comprends pas !

                    je ne peux insérer ton code dans phpmyadmin ( enfin ça n'apporte rien , je pense ? )

                    et si je fais ça :

                    $reponse3 = $pdo->query('SELECT *
                    FROM
                        ipro_bien B
                            INNER JOIN ipro_locataire L
                                ON B.id_bien = L.id_bien
                    WHERE B.id_users = 'ideee' ') or die(print_r($bdd->errorInfo()));                           
                     
                    $donnees3 = $reponse3->fetch(PDO::FETCH_ASSOC);
                    echo $donnees3['id'] ;
                    $reponse3->closeCursor();
                    

                    j'ai cette erreur :

                    Parse error: syntax error, unexpected 'id' (T_STRING), expecting ',' or ')'


                    ce qui m’embête vraiment c'est de lire plein de truc sur les requête sql mais je ne comprend jamais comment les utiliser, si tu as un liens pour les GROS BOULET je suis preneur !!

                    encore merci !!!!

                    ps : si tu répond pas c'est pas grave et bonne chance pour la quête du Graal car moi : j'en ai gros

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 mai 2019 à 9:41:17

                      vinxentgillou a écrit:

                      bonne chance pour la quête du Graal car moi : j'en ai gros

                      Mort de rire.

                      vinxentgillou a écrit:

                      j'ai cette erreur :

                      Parse error: syntax error, unexpected 'id' (T_STRING), expecting ',' or ')'

                      C'est une erreur PHP qui t'indique une erreur de syntaxe dans ta chaîne SQL ... tu utilises les apostrophes pour encadrer ta requêtes, donc tu ne peux pas les utiliser à l'intérieur du SQL sinon PHP comprend que la chaîne SQL se termine et attend la suite, en l'occurence une virgule ou une parenthèse fermante ...

                      Remplace les apostrophes intérieurs par des guillemets :

                      $reponse3 = $pdo->query('
                      SELECT *
                      FROM
                          ipro_bien B
                              INNER JOIN ipro_locataire L
                                  ON B.id_bien = L.id_bien
                      WHERE B.id_users = "ideee";')            
                        
                      $donnees3 = $reponse3->fetch();
                      echo $donnees3['id'] ;
                      $reponse3->closeCursor();

                      vinxentgillou a écrit:

                      c'est pas faute d'avoir lu beaucoup de tuto

                      Encore pas assez du coup ...

                      vinxentgillou a écrit:

                      je ne peux insérer ton code dans phpmyadmin ( enfin ça n'apporte rien , je pense ? )

                      Pourquoi ? Cela te permettrait de tester la requête seule avant de l'intégrer dans ton code PHP ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        16 mai 2019 à 10:34:00


                        Benzouye a écrit:


                        vinxentgillou a écrit:

                        c'est pas faute d'avoir lu beaucoup de tuto

                        Encore pas assez du coup ...

                        oh oui j'ai encore du boulot ... merci d'avoir éclairer ma lanterne !

                        j'ai tester ta requête dans phpmyadmin :

                        et voici le résultat

                        donc ta requete fonctionne mais il trouve rien alors que des données sont insérées :

                        Je vais continuer les cours ....

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 mai 2019 à 11:48:11

                          On voit bien que dans ta table locataire, le bien n'est jamais renseigné ... Tes locataires ne sont pas affecté à un bien ...

                          Il faut donc que lorsque tu crées un locataire tu insères aussi l'id du bien associé ... sinon tu ne pourras rien sortir ...

                          Pour l'instant tu peux manuellement mettre à jour ces 6 locataires pour leur donner un id_bien qui existe dans la table des biens ...

                          -
                          Edité par Benzouye 16 mai 2019 à 11:48:52

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                            16 mai 2019 à 14:59:07

                            justement c'était la question du début , comment faire pour joindre le locataire a un bien ?

                            est ce une jointure ? ou autre ?

                            je voulais juste savoir dans quelle direction chercher ??

                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 mai 2019 à 15:53:05

                              vinxentgillou a écrit:

                              justement c'était la question du début , comment faire pour joindre le locataire a un bien ?

                              Benzouye a écrit:

                              lorsque tu crées un locataire tu insères aussi l'id du bien associé

                              Remplace les NULL pour des id existants dans la table bien ... de même dans la table propriétaire ...

                              Une fois cela fait, la requête proposée fonctionnera comme tu l'attends ...

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                16 mai 2019 à 16:32:51

                                Comme tu es patient !! merci ! mais ça ne fonctionne pas.... je n'en peux plus ( toi aussi certainement .... )

                                j'ai supprimer tous les biens , locataires et propriétaire ( pas les tables :) )

                                j'ai enlever NULL

                                j'ai fais ça :

                                <?php
                                    
                                
                                $errors = array();
                                
                                
                                // si valeur nom est vide = message erreur
                                if(!array_key_exists('nom', $_POST) || $_POST['nom'] == ''){
                                	$errors['nom'] = " vous n'avez pas renseigné le nom du locataire";
                                }
                                // si valeur prenom est vide = message erreur
                                if(!array_key_exists('prenom', $_POST) || $_POST['prenom'] == ''){
                                	$errors['prenom'] = " vous n'avez pas renseigné le prénom du locataire";
                                }
                                
                                
                                
                                
                                
                                session_start();
                                
                                $users_id = $_SESSION['auth']->id_users;
                                
                                //si erreur retour au formulaire
                                if(!empty($errors)){
                                	
                                	$_SESSION['errors'] = $errors;
                                	$_SESSION['imputs'] = $_POST;
                                	header('Location:locataire_form.php');
                                	
                                }
                                elseif(empty($errors)){
                                // si aucune erreur envoye des données a la BDD ipro_proprietaire
                                
                                require_once('../../espace_menbre/inc/db.php'); 
                                
                                	// Insertion du message à l'aide d'une requête préparée
                                	$req = $pdo->prepare('INSERT INTO ipro_locataire (id_users,nom, prenom, date_naissance) VALUES(:users_id , :nom, :prenom, :date_naissance) ');
                                	$req->execute(array(
                                		'users_id' => $users_id,
                                		'nom' => $_POST['nom'], 
                                		'prenom' => $_POST['prenom'],
                                		'date_naissance' => $_POST['date_naissance'],
                                		
                                						));
                                	$req2 = $pdo->prepare("SELECT *
                                FROM
                                    ipro_bien B
                                        INNER JOIN ipro_locataire L
                                            ON B.id_bien = L.id_bien
                                WHERE B.id_users = 'id user connecté'");
                                	$req2->execute();
                                
                                header ('Location:../page_user.php');
                                   }
                                // Redirection du visiteur vers la page user
                                
                                
                                
                                
                                

                                c'est le code de la page locataire_cible.php ( qui traite le formulaire d'enregistrement du locataire)

                                Quand un utilisateur ajoute un logement sont chemin est :

                                formulaire biens -> formulaire proprietaire -> formulaire locataire

                                j'ai fais suivre les formulaires les uns après les autres pensant que c'était mieux pour l'utilisateur ...

                                je dois être dans une porte démonique ou j'ai pas tous compris ( je crois pas au porte démonique )

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 mai 2019 à 18:26:22

                                  Lorsque tu crées un bien, après la requête "INSERT INTO bien ..." il faut que tu récupères l'id du bien créé.

                                  Pour cela il faut utiliser la méthode PDO::lastInsertId(), et passer le résultat à ton formulaire de création de locataire pour que lors de l'insertion du locataire tu donnes aussi l'id du bien associé ...

                                  Sinon, c'est sûr que tu auras toujours NULL dans id_bien.

                                  Et c'est la même logique pour les propriétaires ...

                                  -
                                  Edité par Benzouye 16 mai 2019 à 18:26:35

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                    21 mai 2019 à 9:44:03

                                    Bonjour SIR ! je suis parti à la quête du GRAAL mais j'ai rencontré un vieux ... :)

                                     un GRAND MERCI pour ton aide et ta patience.

                                    LAST_insertid fonctionne à merveille !!!

                                    encore merci et certainement à bientot pour faire un cul de chouette !!

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 mai 2019 à 11:07:09

                                      Je préfère "Chante sloubi" ;)
                                      • 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 mai 2019 à 9:30:50

                                        flute j'avais commandé des poupre de 50 pieds .... :)

                                        merci beaucoup !

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        joiture - suivie d'un id

                                        × 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