Créer lien image dans base mysql

t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
 Kakebeuk -
Bonjour,

Je tente de créer un luien image dans une bdd mysql, et de uploader mon image dans un dossier.
1. via un formulaire, je sélectionne mon image :
<form enctype="multipart/form-data" action="creat_lien_cjt.php?mode=ajout&id_fils=<?php echo $id_fils; ?>&num_indiv_cjt=<?php echo $num_indiv_cjt; ?>&cj=<?php echo $cj; ?>&famille=<?php echo $famille; ?>" method="POST" value="envoyer" name="soumettre"> .................

<td><input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="acte_marg" size="51" /></td></tr> .................
<input type="submit" name="preview" value="Valider"></form>
2. Je récupère mes données et je les inscris dans ma bdd (^d'ailleur, je ne suis pas sûr de bien récupérer fichier acte_marg ? ) :
$acte_marg = $_POST['acte_marg'];

.........
$fic_marg = basename($_FILES['acte_marg']['name']);
if (!empty($fic_marg))
{
$dossier_marg = '../images/acte_mariage/';
move_uploaded_file($_FILES['acte_marg']['tmp_name'], $dossier_marg . $fic_marg);
$resultC=mysql_query("UPDATE individus SET acte_mariage_lien_1='$dossier_marg$fic_marg', acte_mariage_1='$fic_marg' WHERE id='$id_fils'");
}
L'upload ne fonctionne pas. Mais je ne suis déjà pas sûr que le passage de "acte_marg" du point 1 au point 2 se fasse correctement. Mais je ne trouve pas le pourquoi !?
Merci.
A voir également:

2 réponses

Kakebeuk
 
Salut,

vous pouvez voir ici:
http://fr.php.net/move_uploaded_file
Que si l'upload se fait la fonction renvoie true sinon c'est false.
Cela permet déjà de savoir que l'upload à bien eu lieu ou pas(dans ce cas on affiche un message d'erreur). En cas de succès faites l'insertion de l'url dans la base.

Suivant le fichier il peut s'agir d'un problème de taille lors de l'envoi, celui ci est alors signalé par un stack overflow, celui ci est définit par la valeur upload-max-filesize du fichier php.ini
0
Kakebeuk
 
Pour préciser il faut écrire votre envoi de fichier comme cela:

if(move_uploaded_file($_FILES['acte_marg']['tmp_name'], $dossier_marg . $fic_marg)){
// l'envoi est bien effectué
//ajoutez l'insertion du chemin du fichier dans la base ici
}else{
// en cas d'échec de l'envoi
echo ("Erreur lors de l'envoi du fichier");
}

Il est nécessairement utile de vérifier si le fichier est au bon format en vérifiant l'extension et de vérifier son poids aussi. Soit vous définissez un poids limite soit vous utilisez celui définit par le fichier php.ini mais php n'est pas fait pour envoyer des fichiers volumineux (>10mo)non plus alors méfiez vous même si votre limite d'upload par fichier est réglée au delà.
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Et comment tester si le passage de ma variable du point 1 au point 2 est ok ?
Car je ne suis pas sûr que ce soit bon !
0