naga Posté 7 Avril 2006 Posté 7 Avril 2006 (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é 7 Avril 2006 par naga
captain_torche Posté 7 Avril 2006 Posté 7 Avril 2006 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.
naga Posté 7 Avril 2006 Auteur Posté 7 Avril 2006 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
captain_torche Posté 7 Avril 2006 Posté 7 Avril 2006 Si le répertoire images est à la racine de ton site, oui, ça devrait convenir (sous réserve que le reste de ton code fonctionne, bien sûr).
naga Posté 7 Avril 2006 Auteur Posté 7 Avril 2006 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
captain_torche Posté 7 Avril 2006 Posté 7 Avril 2006 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant