Page 1 sur 1
Modifier des données dans une BDD (UPDATE)
Posté : 04 nov. 2008, 15:31
par Nad21
Bonjour
Voilà j'ai un petit soucis sur un code, j'ai une table dont je peux modifier les enregistrements (texte et photos) j'ai donc un formulaire de modification avec autant de champs que de champs dans ma table.Le probleme vient du champs photo de mon formulaire.Quand j'envoi mon formulaire de modif si je n'ai pas rechargé une photo avec le champ type="file" et bien ca m'efface le nom de fichier precedemment enrgistré dans la table.
Je ne sais pas trop comment faire, est ce que ca doit ressembler a ca
if ($_FILES['photo']['name']==""){
...}
mais là que mettre???
merci
Nadege
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 04 nov. 2008, 16:02
par stopher
Salut,
Je pense , que tu peux vérifier si une nouvelle photo a été posté .. si c'est la cas tu update sinon , tu ne fais rien ...
if( !empty( $_FILES['photo']['name'] ))
{
... // tu complétes ta requete pour mettre à jour la photo
}
Ainsi , si tu ne donne pas une nouvelle photo a enregistrer , il ne va pas écraser l'ancien enregistrement ....
Si tu ne vérifie pas ce champ $_FILES , quoi qu'il y est dedans , il va mettre à jour le champ photo de ta base , donc s'il n'y a rien , il va effacer l'ancien enregistrement .
Posté : 04 nov. 2008, 16:13
par Nad21
merci de ta reponse
mais en fait j'avais déjà un /if (isset($_FILES['photo'])){
et ensuite ma fonction d'upload d'images et ensuite j'update dans la table
mais ca me vide tjrs mon champs photos si j'ai rien dedans
je mets en dessous ma fonction upload
if( !empty( $_FILES['photo']['name'] )) {
//extensions acceptées
$extension_ok = array('doc','xls','pdf');
$taille_max=500000;
$dest_dossier= "../img/info/";
//vérification de l'extension du fichier a uploader
if (!in_array( substr(strchr($_FILES['photo']['name'],'.'),1), $extension_ok) ){
$erreur="il ne s'agit pas d'une extension autorisée";
}
elseif ($_FILES['photo']['error']==2){
$erreur = " Le fichier est trop lourde, il doit etre inférieur à 500ko";
}
//copie du fichier
if (!isset($erreur)){
$dest_fichier = basename($_FILES['photo']['name']);
//on enleve les accents du nom de fichier
$dest_fichier = strtr($dest_fichier,
'àéèùöôüäâëêîï',
'aeeuoouaaeeii');
//remplacement des caracteres speciaux
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i','_',$dest_fichier);
//copie du fichier dans le dossier de destination
move_uploaded_file($_FILES['photo']['tmp_name'],$dest_dossier.$dest_fichier);
//pour faciliter la recup
$nom_fichier=$dest_fichier;
}else {
echo $erreur;
echo '<br/><a href="infoaccueil.php">retour</a>';
exit();
}
}
$ajout=ajouter_info($_POST['id'],$_POST['titre'],$_POST['texte'],$nom_fichier);
if ($ajout){
echo "Votre info s'est bien ajoutée, félicitation<br>";
echo "<a href='infoaccueil.php'> retour à l'index</a>";
}else{
echo "probleme d'insertion";
}
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 04 nov. 2008, 16:25
par stopher
Montres nous comment tu crées ta requête d'update
Posté : 04 nov. 2008, 16:29
par AB
Et bien ça doit venir de ton code qui permet la mise à jour ...
Or tu nous montre le code de l'upload, pas celui de la modification des infos dans la bdd...
EDIT j'avais pas vu le message de stopher qui va dans le même sens
Posté : 04 nov. 2008, 16:33
par Nad21
quelqu'un a une idée parce que là je vois pas le probleme!!!
maintenant avec le !empty j'ai une erreur qui s'affiche
extension non autorisée
a croire que le !empty ne sert à rien
voilàle code de l'update
function modifier_info($id_info,$ordre_info,$titre_info,$texte_info,$nom_fichier){
//vérification des paramètres passés
$tab_erreur = array();
if(is_null($titre_info)){
$tab_erreur["titre_info"] = $titre_info;
}
if(is_null($texte_info)){
$tab_erreur["texte_info"] = $texte_info;
}
//affichage du tableau d'erreurs si elles existent
$nb_erreur = count($tab_erreur);
if($nb_erreur > 0){
echo $tab_erreur;
exit();
}
$up="UPDATE info SET ordre='$ordre_info',titre='$titre_info',texte='$texte_info',photo='$nom_fichier' WHERE id=$id_info";
echo $up;
$resultat=mysql_query($up);
if ($resultat){
return true;
}
else {
return false;
}
}
Posté : 04 nov. 2008, 20:25
par AB
Et le résultat de echo $up donne quoi ?
Posté : 04 nov. 2008, 20:26
par Nad21
le resultat c'est photo''
mais ca ne fonctionne pas si je mets isset($_FILES['photo']) seulemtn si c'est empty
Posté : 04 nov. 2008, 20:37
par stopher
Il faut tester ta variable $nom_fichier , pour adapter ta requete ...
(string)$maj_photo = "";
if( !empty($nom_fichier) )
{
$maj_photo = ",photo='$nom_fichier'";
}
$up = "UPDATE info SET ordre='$ordre_info',titre='$titre_info',texte='$texte_info' $maj_photo WHERE id=$id_info";
ainsi la photo sera mise à jour si il y a une mise à jour à faire , sinon , on laisse tel quel ...