Update data via un formulaire

Enzs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Enzs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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