8768 sujets

Développement web côté serveur, CMS

Bonjour, j'aurais besoin de votre aide, je vous explique le contexte :
J'ai récupéré l'id de la table "mind_map" qui est : id_mind_map, grâce à l'url, puis j'aimerais mettre cette id dans la table bulle, car je fais un formulaire pour créer une bulle ( nom, description .......) à chaque fois que je créer une bulle , il faut que ces informations rentre dans la table "bulle" : son id, nom, descrip et l'id_mind_map.
Puisque pour un mind map on peut avoir plusieurs bulles.
Entre la table "mind_map" et "bulle" il y à une relation, et la table "bulle" à pour clé étrangère l'id_mind_map de la table "mind_map".

Voici comment je récupère l'id_mind_map :

if(isset($_GET['id'])){
    $les_bulles=array();
     $dao = new BullesDAO(); 
    $les_bulles = $dao->findAll($_GET['id']); 
}


Ce code va communiquer avec ça pour chercher les information dans la BDD :

public function findAll()
    {
        $sql = "SELECT *
                FROM bulle 
                WHERE id_mind_map=".$_GET['id']."";
        try {
            $sth=$this->executer($sql);
            $rows = $sth->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            die("Erreur lors de la requête SQL : " . $e->getMessage());
        }
        $les_bulles = array();
        foreach ($rows as $row) {
            $les_bulles[] = new Bulles($row);
        }
        // Retourne un tableau d'objets "lignes"
        return $les_bulles;
    } // function findAll()


j'ai essayé de trouver une solution mais rien ne marche comme je le voudrais, le problème c'est que quand je veux crée la bulle, je récupère les informations comme ça, pour après exécuter ma requête INSERT mais j'ai un message d'erreur qui m'explique que l'id_mind_map ne peut pas être null :

// Instanciation des DAO
$bullesDAO = new BullesDAO();
// Récupère l'ID dans l'URL
$id = isset($_GET['id']) ? $_GET['id'] : null;
// Lecture du formulaire
$submit = isset($_POST['submit']);

if ($submit) {
    // Crée un objet lignes à l'image des données
    $name_bulle = isset($_POST['name_bulle']) ? $_POST['name_bulle'] : null;
    $num_bulle = isset($_POST['num_bulle']) ? $_POST['num_bulle'] : null;
    $color_bulle = isset($_POST['color_bulle']) ? $_POST['color_bulle'] : null;
    $id_relation = isset($_POST['id_relation']) ? $_POST['id_relation'] : null;
    $id_mind_map = isset($_POST[$id]);
   
    $bulles = new Bulles(array(
      'name_bulle'=>$name_bulle,
      'num_bulle'=>$num_bulle,
      'color_bulle'=>$color_bulle,
      'id_relation'=>$id_relation,
    ));

    // Ajoute l'enregistrement dans la BD
    $bullesDAO->insert($bulles);
    // Redirection vers la liste des lignes
    header('Location: Tableau_bulle.php');


Pouvez-vous m'aider, merci Smiley smile
$id_mind_map = isset($_POST[$id]);

Cette ligne ne marchera pas.


Qu'est ce que $id ? apparement ce que tu récupère dans ton GET. donc via une url.
SAUF QUE, tu assign $id dans ton GET et tu l'utilise dans ton POST. donc là tu mélange tout. Get / Post il faut choisir, tu peux pas faire les deux en même temps.

Soit il y a un formulaire et tu récupère les valeurs de tes input HTML via l'attribut name comme par exemple $_POST['name_bulle'] SOIT tu passe par une URL et là tu récupère ton $_GET['id'].
Modifié par JENCAL (03 Feb 2020 - 13:04)