我有一个用户可以用来更新对象的表单。该对象有5个img属性。所以在修改时我想更新数据库。我希望该函数只更新用户在表单中更改的图像(数据库中的属性(img,img2,img3,img4,img5)。
以下是表单提交的更新功能:
public function updateOutil()
{
$o = new Outillage($_POST["art"]);
$o->__set("id", $_POST["id"]);
$o->__set("id_art", $_POST["id_art"]);
$o->__set("article", $_POST["art"]);
$o->__set("id_doc", $_POST["id_doc"]);
$o->__set("document", $_POST["doc"]);
$o->__set("ilot", ilot::findAllByName($_POST["ilot"]));
$o->__set("emplacement", $_POST["emplacement"]);
$o->__set("liste_tubes", $_POST["liste_tubes"]);
define('TARGET', $_SERVER['DOCUMENT_ROOT'].'imageOutil/'); // Repertoire cible
define('MAX_SIZE', 5300000); // Taille max en octets du fichier
define('WIDTH_MAX', 5000); // Largeur max de l'image en pixels
define('HEIGHT_MAX', 5000); // Hauteur max de l'image en pixels
// Tableaux de donnees
$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
$infosImg = array();
// Variables
$extension = '';
$nomImage = '';
$message='';
$cpt='';
/************************************************************
* Creation du repertoire cible si inexistant
*************************************************************/
if( !is_dir(TARGET) ) {
if( !mkdir(TARGET, 0755) ) {
exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
}
}
/************************************************************
* Script d'upload
*************************************************************/
if(!empty($_POST['image']))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier']['error']){
// On nomme le fichier
$nomImage=$_POST['image'];
//On verifie qu'aucun fichier du même nom existe
if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
try{
move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET . $nomImage);
$o->__set("image", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
$message1= '<br/>L\'opération a été effectuée avec succès!';
} catch (Exception $e) {
// Sinon on affiche une erreur systeme
$o->__set("image", 'imageOutil/'. $nomImage . time());
$message1= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
$message1.= $e->getMessage();
}
}
else{
$newNomImage= date('His',time()). $nomImage;
move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET . $newNomImage);
$o->__set("image", 'imageOutil/' . $newNomImage);
$message1= '<br/>Un fichier image du même nom que image 1 est déjà existant.';
$message1.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
}
}
else
{
$message1= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
$message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message1= '<br/>Erreur dans les dimensions de l\'image !';
$message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur le type de l'image
$message1= '<br/>Le fichier à uploader n\'est pas une image !';
$message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message1= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message1= '<br/>Pas de Fichier ajouté pour l\'image 1 !';
$cpt.='A';
}
}
else{
$message1= '<br/>Vous n\'avez pas nommez l\'image 1 !';
}
$message=$message1;
if(!empty($_POST['image2']))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier2']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier2']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier2']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier2']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier2']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier2']['error']){
// On nomme le fichier
$nomImage=$_POST['image2'];
//On verifie qu'aucun fichier du même nom existe
if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
try{
move_uploaded_file($_FILES['fichier2']['tmp_name'], TARGET . $nomImage);
$o->__set("image2", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
$message2= '<br/>L\'opération a été effectuée avec succès!';
} catch (Exception $e) {
// Sinon on affiche une erreur systeme
$o->__set("image2", 'imageOutil/'. $nomImage . time());
$message2= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
$message2.= $e->getMessage();
}
}
else{
$newNomImage= date('His',time()). $nomImage;
move_uploaded_file($_FILES['fichier2']['tmp_name'], TARGET . $newNomImage);
$o->__set("image2", 'imageOutil/' . $newNomImage);
$message2= '<br/>Un fichier image du même nom que image 2 est déjà existant.';
$message2.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
}
}
else
{
$message2= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
$message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message2= '<br/>Erreur dans les dimensions de l\'image !';
$message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur le type de l'image
$message2= '<br/>Le fichier à uploader n\'est pas une image !';
$message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message2= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message2= '<br/>Pas de Fichier ajouté pour l\'image 2 !';
$cpt.='B';
}
}
else{
$message2= '<br/>Vous n\'avez pas nommez l\'image 2 !';
}
$message.=$message2;
if(!empty($_POST['image3']))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier3']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier3']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier3']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier3']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier3']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier3']['error']){
// On nomme le fichier
$nomImage=$_POST['image3'];
//On verifie qu'aucun fichier du même nom existe
if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
try{
move_uploaded_file($_FILES['fichier3']['tmp_name'], TARGET . $nomImage);
$o->__set("image3", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
$message3= '<br/>L\'opération a été effectuée avec succès!';
} catch (Exception $e) {
// Sinon on affiche une erreur systeme
$o->__set("image3", 'imageOutil/'. $nomImage . time());
$message3= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
$message3.= $e->getMessage();
}
}
else{
$newNomImage= date('His',time()). $nomImage;
move_uploaded_file($_FILES['fichier3']['tmp_name'], TARGET . $newNomImage);
$o->__set("image3", 'imageOutil/' . $newNomImage);
$message3= '<br/>Un fichier image du même nom que image 3 est déjà existant.';
$message3.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
}
}
else
{
$message3= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
$message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message3= '<br/>Erreur dans les dimensions de l\'image !';
$message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur le type de l'image
$message3= '<br/>Le fichier à uploader n\'est pas une image !';
$message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message3= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message3= '<br/>Pas de Fichier ajouté pour l\'image 3 !';
$cpt.='C';
}
}
else{
$message3= '<br/>Vous n\'avez pas nommez l\'image 3 !';
}
$message.=$message3;
if(!empty($_POST['image4']))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier4']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier4']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier4']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier4']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier4']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier4']['error']){
// On nomme le fichier
$nomImage=$_POST['image4'];
//On verifie qu'aucun fichier du même nom existe
if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
try{
move_uploaded_file($_FILES['fichier4']['tmp_name'], TARGET . $nomImage);
$o->__set("image4", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
$message4= '<br/>L\'opération a été effectuée avec succès!';
} catch (Exception $e) {
// Sinon on affiche une erreur systeme
$o->__set("image4", 'imageOutil/'. $nomImage . time());
$message4= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
$message4.= $e->getMessage();
}
}
else{
$newNomImage= date('His',time()). $nomImage;
move_uploaded_file($_FILES['fichier4']['tmp_name'], TARGET . $newNomImage);
$o->__set("image4", 'imageOutil/' . $newNomImage);
$message4= '<br/>Un fichier image du même nom que image 4 est déjà existant.';
$message4.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
}
}
else
{
$message4= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
$message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message4= '<br/>Erreur dans les dimensions de l\'image !';
$message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur le type de l'image
$message4= '<br/>Le fichier à uploader n\'est pas une image !';
$message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message4= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message4= '<br/>Pas de Fichier ajouté pour l\'image 4 !';
$cpt.='D';
}
}
else{
$message4= '<br/>Rien pour l\'image 4 !';
}
$message.=$message4;
if(!empty($_POST['image5']))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier5']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier5']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier5']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier5']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier5']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier5']['error']){
// On nomme le fichier
$nomImage=$_POST['image5'];
//On verifie qu'aucun fichier du même nom existe
if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
try{
move_uploaded_file($_FILES['fichier5']['tmp_name'], TARGET . $nomImage);
$o->__set("image5", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
$message5= '<br/>L\'opération a été effectuée avec succès!';
} catch (Exception $e) {
// Sinon on affiche une erreur systeme
$o->__set("image5", 'imageOutil/'. $nomImage . time());
$message5= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
$message5.= $e->getMessage();
}
}
else{
$newNomImage= date('His',time()). $nomImage;
move_uploaded_file($_FILES['fichier5']['tmp_name'], TARGET . $newNomImage);
$o->__set("image5", 'imageOutil/' . $newNomImage);
$message5= '<br/>Un fichier image du même nom que image 5 est déjà existant.';
$message5.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
}
}
else
{
$message5= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
$message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message5= '<br/>Erreur dans les dimensions de l\'image !';
$message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon erreur sur le type de l'image
$message5= '<br/>Le fichier à uploader n\'est pas une image !';
$message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message5= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message5= '<br/>Pas de Fichier ajouté pour l\'image 5 !';
$cpt.='E';
}
}
else{
$message5= '<br/>Rien pour l\'image 5 !';
}
$message.=$message5;
$o->updateImg($cpt);
header('Location: /Site.php?a=outillage&b='.urlencode($message));
}
这是updateImg函数,它应该执行sql请求,如下所示:
public function updateImg($cpt){
$c=Base::getConnection();
$posA=strpos($cpt,'A');
$posB=strpos($cpt,'B');
$posD=strpos($cpt,'C');
$posE=strpos($cpt,'D');
$posF=strpos($cpt,'E');
$q='UPDATE outillage SET id_art=:id_art, article=:article, id_doc=:id_doc, document=:document, ilot=:ilot, emplacement=:emplacement, liste_tubes=:liste_tubes';
if ($posA===false) {
$q.=", image=:image";
}
if ($posB===false){
$q.=", image2=:image2";
}
if ($posD===false){
$q.=", image3=:image3";
}
if ($posE===false){
$q.=", image4=:image4";
}
if ($posF===false){
$q.=", image5=:image5";
}
$q.="WHERE id=:id;";
$query=$c->prepare($q);
$query->bindParam(':id',$this->id,PDO::PARAM_INT);
$query->bindParam(':id_art',$this->id_art,PDO::PARAM_INT);
$query->bindParam(':article',$this->article,PDO::PARAM_STR);
$query->bindParam(':id_doc',$this->id_doc,PDO::PARAM_STR);
$query->bindParam(':document',$this->document,PDO::PARAM_STR);
$query->bindParam(':ilot',$this->ilot,PDO::PARAM_INT);
$query->bindParam(':emplacement',$this->emplacement,PDO::PARAM_STR);
$query->bindParam(':liste_tubes',$this->liste_tubes,PDO::PARAM_STR);
if ($posA===false){
$query->bindParam(':image',$this->image,PDO::PARAM_STR);
}
if ($posB===false){
$query->bindParam(':image2',$this->image2,PDO::PARAM_STR);
}
if ($posD===false){
$query->bindParam(':image3',$this->image3,PDO::PARAM_STR);
}
if ($posE===false){
$query->bindParam(':image4',$this->image4,PDO::PARAM_STR);
}
if ($posF==false){
$query->bindParam(':image5',$this->image5,PDO::PARAM_STR);
}
$query->execute();
我没有错误。但是当我测试那些时,我从updateOutil()得到了正确的“消息”,但我的数据库没有更新。我认为这是一个关于如何“构建”我的SQL请求的问题。
我四处搜索,找不到任何有用的话题。因为几个小时后我就坚持这个,所以任何帮助都将受到赞赏: - )
答案 0 :(得分:1)
使用var_dump()观看变量并调试应用程序。如果出现问题,你应该至少得到一个例外。
答案 1 :(得分:0)
好吧,我找到了解决方案。我认为必须有一些关于准备查询的规则,我没有遵循,因为我需要做的是为每个图像创建单独的查询并分别上传它们。所以在我的updateImg()函数中,现在每个if条件都有
if ($posA===false){
$query=$c->pepare('UPDATE outillage SET image:=image WHERE id:=this')
$query->bindParam(':id',$this->id,PDO::PARAM_INT);
$query->bindParam(':image',$this->image,PDO::PARAM_STR);
$query->execute()
}
在我所有的ifs之后我通常更新其他属性