[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... :aie:
Mon code PHP pour la génération du contenu de la BDD :
Code:
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:
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