Update data via un formulaire
Enzs
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 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");
?>
1 réponse
-
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>"; }