RESOLU Probleme (action="#") à ramplacer par (action="transfert.php")

RESOLU Probleme (action="#") à ramplacer par (action="transfert.php") - PHP - Programmation

Marsh Posté le 05-06-2008 à 12:27:47    

Bonjour,
Voici mon problème
 
Systeme d'upload d'image sur Base de données
 
Dans mon index.php
 

Code :
  1. <?php
  2. include ("transfert.php" );
  3. if ( isset($_FILES['fic']) )
  4. {
  5. transfert();
  6. }
  7. ?>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  9. <html>
  10. <head>
  11. <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
  12. <meta name="description" content="Hebergement gratuit">
  13. <meta name="keywords" content="Hebergement gratuit">
  14. <meta name="verify-v1" content="NSP7HNCvLwTzujN55GFnwEP1Kgrvc/pHr1Qs0piu5ng=" />
  15. <title>Stock d'images</title>
  16. <link href="style.css" rel="stylesheet" media="screen">
  17. </head>
  18. <strong><font color="#00FFFF">Images</font> (jpg, png, gif) - 2Mo max</strong><br>
  19. <form enctype="multipart/form-data" action="#" method="post">
  20. <input type="hidden" name="MAX_FILE_SIZE" value="250000" />
  21. <input type="file" name="fic" size=50 />
  22. <input type="submit" value="Envoyer" />
  23. </form>


 
je souhaite changer cette ligne
 

Code :
  1. <form enctype="multipart/form-data" action="#" method="post">


 
Par celle-ci
 

Code :
  1. <form enctype="multipart/form-data" action="transfert.php" method="post">


 
Mais si je la change l'upload de mon images ne se fait pas dans ma Base De Données, je n'arrive pas à trouver pourquoi...
 
et voici mon transfert.php
 

Code :
  1. <?php
  2. function transfert ()
  3. {
  4. $ret = false;
  5. $img_blob = '';
  6. $img_taille = 0;
  7. $img_type = '';
  8. $img_nom = '';
  9. $taille_max = 250000;
  10. $ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
  11. if ( !$ret )
  12. {
  13. echo "Problème de transfert";
  14. return false;
  15. }
  16. else
  17. {
  18. $img_taille = $_FILES['fic']['size'];
  19. if ( $img_taille > $taille_max )
  20. {
  21. echo "Trop gros !";
  22. return false;
  23. }
  24. $img_type = $_FILES['fic']['type'];
  25. $img_nom = $_FILES['fic']['name'];
  26. include ("connexion.php" );
  27. $img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
  28. $req = "INSERT INTO images (".
  29. "img_nom, img_taille, img_type, img_blob ".
  30. " ) VALUES (".
  31. "'".$img_nom."', ".
  32. "'".$img_taille."', ".
  33. "'".$img_type."', ".
  34. "'".addslashes ($img_blob)."') ";
  35. $ret = mysql_query ($req) or die (mysql_error ());
  36. return true;
  37. }
  38. }
  39. ?>
  40. <?
  41. include("basic.php" );
  42. ?>


 
Le but et qu'une fois l'images uploadé sur la base de donnée grace à (transfert.php) le fichier nommé (basic.php) affiche les liens de l'upload  
 
exemple
 
connexion = envoi d'une requête = upload réussi = affichage des liens = http://www.monsite.com/viewer.php?id=2.gif + http://www.monsite.com/images/titredelimage.gif
 
 
voilà merci à tout ceux qui lirons ce message et qui pourront m'aider


Message édité par woiduss le 08-01-2010 à 21:16:37
Reply

Marsh Posté le 05-06-2008 à 12:27:47   

Reply

Marsh Posté le 05-06-2008 à 13:07:25    

je croi que c'est une mauvaise idée de stocker une image dans la base de donnée... Le mieux serai de déplacer le fichier uploadé dans le répertoire qui te convient, et de stocker dans la base uniquement le chemin vers l'image. (ceci dans le but de limiter la charge de la bd avec des données trop lourdes)
 
tu devrai utiliser les tabulation pour rendre ton code plus clair aussi.
 
de plus ta requête est construite n importe comment:

