Page 1 sur 1

Stocker l'url d'une image dans une base de données HELP :/

Posté : 18 mars 2016, 14:20
par raphaelf2
Bonjour, je fais appele a vous car j'ai un petit problème, je veux uploader l'url de mon image direct dans la base de données, tout marche bien y'a aucun soucis le problème c'est que l'image ne s'upload pas sur le serveur alors que la table mysql marche bien.

page ajout.php :

Code : Tout sélectionner

<form method="post" action="upload.php" enctype="multipart/form-data"> <label for="mon_fichier">Photo à envoyer : </label><br /> <input type="hidden" name="MAX_FILE_SIZE" value="1048576" /> <input type="file" name="photo1" id="photo1" /><br /> <p> <label for="titre">Titre : <input type="text" name="titre" value="" size="30" maxlength="100"/> </label> </p> <p> <label for="description"> description : <input type="text" name="description" value="" size="33" maxlength="50"/> </label> </p> <p> <label for="age"> age : <input type="text" name="age" value="" size="33" maxlength="50"/> </label> </p> <p> <label for="origine"> origine: <input type="text" name="origine" value="" size="33" maxlength="50"/> </label> </p> <p> <label for="num"> Num : <input type="text" name="num" value="" size="33" maxlength="50"/> </label> </p> <p> <label for="ville"><strong> ville</strong> </label> <br/><br/> <textarea name="ville" id="ville" rows="10" cols="100"> </textarea> </p> <p> <label for="cp"> <strong> cp : </strong> </label> <br/> <br/> <textarea name="cp" id="cp" rows="10" cols="20"> </textarea> </p> <p> <label for="statut"> <strong> statut : </strong> </label> <br/> <br/> <textarea name="statut" id="statut" rows="10" cols="20"> </textarea> </p> <p> <input type="submit" name="submit" value="Envoyer"/> <br/> </form>
et voici la page upload.php

Code : Tout sélectionner

<?php if(isset($_POST['titre'])&& isset($_POST['description']) && isset($_POST['age']) && isset($_POST['origine']) && isset ($_POST['num']) && isset($_POST['ville']) && isset($_POST['cp']) && isset($_POST['statut']) && isset ($_FILES['photo1'])) { if(isset($_FILES['photo1']) && $_FILES['photo1']['error']==0) { // Inscription de la photo uploadé dans le dossier bouquin move_uploaded_file($_FILES['photo1']['tmp_name'], 'http://xxxxxxxxxxxx.fr/xxxxx/md/'.basename($_FILES['photo1']['name'])); echo 'L\'envoi a bien été effectué'; } try{ // Connexion à la BDD $bdd=new PDO('mysql:host=xxx;dbname=xxxx', 'xxxx','xxxxxxxxxxxx'); } catch(Exception $e){ die ('Erreur:'.$e->getMessage()); } // Insertion des données envoyées par l'internaute grâce à une requête préparée $stockage='http://xxxxxxxxxxxx.fr/xxxxx/md/'.$_FILES['photo1']['name'].''; $insertion=$bdd->prepare('INSERT INTO annonces(titre, description, age, origine, num, ville, cp, statut, photo1) VALUES (:titre, :description, :age, :origine, :num, :ville, :cp, :statut, :photo1)'); $insertion->execute(array( 'titre' => $_POST['titre'], 'description' => $_POST['description'], 'age' => $_POST['age'], 'origine' => $_POST['origine'], 'num' => $_POST['num'], 'ville' => $_POST['ville'], 'cp' => $_POST['cp'], 'statut' => $_POST['statut'], 'photo1' => $stockage )); if($insertion==true) { echo '<p> Les données ont bien été enregistrées</p>'; } else { echo 'Erreur dans l\'enregistrement des données </p>'; } $insertion->closeCursor(); // déconnexion } ?>
Merci de votre aide :D

Re: Stocker l'url d'une image dans une base de données HELP :/

Posté : 18 mars 2016, 15:00
par Ryle
Bonjour,

Je pense que ton problème est en amont de la base de données mais à l'envoi du fichier. Celui-ci est-il accessible à l'adresse http://xxxxxxxxxxxx.fr/xxxxx/md/zzzzzz dans ton navigateur ? A mon avis ce n'est pas le cas et il faudrait vérifier le résultat du move_uploaded_file() pour pouvoir dire que l'opération a réussi ou non :)
En l'occurrence, ce dernier attend un chemin sur le serveur (relatif au fichier php ou absolu par rapport à la structure de fichier), pas une adresse url sur laquelle il ne peut pas écrire :)

Re: Stocker l'url d'une image dans une base de données HELP :/

Posté : 18 mars 2016, 15:31
par raphaelf2
Ah oui merci a toi mon ami c'est partait :D Dernier petite chose car il reste un petit soucis c'est que l'image quand elle s'upload elle garde le nom quel a du coup des qu'ont upload une photo avec le meme nom ça affiche la premère image et c'est plutot galère ^^

Re: Stocker l'url d'une image dans une base de données HELP :/

Posté : 18 mars 2016, 15:33
par raphaelf2
Genre si je pouvais rajouter l'id ou le titre de l'annonce après le nom du fichier ça serait parfait :p

Re: Stocker l'url d'une image dans une base de données HELP :/

Posté : 18 mars 2016, 18:12
par Ryle
En fait c'est toi qui donne le nom du fichier quand tu fais le move_upload_file() : tu le déplaces et le nomme en même temps.
Si tu utilises juste "$_FILES['photo1']['name']", le fichier conserve son nom d'origine. Tu peux simplement compléter celui-ci en ajoutant par exemple la date / heure d'upload dans le nom du fichier, par exemple :
move_uploaded_file($_FILES['photo1']['tmp_name'],
    '../md/' . date(Ymd-His) . basename($_FILES['photo1']['name']));
Si tu veux ajouter l'id qui lui est attribué en base, tu peux le faire également, mais comme tu ne connais pas celui-ci tant que l'INSERT n'a pas eu lieu, cela implique de re-modifier le nom du fichier (physiquement sur le serveur et dans l'enregistrement en base) une fois ton insertion effectuée :)