COMMENT MODIFIER DES DONNEES D'UNE TABLE PHP

JU_37 Messages postés 2 Statut Membre -  
JU_37 Messages postés 2 Statut Membre -

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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     

    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>

    0
  2. JU_37 Messages postés 2 Statut Membre
     

    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

    0