Probleme de recupération de variable sur un type="file"

Résolu
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007 - 10 févr. 2005 à 18:10
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007 - 11 févr. 2005 à 16:16
kikoo, ci joint mon code html/php qui est censé me permettre de stocker dans un base de données, le probleme reside au niveau de la recupération de ma variable $userfile, il me dit que j'oublié de saisir le nom de l'image alors que c'est censé récupérer le nom du fichier pour le mettre dans la base de données

voici le code :

<?php
include('header.php');


if(isset($_POST['submit']))
{
$message= NULL;


if(isset($_GET['picture_name']))
$pn=$_GET['picture_name'];


if(empty($_POST['picture_story']))
{
$ps=FALSE;
$message=' You have forgotten the picture_story

';
}
else
$ps=addslashes($_POST['picture_story']);



if($pn && $ps)
{
require_once('mysql_connect.php');


$rq="INSERT INTO pictures (picture_name, date, picture_story)
VALUES('$pn',NOW(),'$ps')";


$result=mysql_query($rq);
if($result)
{
echo " Picture inserted

";
include('footer.php');
exit();
}
else
{
echo " Picture not inserted because of a system error


" . mysql_error() . "

";
}
mysql_close();
}



if(isset($message))
echo" $message ";


}



?>







<form enctype ="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<fieldset>
<legend> Insert a new picture : </legend>


File to be sent :&nbsp

Picture_story :
" />


</fieldset>





<?php
include('footer.php');
?>

voilà, j'éspère que vous allez pouvoir me sortir de ce piège, merci d'avance :)

10 réponses

LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
11 févr. 2005 à 11:24
Re

j'ai ecris trop vite l'exemple, viens de me lever : ), la c ok :
EXEMPLE :::
// prend le nom de l'image sans l'extention
$val = $_FILES["userfile"]["name"];
$findme = ".";
pos = strpos($val, $findme);
$nom_image = substr($val, 0, $pos);
echo $nom_image;

normalement donc ca devrait etre pour toi
if (isset($_FILES["userfile"]
))
$userfile =$_FILES["userfile"]["name"]
;

@++
http://www.phpsources.org
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
10 févr. 2005 à 18:26
Euh,



<?php

if(isset($_GET['picture_name'])) {


$pn=$_GET['picture_name'];


}

?>



>



<?php

if(isset($_POST['picture_name'])) {


$pn=$_POST['picture_name'];


} else {

$pn = "";

}

?>




Tu es
dans un POST et tu utilise POST et GET
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2005 à 18:40
Salut



$pn = "";


quitte à utiliser les simples quotes autant les utiliser partout :



$pn ='';






a +



Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
10 févr. 2005 à 22:07
Slt,

extract($_POST);
$userfile = $_FILES["userfile"]["tmp_name"];

@++
http://www.phpsources.org
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007
10 févr. 2005 à 23:55
désolé de vous ennuyer avec cela, j'ai réécris le code (ou plutôt réagencer), mais j'ai toujours ce problème d'undefined index qui se crée au niveau du placé dans le code. Une solution serait de désactiver les Notice de easyphp, mais autant avoir un code qui fonctionne, s'il vous plait, aidez moi à résoudre ce problème... il me détect le $userfile situé à gauche du comme un userfile (sans le $) et ne rentre donc pas dans mon script d'ajout à la base de données.
Voici le message exact d'erreur :
Notice: Undefined variable: userfile in c:\...\upload.php on line 37

<?php


$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL){
?>



<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
File to be sent :
Picture_story : "/>

</form>


<?php
}


else {


$message = NULL;


if (isset($_POST['userfile']))
$userfile = $_POST['userfile'];


if(empty($_POST['picture_story']))
{
$ps=FALSE;
$message=' You have forgotten the picture_story

';
}
else
$ps=addslashes($_POST['picture_story']);





$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/blog/images/';

if($userfile && $ps)
{
require_once('mysql_connect.php');


$rq="INSERT INTO pictures (picture_name, date, picture_story)
VALUES('$userfile',NOW(),'$ps')";


$result=mysql_query($rq);
if($result)
{echo " Picture inserted

";
include('footer.php');
exit();
}
else
{echo " Picture not inserted because of a system error


" . mysql_error() . "

";
}
mysql_close();
}



if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
echo "
Le fichier ".$_FILES['userfile']['name']." est valide et a été téléchargé avec succès.
";


}
if(isset($message))
echo" $message ";



}



?>

merci d'avance et désolé d'avoir recolé le code, j'ai pas vu de bouton éditer pour mon précédent post...
0
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007
11 févr. 2005 à 00:33
quand je met :

if (isset($_FILES['userfile']))
$userfile = $_FILES['userfile'];
à la place de :

if (isset($_POST['userfile']))
$userfile = $_POST['userfile'];

l'upload se passe nikel, ainsi que l'ajout dans la base de données, à la seule erreur près que mon image s'appelle Array au lieu de image.jpg, serait il possible de récupérer le vrai nom de l'image d'une façon similaire ?
0
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
11 févr. 2005 à 01:28
if (isset($_FILES["userfile"]
))
$userfile =$_FILES["userfile"]["tmp_name"]
;

Je te l'ai marquer + haut
@++
http://www.phpsources.org
Nouvelle version
0
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007
11 févr. 2005 à 02:41
Merci, j'ai changé cela, mais ça m'enregistre l'image avec Array à la place du nom de l'image et ça n'upload même plus quand je fais ces changements.
En fait, est ce que c'est possible de récupérer le nom du fichier dont il est question quand on se sert du type="file" ? un ami me dit que c'est impossible à cause des types traités...
0
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
11 févr. 2005 à 11:17
Oupsi errueur de ma part: )

// perso ca marche tres bien chez moi avec

// et
extract($_POST);
$userfile = $_FILES["userfile"]["tmp_name"];

echo $_FILES["userfile"]["name"];

EXEMPLE :::
// prend le nom de l'image sans l'extention
$val = $_FILES["userfile"]["name"];
$findme = ".";
pos = strpos($val, $findme);
$nom_image = substr($test, 0, $pos);

echo $nom_image;

Voila j'espere que ca t'aidera : )
@++
http://www.phpsources.org
0
GuinaweK Messages postés 22 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 janvier 2007
11 févr. 2005 à 16:16
Merci beaucoup, ça résout mon probleme de réupération de nom dans la base de données, maintenant, mon problème réside au niveau de l'upload qui ne se fait plus :)
mais merci beaucoup en tous cas pour le problème du nom, ça m'enlève une grande épine du pied ;)

pour ce qui est de la base de données, je devrais arriver à me débrouiller (j'éspère :) )
0
Rejoignez-nous