IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Si upload fichier alors la suite


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Enseignant
    Inscrit en
    Mars 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2008
    Messages : 20
    Par défaut [Upload] Si upload fichier alors la suite
    bonjour a tous,

    Etant nouveau sur le forum, excusé moi d'avance si je l'utilise mal (mauvaise rubrique, code mal placé, ...).

    explication :
    Suite a un formulaire : http://southrider.free.fr/pg/pg-supp...nce-formulaire

    On passe sur la rub=annonce-save
    qui permet d'enregistrer tout cela.
    tout fonctionne nikel chrome, sauf depuis que je viens de rajouter le test bete et méchant du coup : si le fichier avatar existe ou pas. Forcement en fonction j'enregistre l'image ou pas.
    En gros il y a un probleme avec la ligne :

    if(isset($_FILES['avatar']))

    J'ai fais des milliés de tests, et rien de plus ... j'y comprend plus rien ...

    Explication plus simple de mon fonctionnement :

    Je teste si y a $ajout
    si oui :
    J'enregistre en sql

    _si c'est bon :
    _Je teste si faut enregistrer un fichier
    ___Si oui :
    _____J'upload le fichier avec tout les tests qui vont bien ...
    ________si l'upload du fichier se passe mal j'efface les info enregistrées en SQL
    ___Si non :
    _____L'enregistrement de l'annonce est terminée.

    _si c'est pas bon :
    _j'affiche l'erreur et du coup je m'occupe pas du fichier photo et tout le bordel qui va avec ...

    Puis j'afffiche le lien pour revenir aux annonces.


    Ce qui est décrit dessu est le fonctionnement normal de ce que je voudrai faire.
    Mais il ya un probleme avec "Je teste si faut enregistrer un fichier" ...
    Pourtant il me semble que le code est correct ...

    Si quelqu'un a une idée, c'est la bien venu, j'ai passé tout hier sur cette erreur, j'ai plu de cheveux la ... je m'attaque au doigt ...

    Merci d'avance, bisous
    pascal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
    //enregistrement ou pas en fonction de : ajout
    				//**********************************************
    				if ($ajout)
    				  {
     
    					 // On verifie que les champs ne sont pas vides
    					 if (!empty($av) && !empty($texte)  &&  !empty($nom) && !empty($region) && ($lu == oui))
     
    						 {     
    							 // Definit la variable de date d'aujourd'hui
    								$date_auj = time();
     
    							 // Calcul de la date de fin de lannonce (+15 jours)
    							 	$date_fin = $date_auj + 1296000;
     
    							 // Connection a la base
    							 	include "inc-connect.php";
     
     
     
    							 	// Execute la requete d'insertion de l'annonce
    							 	//****************************************
    								if (mysql_query("
    								INSERT INTO tbl_annonce (av,texte,prix,nom,tel,mail,region,date_fin) 
    								VALUES ('$av','$texte','$prix','$nom','$tel','$mail','$region','$date_fin')
    								")=== FALSE)
    									{
     
    									// Fermeture de la connaction SQL
    									mysql_close();
     
    									//Affichage msg erreur
    									echo "Attention ! Erreur d'enregistrement des informations de l'annonce.<br>";
    									echo "Problème interne au niveau du site, merci de renouveller l'insertion de
    									votre annonce plus tard.<br>";
    									echo "Si le problème persiste, n'hésitez pas à nous contacter par mail.<br>";
     
    									}
     
    								else
    									{
     
    									//Affichage msg ok
    									echo "Enregistrement des informations de l'annonce effectué avec succés.<br>";
     
    									//Recupération de id correscondant à la l annonce
    									$sql = "select * from tbl_annonce where date_fin='$date_fin'";
    									$req = mysql_query($sql) or die ("Erreur SQL");
    									$data = mysql_fetch_array($req);
    									$id = $data['id'];
     
    									// Fermeture de la connaction SQL
    									mysql_close();
     
    									//a effacer par la suite
    									echo 'id : '.$id.'<br>';
    									echo $_FILES['avatar']['name'];
    									echo '<br>';
     
    									//Traitement de la photo
    									//****************************************								
    									//test si une photo doit etre enregistre
    									if(isset($_FILES['avatar']))
    									//if(isset($avatar))
    										{
     
    									$dossier = '../annonce/';
     
    									$fichier = basename($_FILES['avatar']['name']);
    									$taille_maxi = 1048576;
    									$taille = filesize($_FILES['avatar']['tmp_name']);
    									$extensions = array('.jpg', '.JPG');
    									$extension = strrchr($_FILES['avatar']['name'], '.'); 
     
    									//Début des vérifications de sécurité...
     
    									//Si l'extension n'est pas dans le tableau
    									if(!in_array($extension, $extensions)) 
    										{
    										 $erreur = 'Attention ! Vous devez uploader une photo de 
    										 type .jpg ou .JPG obligatoirement.<br>';
    										}
    									if($taille>$taille_maxi)
    										{
    										 $erreur = 'Attention ! Le fichier dépasse les 1Mo !';
    										}
     
    									//S'il n'y a pas d'erreur, on upload
    									if(!isset($erreur))
    										{
     
    										 //On formate le nom du fichier ici...
    										 $fichier = strtr($fichier, 
    											  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    											  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    										 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
    										 //upload
    										 if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
    										 	{
    											  echo 'Upload de la photo effectué avec succès.<br>';
    											  echo 'Enregistrement de l\'annonce effectué avec succés.<br>';
    											  echo 'L\'annonce est publiée durant 15 jours puis sera 
    											  effacée automatiquement.<br>';
    											  echo 'Si vous voulez modifier/supprimer des informations de votre 
    											  		annonce, contactez nous par mail.<br>';
    										 	}
    										 else
    										 	{
    											  echo 'Attention ! Echec de l\'upload de la photo !<br>';
    											  //effacement de la ligne id
    											  include "inc-connect.php";
    											  if (mysql_query("DELETE FROM tbl_annonce WHERE id='$id'")=== FALSE)
    												echo "Erreur de l'effacement des informations de l'annonce !<br>";
    												else
    												echo "Donc effacement des informations de l'annonce.<br>";
    											   mysql_close();
    										 	}
     
    										  }
     
     
    									  else
     
    									 	  {
    										  //affichage de l'erreur
    										  echo $erreur;
    										  //effacement de la ligne id
    										  include "inc-connect.php";
    										  if (mysql_query("DELETE FROM tbl_annonce WHERE id='$id'")=== FALSE)
    											 echo "Erreur de l'effacement des informations de l'annonce !<br>";
    							  			  else
    								  		  echo "Donc effacement des informations de l'annonce.<br>";
    										  mysql_close();
    										  }
     
    									} //if de photo existe
     
     
    									else //si photo existe pas
     
    									{
    									echo 'Enregistrement de l\'annonce effectué avec succés.<br>';
    									echo 'L\'annonce est publiée durant 15 jours puis sera 
    										  effacée automatiquement.<br>';
    									echo 'Si vous voulez modifier/supprimer des informations de votre 
    										  annonce, contactez nous par mail.<br>';
    									}
     
    									//****************************************
    									//fin de traitement de la photo
     
     
    									//Lien en bas de page vers les annonces
    									echo '<br><br><br>';
    									echo '<a href="pg-support.php?rub=annonce" class="texte">
    									< Retour aux annonces</a>';
     
     
    								} //le else de l'enregistrement SQL
    								//****************************************
    								// Fin de la requete d'insertion de l'annonce
     
     
     
    						  } //le if de vérification des champs
     
    					  else
     
    						 {
    							  // On affiche un message d'erreur
    							  echo "Attention ! Vous n'avez pas remplis tout les champs obligatoires<br>
    							  l'annonce ne s'est donc pas rajoutée !<br><br>";
     
    							  //Affichage du lien retour
    							  echo '<br><br><br>';
    							  echo '<a href="pg-support.php?rub=annonce" class=""texte">
    							  < Retour aux annonces</a>';
    						 }
     
    				 } //le if de ajout
    				 ?>

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    $_FILES['X'] existera toujours : que le client envoie un fichier ou non (la fonction isset renverra donc toujours vrai). Il faut donc tester différemment la chose : en l'absence de fichier toutes ses (sous-)valeurs sont nulles/vides/fausses et le champ d'erreur (error) prend la valeur de la constante UPLOAD_ERR_NO_FILE. On pourrait donc écrire cela schématiquement sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_FILES['avatar']['error'] == UPLOAD_ERR_NO_FILE) {
        echo "Aucun fichier envoyé par le client";
    } else {
        echo "Le client a envoyé un fichier";
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] upload de deux fichiers à la suite
    Par kaking dans le forum Langage
    Réponses: 10
    Dernier message: 12/06/2008, 13h28
  2. [Upload] problème upload de deux fichiers
    Par dedel53 dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 07h12
  3. [Upload] file Upload: mettre un fichier sur le serveur
    Par eseb777 dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2007, 10h01
  4. Réponses: 10
    Dernier message: 12/06/2006, 16h45
  5. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo