Probleme de recupération de variable sur un type="file" [Résolu]

Signaler
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007
-
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007
-
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

Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

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
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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)
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Slt,

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

@++
http://www.phpsources.org
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007

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...
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007

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 ?
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

if (isset($_FILES["userfile"]
))
$userfile =$_FILES["userfile"]["tmp_name"]
;

Je te l'ai marquer + haut
@++
http://www.phpsources.org
Nouvelle version
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007

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...
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

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
Messages postés
22
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 janvier 2007

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 :) )