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

PHP & Base de données Discussion :

[MySQL] Doublon d’éléments a l'affichage


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 25
    Par défaut [MySQL] Doublon d’éléments a l'affichage
    Bonjour a tous !

    J'ai un petit soucis avec ma BDD relationnelle , je vous explique ce que j'essaie de faire.

    En gros , j'ai 3 table , une table Bloc , une table Sous-bloc , et une table éléments

    Chaque table est liée avec une autre de façon a ce que les tables communique entre elle dans ma base de données.


    Tout fonctionne parfaitement bien pour toute les informations stocké en BDD depuis le début

    Seulement , j'ai ajouter une petite fonction qui permet d'ajouter des blocs / sous blocs ou éléments , et dans cette modal qui envoie la requette SQL on peut choisir dans quel bloc ou sous bloc on a envie de "push" ce nouvel éléments.

    La requette s'effectue , le nouvel element est push en BDD , parcontre a l'affichage , au lieu d'aller dans son bloc , il crée un nouveau bloc , du même nom que celui dans le quelle il devrais apparaitre et apparais dedans , donc en gros si je push "crapaud" dans "nénuphar" , au lieu de pouvoir ouvrir nénuphar et voir crapaud dedans , j'aurais deux nénuphar , un avec tout ce qui est dedans de base et un autre crée spécialement pour l'occasion , qui ne contiendra que "crapaud"

    Mon but est donc de faire apparaître "crapaud" dans "nénuphar" et que le bloc " nénuphar " ne se crée pas deux fois.

    J’espère que vous avez compris...

    Mon code PHP pour la génération du contenu de la BDD :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    $currentBloc = null;
    $currentSubBloc = null;
    $currentelem = null;
    while ($entry = $hey->fetch()) {
        if ($currentBloc != $entry['block_title']) {
            if (!empty($currentBloc)) {
                echo ' </div>';
            }
            $currentBloc = $entry['block_title'];
            $currentSubBloc = null;
            echo '<div class="draggable">
                <button class="openlist openhidde">
                    <span class="changefont">
                        <i class="fas fa-arrow-down"></i>
                    </span>
                </button>
            <button class="btnblockdelete deleteblockhidde"><i class="fas fa-times"></i></button>
            <p class="title"> ' . $currentBloc . '</p>';
        }
        if ($currentSubBloc != $entry['subblock_title']) {
            if (!empty($currentSubBloc)) {
                echo '</span> </section>';
            }
            $currentSubBloc = $entry['subblock_title'];
            $currentelem = null;
            echo '<span class="data">
                <section id="pre-project" class="subbloc firstsubbloc">
                    <button class="btndelete"><i class="fas fa-times"></i></button>
                    <h4 class="subdraged">' . $currentSubBloc . '</h4> ';
        }
        if ($currentelem != $entry['elem_title']) {
            $currentelem = $entry['elem_title'];
            echo '<article class="elements">
                <button class="btndeletesolo"><i class="fas fa-times"></i></button>
                <h5 class="elemdraged" data-price=" ' . $entry['elem_price'] . '" data-time=" '. $entry['elem_time'].' "> ' . $currentelem . '</h5>
                <span class="inputint">
                    <input type="number" id="quantity" class="numberinput">
                </span>
            </article>';
        }
    }
    Et ma requette SQL ( Je fais toujours la sécurité tout a la fin donc no stress si ça semble totalement vide de s'coté la ;p ) :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    // Requette
     
    $hey = $bdd->query('SELECT bloc.Title AS \'block_title\', Sub_bloc.Title AS \'subblock_title\', elem.Title AS \'elem_title\', elem.Price AS \'elem_price\', elem.time AS \'elem_time\' FROM bloc, Sub_bloc, elem WHERE bloc.ID = Sub_bloc.ID_bloc AND Sub_bloc.ID = elem.ID_SubBloc');
     
    // préparation requette SQL pour ajouter des elem dans les tables de la BDD !
    		// If is bloc
    		$req = $bdd->prepare('INSERT INTO bloc (title) VALUES (:title)');
    		if (isset($_POST['titlebloc'])) {
    			$title = $_POST['titlebloc'];
    			$req->execute(array(
    				'title' => $title
    			));
    		}
    		// If is subbloc
    		$req = $bdd->prepare('INSERT INTO Sub_bloc (title, ID_bloc) VALUES (:titlesub, :idbloc)');
    		if (isset($_POST['titlesubbloc']) && isset($_POST['choicebloc'])) {
    			$titlesub = $_POST['titlesubbloc'];
    			$idbloc = $_POST['choicebloc'];
    			$req->execute(array(
    				'titlesub' => $titlesub,
    				'idbloc' => $idbloc
    			));
    		}
    		// If is element
    		$req = $bdd->prepare('INSERT INTO elem (title,ID_SubBloc,Price)  VALUES (:titleelem, :idsub, :price)');
    		if (isset($_POST['titleelement']) && isset($_POST['subblocID']) && isset($_POST['price'])) {
    			$price = $_POST['price'];
    			$titleelem = $_POST['titleelement'];
    			$subid = $_POST['subblocID'];
    			$req->execute(array(
    				'titleelem' => $titleelem,
    				'idsub' => $subid,
    				'price' => $price
    			));
    		}
    Si vous avez besoin de plus d’éléments pour m'aider , hésitez pas a demander , merci d'avance les gens ! <3

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 25
    Par défaut
    Bon , je vois que personne n'est encore passer proposé une solutions , peut être que c'est parce que j'explique mal mon problème.

    Dans tout les cas , je pense après avoir étudier le code , que mon soucis ce trouve dans ma façon de générer les blocs en PHP.

    Si quelqu'un a une solution je suis toujours preneur , je cherche aussi de mon coté :/

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ta structure d'affichage a l'air cohérente. Par contre, ta requête de récupération n'est pas ordonnée, donc tu as très bien récupéré un truc du genre :
    - Element 1, Bloc A
    - Element 2, Bloc B
    - Element 3, Bloc A
    Ce qui va afficher chaque élément dans son bloc.

    Essaye d'ajouter un ORDER BY dans ta requête (et accessoirement, des jointures propres) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->query('SELECT bloc.Title AS \'block_title\', Sub_bloc.Title AS \'subblock_title\', elem.Title AS \'elem_title\', elem.Price AS \'elem_price\', elem.time AS \'elem_time\' FROM bloc INNER JOIN Sub_bloc ON bloc.ID = Sub_bloc.ID_bloc INNER JOIN elem ON Sub_bloc.ID = elem.ID_SubBloc ORDER BY bloc.Title, Sub_bloc.Title, elem.Title');
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2020
    Messages : 25
    Par défaut
    C'était ça... Merci beaucoup !

    Je connaisais pas cette façon de requetté , merci beaucoup !!

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

Discussions similaires

  1. [Kylix] Kylix attaque Mysql ?
    Par nahmsath dans le forum EDI
    Réponses: 9
    Dernier message: 12/08/2002, 19h37
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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