Problème d'entrée de donnée dans ma jolie BDD

Eléphant du PHP | 75 Messages

16 août 2005, 16:29

Salut à tous,

Voilà le topo, avec un formulaire je récupère des fichiers images pour les entrer dans ma bdd.
Il a deux champs de saisi de fichier, on est pas obligé de remplir les deux donc quand y a pas d'images dans l'un des deux voir les deux champs j'affiche un joli carré blanc barré de rouge
( :? c chouette n'est ce pas?)

le problème ne vient pas du transfert de fichiers, non [-X , mais plutot de l'affichage de l'image "pas_image.jpg"

Mon script:
<?
///////////////////////////////////Upload des photos////////////////////////////////////////
//Initialisation de la variables $infos
$infos = '';

//Remplacer les champs photos vides par l'image "aucunes images" qui s'appel 'pas_image.jpg'
if (empty($_FILES['photo1']['size'])){
$_FILES['photo1']="pas_image.jpg";
}
if (empty($_FILES['photo2']['size'])){
$_FILES['photo2']="pas_image.jpg";
}
//Pour savoir si le fichier a été uploadé
if (!empty($_FILES['photo1']['size']) || !empty($_FILES['photo2']['size'])){

//Récupération de la taille, du nom et du nom du fichier temporaire
$f1_size = $_FILES['photo1']['size'];
$f2_size = $_FILES['photo2']['size'];
$f1_name = $_FILES['photo1']['name'];
$f2_name = $_FILES['photo2']['name'];
$f1_tmpname = $_FILES['photo1']['tmp_name'];
$f2_tmpname = $_FILES['photo2']['tmp_name'];

//Récupération de l'extension du fichier
$ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1));
$ext2 = strtolower(substr($f2_name,strrpos($f2_name, ".")+1));

//Création du tableau des extensions acceptées
//Pour permettre ou refuser des extensions, ajoutez ou supprimez celle nécessaire
$valides = array("bmp","jpg","gif","png","tif");

//Vérification de la taille et le type de fichier (5 Mo)
//Pour changer la taille, mettre la valeur en octect
if ($f1_size > 5000000) $infos .= "<center>- La photo N°1 est trop volumineuse!<br>n</center>";
if ($f2_size > 5000000) $infos .= "<center>- La photo N°2 est trop volumineuse!<br>n</center>";
if ($f2_size > 5000000 && $f1_size > 5000000) $infos .= "<center>- Les photos sont trop volumineuses!<br>n</center>";
if (!in_array($ext,$valides)) $infos .= "<center>- Le type de fichier de la photo N°1 n'est pas accepté!<br></center>";
if (!in_array($ext2,$valides)) $infos .= "<center>- Le type de fichier de la photo N°2 n'est pas accepté!<br></center>";
if (!in_array($ext,$valides) && !in_array($ext2,$valides)) $infos .= "<center>- Les types de fichier des photos ne sont pas accepté!<br></center>";

//Si tout est correct, on déplace le fichier sinon on affiche les messages d'erreurs qui correspondent
if ($infos == ''):
move_uploaded_file($f1_tmpname, "./photo/{$f1_name}") or $infos .= "<center>- Impossible d'enregistrer le fichier, contacter le webmaster!<br></center>";
move_uploaded_file($f2_tmpname, "./photo/{$f2_name}") or $infos .= "<center>- Impossible d'enregistrer le fichier, contacter le webmaster!<br></center>";

endIf;
}else $infos .= "<center>- Vous devez sélectionner un fichier à uploader!<br></center>";

//Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
if (empty($_POST['MAX_FILE_SIZE'])) $infos = '';

///////////////////////////////////////////////////////////////////////////

mysql_query("INSERT INTO objet (photo1, photo2) VALUES ('photo/{$f1_name}', 'photo/{$f2_name}')") or die(mysql_error());

?>
le fait est que l'image ne s'affiche pas car le nom du fichier "pas_image.jpg" n'est pas bon...
cela affiche en réalité "photo/p" au lieu de "photo/pas_image.jpg"

voilà je ne comprend pas pourquoi il me rentre ça à la place du nom de fichier que je lui indique...
merci d'avance!!
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Mammouth du PHP | 19672 Messages

16 août 2005, 17:51

As-tu essayé avec une concaténation normale ?
mysql_query("INSERT INTO objet (photo1, photo2) VALUES ('photo/". $f1_name ."', 'photo/". $f2_name ."')") or die(mysql_error());
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2005, 17:59

je viens d'essayer mais le problème reste le même qu'avant... j'avoue ne pas savoir d'ou ça peut venir pourtant c'est pas faute d'avoir regarder 100 et 1 fois et de changer la manière de faire...
mais là... ](*,)

Eléphant du PHP | 75 Messages

17 août 2005, 09:58

je me suis rendu compte que j'étais pas loggé :lol: ... voilà c'est fait
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Eléphant du PHP | 75 Messages

17 août 2005, 16:05

personne ne peut m'aider?
je n'arrete pas de me pencher sur le problème mais je comprend toujours pas d'où vient l'erreur...
help me please!! :(
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 août 2005, 16:09

le problème est à l'affichage non ? or là tu nous donnes le script d'insertion

est-ce que le nom du fichier dans la Bdd est bien pas_dimage ?

je ne comprends pas pourquoi lorsqu'il n'y a pas de fichier associé tu fais toutes tes manips avec cette image par défaut : ne serait-ce pas plus simple de gérer ça à l'affichage uniquement ?

etycia
Invité n'ayant pas de compte PHPfrance

18 août 2005, 02:01

Ton code à l'air d'être correcte, mais dis moi le problème ne viendrait-il pas de ta bd?? Bah oui enfait peut etre as tu mis une restriction du nbre de caractère dans l'attribut de ton champs (dans la table 'objet' et les deux champs 'photo1' et 'photo2'). Tu doit avoir les attributs TEXT ou alors VARCHAR avec un max de caractère à 200 pour pas avoir de pbs...
A suivre...

Invité
Invité n'ayant pas de compte PHPfrance

19 août 2005, 19:31

l'idée est bonne etycia j'ai donc modifier ma base pour accepter des valeurs (taile/valuers) de 200...
mais ça ne change pas le problème donc je vais essayer l'affichage comme ouckileou me la conseiller...
en attendant le résultat je mets le post en résoulu!!
merciiiiiiiiiiiiii

Eléphant du PHP | 75 Messages

19 août 2005, 19:32

j'ai encore oublié de me logger...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...