Se connecter / S'enregistrer
Votre question

Envoyer une image à bdd par formulaire

Tags :
  • Easyphp
  • Programmation
Dernière réponse : dans Programmation
28 Mars 2009 18:04:08

Encore moi et mes (probablemen) bêtes questions de novice :ange: 

Donc j'ai une bbd (sur easyPHP Myadmin) et un formulaire correspondant...jusque là tout fonctionne bien, je reçois dans ma bdd tout se que j'ai completé dans mon formulaire :D 

Maintenant au lieu d'envoyer du simple texte, je voudrais pouvoir envoyer une image...et c'est là que ça coince :( 


En fait si je trouve cela utile c'est pour par exemple:

-un listing de dvd et je voudrais avoir l'image de la jacket correspondante

-un listing de membres et je voudrais voir leur tête correspondant au profile (un peu comme les avatar)


Ce qui veut donc dire que je ne possède pas les images, puisque se sont les membres qui vont alimenter les contenu

Hummmm après quelques recherches je pense donc je dois créer dans mon formulaire un bouton 'upload' qui va donc ensuite garder les infos de l'image dans un dossier.
(dossier que j'aurais créé en dehors de ma bdd mais que j'aurais mis sur le serveur)
et qui va créer un url pour chaque image, c'est donc cet url que je dois mettre dans ma bdd.......si j'ai bien compris Mdr!

Maintenant comment que je fais tout ça... :whistle: 
Ce fameux bouton 'upload' dois certainement avoir un 'input truc-much' bien particulier?
Et puis je fait un 'href' vers le dossier qui va garder les images...mais après comment je lui fait garder les url dans ma bdd ? et quel type de champ je dois donner...je peux le laisser en text je suppose puisque se sera un url qui sera garder.

Oui je sais je m'exprime peut être pas très clair :kaola:  , excusez moi à l'avance mais cela viendra avec le temps j'en suis sure :sol: 

Autres pages sur : envoyer image bdd formulaire

28 Mars 2009 18:39:11

voilà ce que j'ai trouver en cherchant un peu partout...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DT DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>formulaire</title>
<meta http-equiv="content-type" content="text/html";
charset=iso-8859-1" />
</head>

<body>
<form action="testimage.php" method="post" enctype="multipart/form-data">
<p>
Formulaire d'envoi de fichier :<br />
<input type="file" name="monfichier" /><br />
<input type="submit" value="Envoyer le fichier" />
</p>
</form>

<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
// Testons si le fichier n'est pas trop gros
if ($_FILES['monfichier']['size'] <= 1000000)
{
// Testons si l'extension est autorisée
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
// On peut valider le fichier et le stocker définitivement
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
}
}
?>

</body>
</html>


Mais cela ne fonctionne pas :cry: 
J'ai créer un dossier dans le dossier tmp de mon esayphp nommé 'uploads' comme indiqué sur le tuto que j'ai trouvé.
Le formulaire est existant mais ici n'est pas relié à ma bdd :pt1cable:  et on ne m'indique ni où ni comment le faire :heink: 
Je suppose que c'est comme d'habitude:

mysql_connect("localhost", "root", "mysql");
mysql_select_db("test");

mysql_query ("INSERT INTO test_image (monfichier)VALUES('$monfichier')");

mysql_close();

Mais là je sèche...déjà que le tuto ne fonctionne pas et qu'en plus je ne vois pas bien où et comment résoudre le problème... :cry: 

Donc si une bonne âme peut m'aider.....c'est pas que je cherche pas (sinon ce serais trop facile) mais là heuuu zut, flut, crotte je galère trop
28 Mars 2009 19:00:26

tu es hébergé chez qui déjà? sinon j'ai un script qui fonctionne...

Première page

  1. Code HTML
  2.  
  3. <form action="page2.php" method="post" enctype="multipart/form-data" name="nouveau1">
  4. <input style="color: black;" type="file" name="monfichier" />
  5. <input name="Envoyer" type="submit" value="Envoyer">
  6. </form>


Deuxième page (page2.php)

  1. Code PHP
  2.  
  3. <?
  4. $repertoireDestination = "logiciels/";
  5. $nomDestination = $_FILES["monfichier"]["name"];
  6. $nomfichier = "logiciels/$nomDestination";
  7.  
  8. // Pour raison de sécurité nous ajouterons aux fichiers
  9. // portant une extension .php .php3, l'extension .txt
  10.  
  11. if (eregi(".php", $nomDestination))
  12. {
  13. $nomDestination .= ".txt";
  14. }
  15.  
  16. if (is_uploaded_file($_FILES["monfichier"]["tmp_name"]))
  17. {
  18. if (rename($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination))
  19. {
  20. echo "L'image a bien étée uploadée.";
  21. include("fichier_de_connexion.php");
  22. mysql_query("INSERT INTO table VALUES ('', '$nomfichier')");
  23. echo "Le logiciel a bien été ajouté";
  24. mysql_close();
  25. }
  26. else
  27. {
  28. echo "Le déplacement du fichier temporaire a échoué";
  29. }
  30. }
  31. else
  32. {
  33. echo "Le fichier n'a pas été uploadé.";
  34. }
  35.  
  36. ?>


ca marche chez free

pour limiter la taille du fichier (largeur et hauteur et poids en Mo) tu fais un input hidden avec en value le max de la taille voulue, et tu fais un if de l'autre coté pour vérifier ça... (tu as des valeurs comme $_FILES["monfichier"]["name"]; je sais plus lesquelles pour avoir la taille des fichiers... voila. c déjà pas mal
Contenus similaires
29 Mars 2009 00:14:59

je ne suis pas chez free (je suis sur hebergeur belge...une fois! lol) ........mais pas grave je vais tester ça et je tiens au courant :-)

Un grand merci en tout cas pour ta réponse rapide et précise ;) 
29 Mars 2009 04:46:13

de rien, l'entraide c'est plus que nécessaire
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS