COMMENT MODIFIER DES DONNEES D'UNE TABLE PHP

Bonjour,mon probleme j'arrive pas a modifier les données pour une recette quand je modifie 1 sa modifie tout surement parce que j'ai pas associe de id mais je sais pas comment faire AIDEZ MOI SVP

voici mes codes 

index.PHP

<?php session_start(); ?>

<?php  include('variable.php');  ?>

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Site de Recettes - Page d'accueil</title>

    <link

        href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"

        rel="stylesheet"

    >

</head>

<body class="d-flex flex-column min-vh-100">

    <div class="container">

    <!-- Navigation -->

    <?php include_once('header.php'); ?>

    <!-- Formulaire de connexion -->

    <?php include_once('login.php'); ?>

     <?php  include('fonction.php'); ?>

        <h1>Site de Recettes !</h1>

        <!-- Plus facile à lire -->

        <?php foreach(getRecipes($recipes) as $recipe) : ?>

            <article>

                <h3><?php echo $recipe['titre']; ?></h3>

                <div><?php echo $recipe['description']; ?></div>

                <i><?php echo display_Author($recipe['auteur'], $users); ?></i>

            </article>

            <a href="modifRecette.php?id=<?php  echo $recipe['recipe_id']?>" class="btn btn-primary" >modifier recette</a>

        <?php endforeach ?>

    </div>

    <?php include_once('footer.php'); ?>

</body>

</html>

modifRecette.php

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

 <title>Site de recettes - Ajouter une Recette</title>

 <link

    href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"

    rel="stylesheet"

 >

</head>

<body class="d-flex flex-column min-vh-100">

  <div class="container">

<?php

include('mysql.php');


 

if(isset($_GET['id'])){

    $id = $_GET['id'];

    $recipesStatement = $db->prepare('SELECT * FROM recipes WHERE recipe_id =:id');

    $recipesStatement->execute(array('id' => $id));

    $recipes = $recipesStatement->fetch();

}



 

?>

<?php include_once('header.php'); ?>

    <h1>modifier une Recette</h1>

    <form  action="submit_modifRecette.php" method="post" >

        <div class="mb-3">

            <label for="titre" class="form-label">titre</label>

            <input type="text" class="form-control" id="titre" name="titre" value="<?php  echo $recipes['titre'] ?>" >

            <div id="titre-help" class="form-text">Donnez un titre court et précis.</div>

        </div>

        <div class="mb-3">

            <label for="description" class="form-label">Votre Recette</label>

            <textarea class="form-control" placeholder="Exprimez vous" id="description" name="description"><?php echo $recipes['description']; ?></textarea>

        </div>

        <button type="submit" class="btn btn-primary"  >modifier</button>

    </form>

    <br />

</div>

<?php include_once('footer.php'); ?>

</body>

</html>

submit-modifRecette.php

<?php

session_start();

include_once('user.php');

include_once('mysql.php');

include_once('variable.php');


 

if(!isset($_POST['titre']) ||  !isset($_POST['description']))

{

    $output ="vous devez entrer le titre et la description de la recette pour soumettre le formulaire ";

    return $output;

}

$titre = $_POST['titre'];

$recette =$_POST['description'];

 $insertRecette = 'UPDATE recipes  SET  titre= :titre, description= :description WHERE recipe_id =:id';

 $insert = $db -> prepare($insertRecette);

 $insert -> execute([

    'titre' => $titre,

    'description' => $recette,

  ]);


 

?>

<link

href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"

rel="stylesheet"

>

</head>

<?php include('header.php');  ?>

<h1>Recette modifié avec Succès !</h1>

<div class="card">

<div class="card-body">

<h5 class="card-title"> <?php echo $titre; ?></h5>

<p class="card-text"><b>email</b> : <?php echo $loggedUser['email']; ?></p>

<p class="card-text"><b>Description</b> : <?php echo $recette; ?></p>

</div>

</div>



 

Windows / Chrome 111.0.0.0

2 réponses

  1. Merci pour votre remarque et votre réponse en vrai je viens de commencer a apprendre PHP donc jje vois les modifications que vous avez apportées mais la comprehension n'est si evidente 

    sinon merci pour votre aide

    1. Modérateur

      Bonjour,

      A l'avenir, merci de poster ton code correctement sur le forum en utilisant l'icone prévue à cet effet lors de la rédaction de tes messages.

      En gros, ton code devrait ressembler à ça :

      <?php
      /**
       * modifRecette.php
       */
      //démarrage session (toujours en premier ! )
      session_start();
      
      //affichage des éventuelles erreurs php
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      
      //connexion à la bdd
      require_once('mysql.php');
      
      //récupération propre des variables AVANT de les utiliser
      $id = !empty($_GET['id']) ? intVal($_GET['id']) : null;
      
      //récupération de la recette
      if ($id) {
        try {
          $recipesStatement = $db->prepare('SELECT * FROM recipes WHERE recipe_id =:id');
          $recipesStatement->execute(array('id' => $id));
          $recipes = $recipesStatement->fetch();
        } catch (Exception $e) {
          echo "Erreur SQL .." . $e->getMessage();
        }
      }
      ?>
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <title>Site de recettes - Ajouter une Recette</title>
          <link  href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"  rel="stylesheet" >
        </head>
      
        <body class="d-flex flex-column min-vh-100">
          <div class="container">
            <?php include_once('header.php'); ?>
      
            <h1>modifier une Recette</h1>
            <form  action="submit_modifRecette.php" method="post" >
              <input type="hidden" name="id" value="<?php echo $id; ?>">
              <div class="mb-3">
                <label for="titre" class="form-label">titre</label>
                <input type="text" class="form-control" id="titre" name="titre" value="<?php echo $recipes['titre'] ?>" >
                <div id="titre-help" class="form-text">Donnez un titre court et précis.</div>
              </div>
      
              <div class="mb-3">
                <label for="description" class="form-label">Votre Recette</label>
                <textarea class="form-control" placeholder="Exprimez vous" id="description" name="description"><?php echo $recipes['description']; ?></textarea>
              </div>
              <button type="submit" class="btn btn-primary"  >modifier</button>
            </form>
            <br />
          </div>
          <?php include_once('footer.php'); ?>
        </body>
      </html>
      
      <?php
      /**
       * submit-modifRecette.php
       */
      //démarrage session (toujours en premier ! )
      session_start();
      
      //affichage des éventuelles erreurs php
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);
      
      //connexion à la bdd
      require_once('mysql.php');
      require_once('user.php');
      require_once('variable.php');
      
      //récupération propre des variables AVANT de les utiliser
      $id = !empty($_POST['id']) ? $_POST['id'] : NULL;
      $titre = !empty($_POST['titre']) ? $_POST['titre'] : "";
      $description = !empty($_POST['description']) ? $_POST['description'] : "";
      
      if (!$titre || !$description) {
        $output = "vous devez entrer le titre et la description de la recette pour soumettre le formulaire ";
        exit;
      }
      
      //On regarde si il existe déjà en bdd.
      // si oui, mise à jour, si non.. création
      try {
        $recipesStatement = $db->prepare('SELECT * FROM recipes WHERE recipe_id =:id');
        $recipesStatement->execute(array('id' => $id));
        $recipes = $recipesStatement->fetch();
      } catch (Exception $e) {
        echo "Erreur SQL .." . $e->getMessage();
      }
      
      if (!empty($recipes)) {
        //mise à jour
        try {
          $insertRecette = 'UPDATE recipes  SET  titre= :titre, description= :description WHERE recipe_id =:id';
          $insert = $db->prepare($insertRecette);
          $insert->execute([
              ':titre' => $titre,
              ':description' => $description,
              ':id' => $id
          ]);
        } catch (Exception $e) {
          echo "Erreur SQL .." . $e->getMessage();
        }
      } else {
        //création
        try {
          $insertRecette = 'INSERT INTO recipes (titre, description ) VALUES (:titre,:description)';
          $insert = $db->prepare($insertRecette);
          $insert->execute([
              ':titre' => $titre,
              ':description' => $description
          ]);
        } catch (Exception $e) {
          echo "Erreur SQL .." . $e->getMessage();
        }
      }
      ?>
      
      
      ?>
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <title>Site de recettes - Ajouter une Recette</title>
          <link  href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"  rel="stylesheet" >
        </head>
        <body>
          <?php include('header.php'); ?>
      
          <h1>Recette modifié avec Succès !</h1>
          <div class="card">
            <div class="card-body">
              <h5 class="card-title"> <?php echo $titre; ?></h5>
              <p class="card-text"><b>email</b> : <?php echo $loggedUser['email']; ?></p>
              <p class="card-text"><b>Description</b> : <?php echo $recette; ?></p>
            </div>
          </div>
      
          <?php include_once('footer.php'); ?>
        </body>
      </html>