Aller au contenu

probleme d'upload d'image


Sujets conseillés

Posté (modifié)

Bonjour à tous !

J'ai un petit soussi pour uploader une image et insérer son url dans une base de données. Le but étant d'associer une image à un article.

Au niveau de l'upload des données nom, possesseur, prix, console, nombre de joueurs max et commentaire aucun probleme, mais pour l'image cela ne marche pas.

J'ai un dossier 'images' et un dossier 'tmp', et mon champ 'destination' est en varchar 250.

Il n'y a pas d'erreur généré, mais pas d'image. Je début vraiment en php et j'imagine que le code est bourré d'erreurs, si quelqu'un veut bien m'éclairer.

Voici le html

<form method="post" enctype="multipart/form-data" action="upload.php">

Nom du jeu :
<input type="text" name="nom" /><br />

Possesseur :
<input type="text" name="possesseur" /><br />

Prix :
<input tupe="text" name="prix" /><br />

Console :
<input tupe="text" name="console" /><br />

Nombre de joueurs max :
<input tupe="text" name="nbre_joueurs_max" /><br />

Commentaires :
<input tupe="text" name="commentaires" /><br />

Image :
<input type="file" name="fichier" size="30"><br />

<input type="submit" name="submit" value="Envoyer">


</form>

Voici maintenant le upload.php :


if( isset($_POST['upload']) )
{
$content_dir = '**************/images/';

$tmp_file = $_FILES['fichier']['tmp_name'];

if( !is_uploaded_file($tmp_file) )
{
exit("erreur, le fichier est introuvable");
}


$type_file = $_FILES['fichier']['type'];

if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le type de fichier n'est pas autorisé");
}


$name_file = $_FILES['fichier']['name'];

$rep='******************/images/';
$destination=$rep+$name_file;

if( !move_uploaded_file($tmp_file, $content_dir.$name_file) )
{
exit("erreur entre le temp et le depot sur le fichier $content_dir");
}

echo "cool ca marche tout bien";


}



$nom = $_POST["nom"];
$possesseur= $_POST["possesseur"];
$prix = $_POST["prix"];
$console = $_POST["console"];
$nbre_joueurs_max = $_POST["nbre_joueurs_max"];
$commentaires = $_POST["commentaires"];
$destination = $_POST["destination"];


mysql_query("INSERT INTO jeux_videos VALUES('','$nom','$possesseur','$console','$prix','$nbre_joueurs_max','$commentaires','$destination')");

echo "<h1>Recap :</h1> <br />
Nom: $nom<br />
Posseusseur : $possesseur<br />
Prix : $prix<br />
Console : $console<br />
Nombre de joueur max: $nbre_joueurs_max<br />
Commentaires: $commentaires <br />
Image : <img src=\"$destination\" />
<h1>upload effectué !</h1>
";

?>

Modifié par naga
Posté

En regardant vite fait, je me suis arrêté ici :

$rep='******************/images/';
$destination=$rep+$name_file;

D'une part, si jamais tu as mis les astérisques pour éviter de mettre ton nom de domaine, tu devrais juste mettre le chemin relatif vers ton répertoire.

Et sinon, en PHP, la concaténation s'effectue avec le point (le +, c'est en javascript).

Donc, ta dernière ligne devrait plutôt ressembler à :

$destination=$rep.$name_file;

Et sinon, quand tu as du code assez long à poster, préfère la balise CODEBOX à la balise CODE.

Posté
D'une part, si jamais tu as mis les astérisques pour éviter de mettre ton nom de domaine, tu devrais juste mettre le chemin relatif vers ton répertoire.

Ok, donc simplement un /images ?

Je vais essayé le changement $destination=$rep.$name_file;

Edit effectué pour codebox.

Merci

Posté

Non, le repertoire image sur trouve dans www/test2/images. Le chemin est donc test2/images ?

Je testerai de toute manière, mais chemin absolue et relatif me pose quelques soussis dans mes débuts en php. Je vais essayer de trouver de la doc.

merci

Posté

Dans ce cas, le chemin serait /test2/images/

Un chemin absolu, est un chemin décrivant tout le chemin à parcourir pour arriver à la ressource (d'où que tu sois, ça sera accessible).

Par exemple: www.tonsite.com/repertoire/page.php

Un chemin relatif, est un chemin décrivant l'accès à une ressource, depuis un endroit défini (et seulement de là). Si on est dans le répertoire 'repertoire' précédemment mentionné, pour retourner au répertoire 'test2/images/', placé à la racine du site, il va falloir d'abord sortir du répertoire en cours (avec la syntaxe '../'), puis aller dans les différents répertoires :

../test2/images/

J'espère avoir été suffisamment clair.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...