Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour à tous,
jai un petit soucis qui doit pas etre bien complqiué mais je bloque depuis 3 jours !!
en fait jai un formulaire qui ajoute des données dans ma BDD et dans ce form il y a un champs pr parcourir et aller chercher son image. Le probleme c'est que quand la personne rempli tou les champs mai ne met pas dimage, alors il m'insert les données quil a inscrite + une ligne de donnée vide, donc au final pr un enregistrement jen ai deux dont un vide !
Alors que ca fonctionne parfaitement lorsqu'il met une image.... pouvez vous maider svp ?
voici le code :
-------------------------
if ($menu=="1"){
// DEBUT UPLOAD IMAGE ------------------------------------------------------------------
$message="";
if ($boolform==1)
{
//vérifie que l'upload s'est bien passé
if (is_uploaded_file($upfile))
{
//vérifie que le fichier est non vide
if ($upfile_size>0)
{
//vérifie si la taille du fichier ne dépasse pas la limite
if ($upfile_size>$maxsize)
{
//fichier trop grand
$message="Le fichier a une taille supérieure à la limite autorisée!";
}
else
{
//taille correcte, vérification du type de fichier
$type=right($upfile_name,3);
if ($type=="$type1" || $type=="$type2" || $type=="$type3" || $type=="$type4" || $type=="$type5" || $type=="$type6")
{
//on va chercher la date de la journée sous la forme annéemoisjourheureminuteseconde (ex : 200361015159)
$tmp=getdate();
$jour=$tmp['mday'];
$mois=$tmp['mon'];
$annee=$tmp['year'];
$h=$tmp['hours'];
$m=$tmp['minutes'];
$s=$tmp['seconds'];
$tout="$annee$mois$jour$h$m$s";
//on calcule le nombre de lettres avant le premier point
$res = strpos("$upfile_name",".");
//on extrait le nombre de lettre avant le point
$type2=left($upfile_name,$res);
//sauvegarde du fichier uploadé
$savefile=$type2.".".$tout.".".$type;
move_uploaded_file($upfile, "photos/".$savefile);
//création de la miniature
include ("resize.php");
//fin creation
}
else
{
$message="Ce type de fichier n'est pas autorisé!";
}
}
}
}
else
{
//erreur
}
}
?>
<center>
<?php
if ($message!="")
{
echo "$message";
}
else {
}
// FIN UPLOAD IMAGE ------------------------------------------------------------------
/* insertion de la nouvelle rubrique */
$query5 = "INSERT INTO breve VALUES ('','$auteur','$titre','$yourFieldNameHere','$savefile','$mois','$annee')";
$result5 = mysql_query($query5) or die('Erreur SQL !<br>'.$query5.'<br>'.mysql_error());
echo "<BR> <span class="conf">==> Votre brève à été ajouté !</span><BR>";
}
}
else{
$menu="0";
}----------------------------------
Hors ligne
je sais pas comment tu fait ton formulaire, mais si $upfile est bien ton fichier envoyé, tu ne t'y prends pas de la bonne maniere...
deja, c'est $_FILES['upfile'];
et il faut que tu utilise les différentes valeurs du tableau.
$_FILES['fichier']['name'] -> Le nom du fichier original sur la machine source
$_FILES['fichier']['type'] -> Le type MIME du fichier, si le navigateur a fourni cette information
$_FILES['fichier']['size'] -> La taille du fichier envoyé, en octets
$_FILES['fichier']['tmp_name'] -> Le nom temporaire du fichier qui sera chargé sur la machine serveur
envoyer un fichier sur un serveur
Hors ligne
oui upfile c bien le nom dan le formulaire, mais lenregistrement du fichier image sur le serveur marche tres bien, c juste que quand jassocie cette insertion de donnée à une insertion en BDD et bien je ne comprend pas mais ca menregistre une ligne correctement et une autre vide !
mais cela uniquement lorsque je ne met pas dimage, lorsque jen met une à enregsitrer sur le serveur, lenregistrement se fai correctemen...
bizar ?
Hors ligne
est ce que ca veu dire que je doi remplacer tou mes $upfile par $_FILES['upfile'] dans mon code ?
Hors ligne
en fait bizarement quand je regarde dans ma BDD, il ma donc enregistré deux ligne au lieu d'une, et la premiere (avec un ID inferieure ex : 98) est completement vide, et la deuxieme (avec un ID superieure ex : 99), contien bien toutes les infos necessaires !
du coup à chaque enregistrement, jen ai deux :
- 1 ligne avec un id inferieur et ne contenant rien
- et une deuxieme avec l'ID qui suit et contenant ttes les infos !
Hors ligne
si tu ne fait qu'une seule requete, il n'y a aucune raison pour qu'elle soit envoyée deux fois...
fait un echo de ta requete lorsqu'elle merde, ca donne quoi ?
Hors ligne
le probleme c quel merde pas... dc jai aucune erreure daffiché :
$result5 = mysql_query($query5) or die('Erreur SQL !<br>'.$query5.'<br>'.mysql_error());
jai mis ca pr quel me mette lerreure si il y en a une mais rien... tu connai un autre moyen ?
Hors ligne
aucune idée ? svp chui vraimen dan la merdasse la...
Hors ligne
ce qui serait intéréssant à voir, c'est ta requete envoyée au serveur.
donc, que tu fasse un echo de la requete avant de l'envoyer, et que tu la montre.
sinon, mets une vérification sur l'envoi d'une image, et si il n'y en a pas d'envoyée, tu stoppe le script
Hors ligne
merci, mais la chui un peu perdu, chui pas une bete en¨PhP, est ce que tu pourrait me donner qlq indication sur les fonctions a utiliser pr cela ?
"tu fasse un echo de la requete avant de l'envoyer"
>> simplement echo $query5 ?
Dans ce cas ca me donne ca :
INSERT INTO breve VALUES ('','Dupont Jean','EEEEEEEEEE','sfsdfsdf','','06','2005')
>> la c dans le cas ou il ya pa dimage dc c normal quil y ai un champs libre
En inserant ces donnée, et en les reaffichant par la suite voila ce que ca me donne :
06-2005 | EEEEEEEEEE | Auteur : Dupont Jean
-0 | | Auteur :
>> DEUX insertions pr un seul enregistrement !
"sinon, mets une vérification sur l'envoi d'une image, et si il n'y en a pas d'envoyée, tu stoppe le script"
>> le probleme c que maintenant ca le fait même quand jenvoi une image, jy comprend plus rien !
Hors ligne
Oui jte le fai pa dire ! c vraiment bizar !
voila la page en question ainsi que sa table SQL !
http://www.marmiteamalices.com/Bureau.zip
jte remercie par avance pr ton aide, parceque la je sais plus trop quoi faire...
ca doi pas etre grand chose, mais bon tu va me dire ca...
Jattend tes news, Alex.
Hors ligne
stp t plus la ?
Hors ligne
enleve le 'NOT NULL' au champ image
sinon, je ne vois aucune erreur, es-tu sur que tu ne pourrait pas executer ton script deux fois ?
(et désolé du retard, j'avai de la famille chez moi ce week end)
Hors ligne
c pa grave, je sais ce que c
jai enlevé le not null dans la BDD, mais ca na rien changé... et le script, tu la eu dans le zip sur mon serveur... si tu as regardé, tu as du voir que je lexecutai qune seule fois... a moins que jai bu, mais jai enlevé la requete dinsertion et il ninserait plsu rien, dc yen a qune...
Vraimen aucune autre idée ?
sinon c pa grav, c deja sympa davoir regardé...
Hors ligne