Ton raisonnement se tient. Rien ne t'empêche de faire une page pour chaque groupe et leurs composants en attendant d'avoir trouvé la bonne façon de faire pour ton "challenge" et revenir plus tard.
Je pense même que tu risques de trouver par toi-même après avoir fini tes pages dédiées pour chaque groupe.
Pour ce qui est du problème en lui-même :
Le but n'est pas de mettre plusieurs composants dans une seule ligne de ta table contenant les groupes mais de créer plusieurs composants dans une table rien que pour eux et leur donner un numéro de groupe à chacun.
Du coup dans ta table composant tu aurais les champs suivants :
id : pour identifier ton composant
name : le nom du composant (en BDD on préfère donner des noms de colonnes en anglais)
group_id : le groupe attribué à ton composant
Comme ça tu pourras récupérer un composant par son propre id mais tu pourras récupérer une liste par un id de groupe.
Dans ce cas, il va falloir dédier une troisième table pour les relations (group_component) qui contiendra un id en clé primare, l'id du groupe (group_id) et l'id du composant (component_id).
Ton INSERT n'est pas valide, il manque quelque chose.
Mais la création du composant je l'ai déjà faite (si c'est bien ce que je pense elle est vers la ligne 90, je te mets quand même toute ma page si jamais (je sais pas si c'est genânt de mettre des longs posts comme ça mais je sais pas mettre de spoilers ))
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content ="width-device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="styleajc.css" />
<title>Matériel G092</title>
</head>
<center><img src="materiel-g092.png" height="192" width="768" ></center>
<div id="menu">
<ul id="onglets">
<li><a href="Accueil.php"> Accueil </a></li>
<li><a href="Liste-materiel.php"> Liste matériel </a></li>
<li><a href="Materiel-par-groupe.php"> Matériel par groupes </a></li>
<li><a href="Deco.html"> Déconnexion </a></li>
</ul>
</div>
<body>
<div id="miseenpage">
<?php
$objetPdo = new PDO('mysql:host=localhost;dbname=projet','root','');
$pdoStat = $objetPdo->prepare('DELETE FROM test WHERE id=:num LIMIT 1');
$numCompo = !empty($_GET['numCompo']) ? $_GET['numCompo'] : NULL;
$pdoStat->bindValue(':num', $numCompo, PDO::PARAM_INT);
$pdoStat->execute();
$hostname = "localhost";
$username = "root";
$password = "";
$databaseName = "projet";
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
$query = "SELECT * FROM `test` ORDER BY nom";
$result1 = mysqli_query($connect, $query);
?>
<br>
<form method="post">
<label for="le_nom">Quel matériel ajouter au groupe ?</label><br><br>
<select name="le_nom" id="le_nom">
<?php while($row1 = mysqli_fetch_array($result1)):;?>
<option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
<?php endwhile;?>
</select>
<?php if (!empty($_POST))
{
// Pour voir le contenu du POST
// var_dump($_POST);
$objetPdo = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
$pdoStat = $objetPdo->prepare('INSERT INTO `group_components` (`id`, `group_id`, `component_id`) VALUES (NULL, NULL, :component_id)');
$component_id = !empty($_POST['component_id']) ? $_POST['component_id'] : NULL;
$pdoStat->bindValue(':component_id', $component_id, PDO::PARAM_STR);
$pdoStat->execute();
}
?>
<input type="submit" value="Valider">
</form>
<div id="g1">
<form action="ajoutercomposant.php" method="post">
<p>
<label for="nom">Ajouter un nouveau composant à la liste : </label>
<br>
<p><input id="nom" type="nom" name="nom">
<input type="submit" value="Valider"></p
</p>
</form>
<?php
$objetPdo = new PDO('mysql:host=localhost;dbname=projet','root','');
$pdoStat = $objetPdo->prepare('INSERT INTO test VALUES (NULL, :nom)');
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
$pdoStat->bindValue(':nom', $nom, PDO::PARAM_STR);
$pdoStat->execute();
?>
<?php
$objetPdo = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
$pdoStat = $objetPdo->prepare('SELECT * FROM test ORDER BY id ASC');
$executeIsOk = $pdoStat->execute();
$noms = $pdoStat->fetchAll();
?>
<div id="texte-g1">
<?php foreach ($noms as $nom): ?>
<ul><li> <?= $nom['nom'] ?> <a href="supprimercompo.php?numCompo=<?= $nom['id'] ?>">Supprimer</a> </ul></li>
<?php endforeach; ?>
</div>
</div>
</div>
</body>
</html>
Ouais, tout à fait. Je te dis juste que maintenant, pour l'attribuer à un groupe il faudra créer une entrée (ligne dans ta table SQL) sur la table group_components avec l'id du composant et l'id du groupe auquel tu voudras attribuer ce composant nouvellement créé.
Je te donne une astuce, lastInsertId c'est une fonction de PDO (méthode en POO) qui te permet de récupérer la dernière ligne insérée. Donc l'id de ton composant à insérer dans la table group_components. T'es encore là ?
Au passage, tu n'es pas obligé de recréer une connexion PDO à chaque requête. Il suffit de la déclarer une seule fois.
<?php if (!empty($_POST))
{
// Pour voir le contenu du POST
// var_dump($_POST);
$objetPdo = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
$pdoStat = $objetPdo->prepare('INSERT INTO `group_components` (`id`, `group_id`, `component_id`) VALUES (NULL, NULL, :component_id)');
$component_id = !empty($_POST['component_id']) ? $_POST['component_id'] : NULL;
$pdoStat->bindValue(':component_id', $component_id, PDO::PARAM_STR);
$pdoStat->execute();
$id_nouveau = $objetPdo->lastInsertId();
echo $id_nouveau;
}
?>
Il faut que je rende le projet à la fin du week-end et là je sèche vraiment, hier j'ai dormi que 2h (c'est pas bien je sais ) donc je pense que je vais laisser comme ça, tant pis, et j'essayerais d'expliquer à l'oral comment faire sans trop rentrer dans les détails..
La table où tu mets tes composants. group_components sert uniquement à lier un composant à un groupe. Si je dis pas de bêtise, la tienne elle s'appelle test ?
Je te le redis mais il suffit de créer une seule fois $objetsPdo en début de script sur chaque page.
Ca devrait marcher ça.
Au pire, créé-toi un script juste pour ce test, ça t'évitera de polluer les autres en faisant des tests.
<?php
$objetPdo = new PDO('mysql:host=localhost;dbname=projet;charset=utf8','root','');
$pdoStat = $objetPdo->prepare('INSERT INTO `group_components` SET group_id = :group_id, component_id = :component_id'); // Je trouve ça plus clean
$pdoStat->bindValue(':group_id', 2, PDO::PARAM_INT);
$pdoStat->bindValue(':component_id', 3, PDO::PARAM_INT);
$pdoStat->execute();
Pour faire plus simple un petit <iframe width="" height="" src="" frameborder="0" allowfullscreen></iframe> et une petite redimention ne ferait pas l'affaire
Il faut que j'ai rendu le projet pour 20h donc je ne pense pas que on aura le temps de finir donc si jamais tu vois ce message avant, ne te casse pas la tête à chercher, à moins que tu penses que ce soit rapidement finissable . En tout cas, merci pour tout, tu m'as grandement aidé et ma note de BAC dépendra en bonne partie de toi !
Bon beh voilà, ça y est je suis passé et je pense avoir plutôt réussi
J'aurais pas ma note avant les résultats du bac mais je suis quand même vachement content de moi, de ma progression, sachant qu'on part de 0, on était les seuls à faire un projet en HTML (oui on était 3 mais avec des parties séparées ) car on avait fait aucun cours dessus, tous les autres on fait du Javascool donc on aura peut-être des points pour l'originalité
En tout cas, un énorme merci à toi pour sans qui une immense partie de ce projet aurait pas pu être réalisée !
@Natalister Ça marche. Du coup, est-ce que tu comptes finir ce projet ou c'était simplement pour faire l'exercice ? Oublie pas de me donner ta note quand tu l'auras.
× 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.
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web
Pascal Prugna | Développeur Web