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