Code :
  1. $req = "INSERT INTO images ("."img_nom, img_taille, img_type, img_blob "." ) VALUES ("."'".$img_nom."', "."'".$img_taille."', "."'".$img_type."', "."'".addslashes ($img_blob)."') ";


 
a la place je mettrai quelque chose du genre:

Code :
  1. $req = 'INSERT INTO images (img_nom, img_taille, img_type, img_blob)';
  2. $req .= "VALUES ('$img_nom','$img_taille','$img_type','addslashes ($img_blob)')";


 
en effet .= ajoute la nouvelle chaine au bout de la précédente; et les "." que tu as mis partout sont inutiles.

Reply

Marsh Posté le 05-06-2008 à 13:33:04    

Il faut appeler la fonction transfert()
Là tu l'appelles dans index.php mais pas dans transfert.php

Reply

Marsh Posté le 05-06-2008 à 13:47:03    

merci pour ta réponse wrksx
Mais comment créer un lien dans la base de donnée ?
car je souhaiterais une page de visionnement comme ceci ====> /viewer.php?id=646.gif
là j'ai changer mon code pour que les images soit uploadé dans un dossier de mon ftp
 

Code :
  1. <?php
  2. global $BASEURL;
  3. $domain="$BASEURL";
  4. //$domain = "";
  5. $path = "images/"; 
  6. $path_after_domain = "/images/";
  7. $max_size = 250000;
  8. ?>
  9. <?php
  10. if (!isset($HTTP_POST_FILES['userfile'])) exit;
  11. if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
  12. if ($HTTP_POST_FILES['userfile']['size']>$max_size) {
  13.       echo "<font color=\"#333333\" face=\"Geneva, Arial, Helvetica, sans-serif\">File is too big !</font><br>\n"; exit; }
  14. if (($HTTP_POST_FILES['userfile']['type']=="image/gif" ) || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg" ) || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg" ) | ($HTTP_POST_FILES['userfile']['type']=="image/png" )) {
  15.       if (file_exists($path . $HTTP_POST_FILES['userfile']['name'])) {
  16.               echo "<font color=\"#333333\" face=\"Geneva, Arial, Helvetica, sans-serif\">Il existe déjà un fichier portant ce nom, s’il vous plaît renommer votre fichier et essayez à nouveau</font><br>\n"; exit; }
  17.       $res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .$HTTP_POST_FILES['userfile']['name']);
  18.       if (!$res) { echo "<font color=\"#333333\" face=\"Geneva, Arial, Helvetica, sans-serif\">Erreur inconnue, essayez de nouveau s’il vous plaît</font><br>\n"; exit; } else {
  19. }
  20. echo "<font color=\"#333333\" face=\"Geneva, Arial, Helvetica, sans-serif\"><hr>";
  21. echo "Namn: ".$HTTP_POST_FILES['userfile']['name']."<br>\n";
  22. echo "Storlek: ".$HTTP_POST_FILES['userfile']['size']." bytes<br>\n";
  23. echo "Filtyp: ".$HTTP_POST_FILES['userfile']['type']."<br>\n";
  24. echo "</font>";
  25. echo "<br><br><img src=\"http://".$domain."/".$path_after_domain.$HTTP_POST_FILES['userfile']['name']."\">";
  26. } else { echo "<font color=\"#333333\" face=\"Geneva, Arial, Helvetica, sans-serif\">Vous ne pouvais upload des fichier seulement de type .gif / .jpg / .rar /  !!!</font><br>\n"; exit; }
  27. }
  28. ?>


 
merci pour ton aide

Message cité 1 fois
Message édité par woiduss le 05-06-2008 à 13:50:37
Reply

Marsh Posté le 05-06-2008 à 15:17:41    

woiduss a écrit :

merci pour ta réponse wrksx
Mais comment créer un lien dans la base de donnée ?
car je souhaiterais une page de visionnement comme ceci ====> /viewer.php?id=646.gif
là j'ai changer mon code pour que les images soit uploadé dans un dossier de mon ftp
 
merci pour ton aide


 
Tu stockes le nom du fichier : $HTTP_POST_FILES['userfile']['name']
 
après pour l'afficher tu fais tout simplement <img src="images/<?php echo $nom ?>" />
ou $nom est le nom de l'image que tu veux afficher, recuperé dans la base de données

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed