Update data via un formulaire

Fermé
Enzs Messages postés 3 Date d'inscription mardi 10 octobre 2017 Statut Membre Dernière intervention 19 octobre 2019 - Modifié le 19 oct. 2019 à 22:21
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 19 oct. 2019 à 22:47
Bonjour à vous tous , je suis novice en php & mysql ... j'ai rencontré un problème pour modifier des étudiants via un formulaire , je suis bloqué et je sais pas quoi . besoin de coup de main merci d'avance

page edit.php

<?php

require_once("conn.php");

    $code=$_GET['code'];
    $ps=$con->prepare("SELECT * FROM etudiants WHERE code=?");
    $params=array($code);
    $ps->execute($params);
    $et=$ps->fetch(); 

?>

<!doctype html>
<html lang="fr">
<head>
    <meta charset="utf-8">

    <title>Titre de la page</title>

    <link   rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
    <link   rel="stylesheet" type="text/css" href="css/style.css">


</head>
<body>
<?php require_once("header.php")?>
<?php require_once("footer.php")?>
<div class="container">
    <div class="panel panel-default spacer  ">
        <div class="panel-heading"> Editer la liste des étudians  </div>
        <div class="panel-body">

            <form method="post" action="update.php"  enctype="multipart/form-data">

                <div class="form-group">
                    <label class="control-label" > code : <?php echo ($et['code']) ?> </label>
                    <input type="hidden" name="nom" value="<?php echo($et['code'])?>" class="form-control"/>
                </div>

                <div class="form-group">
                    <label class="control-label" >Nom </label>
                    <input type="text" name="nom" value="<?php echo($et['nom'])?>" class="form-control"/>
                </div>

                <div class="form-group">
                    <label class="control-label" >Email </label>
                    <input type="text" name="email" value="<?php echo($et['email'])?>" class="form-control"/>
                </div>

                <div class="form-group">
                    <label class="control-label" >Photo </label>
                    <input type="file" name="photo" class="form-control"/>
                    <img src="./img/<?php echo($et['photo'])?>" width="100" height="100">
                </div>

                <button type="submit">save</button>

            </form>



        </div>
    </div>
</div>


</body>
</html>

?>





update.php 

<?php

require_once("conn.php");

      $code=$_POST['code'];
      $nom=$_POST['nom'];
      $email=$_POST['email'];
      $nomPhoto=$_FILES['photo']['name'];

      if ($nomPhoto==""){

          $ps=$con->prepare("UPDATE etudiants SET nom=?,email=? WHERE code=?");
          $params=array($nom, $email,$code); 

      }else{

          $fichierTempo = $_FILES['photo']['tmp_name'];
          move_uploaded_file($fichierTempo, './img/' . $nomPhoto);
          $ps=$con->prepare("UPDATE etudiants SET nom=?,email=?,photo=? WHERE code=?");
          $params=array($nom, $email, $nomPhoto,$code);
          $ps->execute($params);


      }
header("location:etudiants.php");

?>

A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
19 oct. 2019 à 22:41
Bonjour,

Tu dis être bloqué... sans expliqué le souci...
Un message d'erreur ?? le comportement voulu n'est pas là ?? autre chose ??

Quoi qu'il en soit, je t'invite à lire et à appliquer le contenu de ces deux liens

--> Activer les erreurs pdo ET mettre chaque requête dans un bloc try/catch
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

---> Activer les erreurs php
---> récupérer proprement les variables AVANT de les utiliser

https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Et bien entendu, pour voir les éventuelles erreurs, penser à mettre en commentaire les redirections dans ton code


Ton code un peu revu et corrigé (avec gestion des erreurs éventuelles... )
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


require_once("conn.php");

$code = !empty($_POST['code']) ? $_POST['code'] : NULL;
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
$nomPhoto =$_FILES['photo']['name']) ? $_FILES['photo']['name'] : NULL;

$datas =array($nom, $email);
$sql = "UPDATE etudiants SET nom=?,email=? ";

if($nomPhoto ){
    // les différentes erreurs possibles lors de l'upload
   $phpFileUploadErrors = array(
      0 => 'There is no error, the file uploaded with success',
      1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
      2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
      3 => 'The uploaded file was only partially uploaded',
      4 => 'No file was uploaded',
      6 => 'Missing a temporary folder',
      7 => 'Failed to write file to disk.',
      8 => 'A PHP extension stopped the file upload.',
  );

  $fichierTempo = !empty($_FILES['photo']['tmp_name']) ? $_FILES['photo']['tmp_name'] : NULL;
  $fileError = $_FILES['photo']['error'];
  //on s'assure qu'il n'y a pas d'erreur lors de l'upload du fichier
  if( $fileError >0 ){
      echo !empty($phpFileUploadErrors[$fileError]) ? $phpFileUploadErrors[$fileError] : " Erreur inconnue lors de l'upload";
      exit;
  }
  //si le fichier a bien été téléchargé :
  if(move_uploaded_file($fichierTempo, './img/' . $nomPhoto)){
    //si il y a une photo, on complète la requête et les datas
    $sql .= "photo=?";
    $datas[] = $nomPhoto; 
  }else{
    echo "Erreur lors de la copie de la photo sur le serveur !";
    exit();
  }
}
//on ajout le where
$sql .= " WHERE code=? ";
$datas[] = $code; 

//on execute la requête
try {
  $ps=$con->prepare($sql);
  $ps->execute($datas);
  //header("location:etudiants.php"); //laisser en commentaire le temps des tests...
  exit;
}catch(Exception $e){
  echo "Erreur lors de l'update !<br>";
  echo $e->getMessage();
  echo "<br> SQL : " . $sql;
  echo "<pre>";
  print_r($datas);
  echo "</pre>";
}



0
Enzs Messages postés 3 Date d'inscription mardi 10 octobre 2017 Statut Membre Dernière intervention 19 octobre 2019
19 oct. 2019 à 22:47
oui t'a raison désoler j'été pas claire ..... en faite qu'on j’essaye de modifier un étudiant ce me donne rien il me redirige vers ma liste des étudiants initiale . sans rien modifier
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Enzs Messages postés 3 Date d'inscription mardi 10 octobre 2017 Statut Membre Dernière intervention 19 octobre 2019
19 oct. 2019 à 22:47
Teste le code que je t'ai donné (en essayant de le relire et de le comprendre tant qu'à faire...)
Pense à lire les liens que je t'ai donné
Et reviens nous voir si tu as encore un souci.
Sinon, pense à mettre le sujet en résolu.
0