souci d' upload

Eléphant du PHP | 299 Messages

12 sept. 2009, 19:02

salut a tous, je prefere vous dire que je suis perdu sur un formulaire d' envoi d' annonce avec 1 seule photo, car j' ai utilisé les bases d' un script du sdz sur mon site pour changer l' avatar du membre, ca fonctionne bien.


Sur le meme site j' aimerai mettre un module annonces, et j' en suis au debut, au formulaire d' envoie.

Le code est pas beau car j' ai essayé d' épurer pour voir d' ou pouvait venir le souci, y voyez vous une erreur qui empecherait l' upload????
                <form method="post" action="annonces_t.php" ENCTYPE="multipart/form-data">
Type d' annonce : 
offre : 
                                  <INPUT type=radio name="type" value="offre">
                                  demande : 
                                  <INPUT type=radio name="type" value="demande">

                                <input name="prix" type="text" class="Style1" id="prix" size="20"/>

                                  <input name="titre" type="text" class="Style1" size="70"/>

                                <div align="center">Texte de votre annonce  : </div>

                                  <textarea name="texte" cols="80" rows="20" class="Style1"></textarea>

							  <input type="hidden" name="MAX_FILE_SIZE" value="500000">
                                  <span class="Style1">Joignez une photo si vous le souhaitez :                                  </span>
                                  <input type="file" name="photo1" id="photo1" />


                                  <input name="submit" type="submit" value="Envoyer mon annonce" />

                      </form>


				  									    <?php


$cat = mysql_real_escape_string(htmlspecialchars($_POST['cat']));
$type = mysql_real_escape_string(htmlspecialchars($_POST['type']));
$prix = mysql_real_escape_string(htmlspecialchars($_POST['prix']));
$titre = mysql_real_escape_string(htmlspecialchars($_POST['titre']));
$texte = mysql_real_escape_string(htmlspecialchars($_POST['texte']));
$auteur = mysql_real_escape_string(htmlspecialchars($_SESSION['pseudo']));
$date = time();
$photo1 = mysql_real_escape_string(htmlspecialchars($_POST['photo1']));





mysql_query("INSERT INTO annonces VALUES('', '$cat', '$type', '$prix', '$auteur', '$date', '$titre', '$texte', '$photo1', '$photo2', '$photo3', '$photo4')");






echo 'L\'équipe se charge de la mettre en ligne dans moins de vingt-quatre heures';


$dossier = './photos_annonces/';
$fichier = basename($_FILES['photo1']['name']);
$taille_maxi = 500000;
$taille = filesize($_FILES['photo1']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo1']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 500 Ko';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['photo1']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {



$photo1 = mysql_real_escape_string(htmlspecialchars($_POST['photo1']));

if($photo1== $photo1)








echo 'ok';
echo '';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>

Eléphant du PHP | 299 Messages

13 sept. 2009, 09:29

petit up :s

Eléphant du PHP | 369 Messages

13 sept. 2009, 10:16

Salut,

Up déconseillé, tu vas te faire taper sur les doigts lol (joke))

Y t'il des erreurs? Et si oui : Quelles sont les erreurs?

Voici le dernier des topics parlant d'upload (il me semble) ca te permetra, peut-être,
de résoudre ton problème.

php-debutant/probleme-avec-upload-via-p ... lit=upload

@+ ;)

PS: Déja je te conseille, quand tu recois le formulaire, de faire un:
<?
   if (isset($_POST[MAX_FILE_SIZE]))
   {
      print_r($_POST);
      print_r($_FILES);
      die();
   }
   .
   .
   .
?>

ViPHP
ViPHP | 2291 Messages

14 sept. 2009, 17:29

Salut,
A la grosse louche .
la variable $_POST[cat'] n'existe pas.
Et pour ta requete du devrais lui demander d'afficher les erreurs éventuelle.
$_POSt[photo1']'existe pas c'est $_FILES[photo1']
:)
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 299 Messages

17 sept. 2009, 16:26

alors en effet, c' est bien FILES et pas POST.

Je l' avais deja testé mais rien, pas un message d' erreur. Voila, je me retrouve avec ceci:
Warning: move_uploaded_file(/photos_annonces/moi3.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/villedeb/www/annonces/annonces_t.php on line 81

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpqXRK8w' to '/photos_annonces/moi3.jpg' in /home/villedeb/www/annonces/annonces_t.php on line 81
Echec de l'upload !Array ( [cat] => Utilitaires [type] => offre [prix] => 4542 [titre] => hj,hjkh [texte] => jkhjk hk [MAX_FILE_SIZE] => 500000 [submit] => Envoyer mon annonce ) Array ( [photo1] => Array ( [name] => moi3.jpg [type] => image/jpeg [tmp_name] => /tmp/phpqXRK8w [error] => 0 [size] => 2338 ) )

ligne 81:

if(move_uploaded_file($_FILES['photo1']['tmp_name'], $dossier . $fichier))

et voici ce que representent $fichiers et $dossiers:

$dossier = '/photos_annonces/';
$fichier = basename($_FILES['photo1']['name']);

Eléphant du PHP | 299 Messages

17 sept. 2009, 16:32

arf j' ai trouvé, fallai tmettre le chemin relatif :)

Des fois j'vosu jure , en tout merci, ca m' a bien aidé :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 sept. 2009, 17:37

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...