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

PHP & Base de données Discussion :

Upload qui ne fonctionne pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut Upload qui ne fonctionne pas
    Bonjour,

    Je dois créer un formulaire qui permettrait de modifier certaines informations dans la base de données. Le problème c'est que dans mon code, le changement du mail et du téléphone fonctionne trés bien, en revanche la modification de la photo ne fonctionne pas du tout, et je ne reçois aucun message d'erreur. Je ne comprends pas trop d'ou peut venir le message d'erreur.

    Voici mon code:

    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
     
    <?php
     
    if(!empty($_POST['valider_modif']) && !empty($_POST['joueur_modif']) && !empty($_POST['info_change']))
    	{
    		include('cnx.php');
     
    		$joueur_modif = $_POST['joueur_modif'];
    		$element_a_modif = $_POST['element_a_modif'];
    		$info_a_modif = mysql_real_escape_string(htmlentities(trim($_POST['info_change'])));
     
    			$modif_nom = $_POST['joueur_modif'];
    			$modification = explode("-", $modif_nom);
    			$nom_modif = $modification[0];
    			$prenom_modif = $modification[1];
    			$id_modif = $modification[2];
     
     
    					if($element_a_modif != "chemin_photo")
    					{
     
    						$req_modif_info = "UPDATE $table_1 SET ".$element_a_modif." = '".$info_a_modif."' WHERE id = ".$id_modif;
    						$query_modif_info = mysql_query($req_modif_info) or die ($element_a_modif.mysql_error());
     
    							if(!$query_modif_info)
    							{
    								echo "Echec de l'opération";
    							}
    							else
    							{
    								echo $info_a_modif." ".$element_a_modif." ".$nom_modif." ".$id_modif."Information modifiée avec succès";
    							}
    					}
    					else
    					{
    						$taille_maxi = 10000;  												/*Taille maxi de l'image*/
    						$dossier = 'joueurs/';												/*Dossier final du l'image*/
    						$fichier = basename($_FILES['info_change']['name']);				/*Récupération du nom de l'image*/
    						$taille = filesize($_FILES['info_change']['tmp_name']);				/*Récupération de la taille de l'image*/
    						$extensions = array('.png', '.PNG', '.gif', '.GIF', '.jpg', '.jpeg', '.JPG', '.JPEG');	/*Extensions possible pour l'image*/
    						$extension = strrchr($_FILES['info_change']['name'], '.');
     
    							if(!in_array($extension, $extensions) AND ($taille_maxi<$taille))
    							{
    								echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg. et d\'une taille inferieur à 10Ko';
    							}				
    							else
    							{
    								$fichier = strtr($fichier, 
    								'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    									'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    								$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
     
     
    									if(move_uploaded_file($_FILES['info_change']['tmp_name'], $dossier . $id_modif))
    									{
    										echo 'Upload effectué avec succès !';
    									}
    									else 
    									{		
    										echo "L'opération à échouée";
    									}
     
     
    								$req_modif_info = "UPDATE $table_1 SET chemin_photo = 'joueurs/".$id_modif."' WHERE id = ".$id_modif;
    								$query_modif_info = mysql_query($req_modif_info) or die ($element_a_modif.mysql_error());
     
    									if(!$query_modif_info)
    									{
    										echo "Echec de l'opération";
    									}
    									else
    									{
    										echo "Information modifiée avec succès";
    									}
    							}
    					}
     
     
     
    	}
     
    ?>
    J'ai cherché pas mal de temps mais sans trouvé mon souci.

    Je vous remercie d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    As-tu controlé que ta requete etait executée, c'est à dire ton code va t'il jusque la ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Comment faire cela, j'ai essayé de mettre de vérifier en insérant des echo pour vérifier si les variable était bien remplies, mais je ne vois rien, comme si le requête ne rentrait pas dans ma condition d'insertion de la photo.

    J'ai essayé dans l'autre sens, c'est à dire au lieu de mettre if($element_a_modif != "chemin_photo"), j'avais essayé if($element_a_modif == "chemin_photo")
    avec bien sur les requêtes dans l'autre sens, et le problème est le même.

    Je ne comprends pas trop pourquoi la requête ne rentre pas dans ma condition

  4. #4
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Sur ton form, tu as bien mis la propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"
    ?

    http://antoine-herault.developpez.co...ls/php/upload/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Oui je l'ai mis. Je m'étais servi du lien que tu as mis pour faire ce code. Mais pourquoi il ne fonctionne pas ça...

    As tu une idée pour au moins afficher un message d'erreur ou autre chose parce que la je cherche mais je ne sais pas du tout ou chercher



    Merci d'avance

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu mets des echos tu vas forcement voir ton point de blocage.
    Si tu es bloqué sur une condition, affiche les variables en jeu.

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "a : "; var_dump($a); echo "<br/>";
    if ($a == "toto") {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Bonjour,

    Tout d'abord merci du coup de main.

    Les echo insérés ne s'affiche pas, sauf ceux que j'ai placé avant de rentrer dans la condition d'insertion de la photo (le ELSE du if($element_a_modif != "chemin_photo"). J'ai un peu modifié le code pour tester, mais toujours rien.

    Mais ce qui m'étonne c'est que la modif. du mail ou du tél fonctionne bien, et dès que j'essai de modif. la photo y a rien qui se passe.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne comprends pas ta difficulté : si tu ne rentres jamais dans le ELSE c'est que tu valides toujours ta condition IF.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Oui je suis totalement d'accord avec toi. Mais le If ne devrait pas toujours être respecté car quand j'envoi une photo la variable $element_a_modif devrait être égal à "chemin_photo". Mais là je ne comprends pas pourquoi ce n'est pas le cas

    J'ai modifié un peu mon code hier pour voir, mais toujours rien

    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
     
    if(!empty($_POST['valider_modif']) && !empty($_POST['joueur_modif']) && !empty($_POST['info_change']))
    	{
    		include('cnx.php');
     
    		//Suppression de  la variable $joueur_modif inutilisé par la suite
    		$element_a_modif = $_POST['element_a_modif'];
    		$info_a_modif = $_POST['info_change'];
     
    		$modif_nom = $_POST['joueur_modif'];
    		$modification = explode("-", $modif_nom);
     
    		//Suppression de nom_modif et $prenom modif pour les meme raison qu'au dessus
    		$id_modif = $modification[2];
     
    		echo $element_a_modif." variable  \$element_a_modif\ / <br/>";
    		echo $_POST['valider_modif']." bouton / <br/>";
    		echo $_POST['joueur_modif']."nom prenom id du joueur /<br/>";
    		echo $_POST['info_change']."info modifiée /<br/>";
     
    		if($element_a_modif == "chemin_photo")
    		{
    			//vérification de ce qu'il y a dans $_FILES
    			var_dump($_FILES);
     
    			$taille_maxi = 10240; // si tu veux vraiment 10 Ko
    			//$dossier = 'joueurs/';
    			$dossier= "./"; //devrait normalement mettre le fichier dans le dossier de la page appelé, si ça marche, essayer de rediriger le fichier dans le mon dossier en relatif
    			$fichier = basename($_FILES['info_change']['name']);
    			$taille = filesize($_FILES['info_change']['tmp_name']);
    			$extensions = array('.png', '.PNG', '.gif', '.GIF', '.jpg', '.jpeg', '.JPG', '.JPEG');
    			$extension = strrchr($_FILES['info_change']['name'], '.');
     
    			if(!in_array($extension, $extensions) AND ($taille_maxi<$taille))
    			{
    				echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg. et d\'une taille inferieur à 10Ko';
    			}				
    			else
    			{
    				$fichier = strtr($fichier, 
    				'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    					'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
     
     
    				if(move_uploaded_file($_FILES['info_change']['tmp_name'], $dossier . $id_modif . $extension)) //Ajout de $extension
    				{
    					echo 'Upload effectué avec succès !';
    				}
    				else 
    				{		
    					echo "L'opération à échouée";
    				}
     
     
    				$req_modif_info = "UPDATE $table_1 SET chemin_photo = 'joueurs/".$id_modif.$extension."' WHERE id = ".$id_modif;  //Ajout de $extension
    				$query_modif_info = mysql_query($req_modif_info) or die ($element_a_modif.mysql_error());
     
    				if(!$query_modif_info)
    				{
    					echo "Echec de l'opération";
    				}
    				else
    				{
    					if(mysql_affected_rows()<1) //Test si on modifie bien une ligne
    					{
    						echo "Requète sans effet : " . $req_modif_info;
    					}
    					else
    					{
    						echo "Information modifiée avec succès";
    					}
    				}
    			}
    		}
    		else //Ajout du else pour eviter qu'on fasse 2 update si on upload une photo...
    		{
    			$req_modif_info = "UPDATE $table_1 SET ".$element_a_modif." = '".$info_a_modif."' WHERE id = ".$id_modif;
    			$query_modif_info = mysql_query($req_modif_info) or die ($element_a_modif.mysql_error());
     
    			if(!$query_modif_info)
    			{
    				echo "Echec de l'opération";
    			}
    			else
    			{
    				echo "Information modifiée avec succès";
    			}
    		}
    	}
     
    ?>
    Encore merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Ca y est la solution à été trouvé, en faite mail et tel fonctionne car je récupère les infos avec $_POST, alors que pour récupérer mon image je devrais la récupérer avec $_FILES. Donc au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['valider_modif']) && !empty($_POST['joueur_modif']) && !empty($_POST['info_change']))
    J'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['valider_modif']) && !empty($_POST['joueur_modif']) && ( !empty($_POST['info_change']) || !empty($_FILES['info_change']['tmp_name'])))
    Le problème n'est pas totalement résolu parce qu' j'ai toujours un message d'erreur car $_POST['info_change'] n'est pas défini si je télécharge une photo. Mais ça je pense pouvoir résoudre le problème.

    Merci à vous

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/10/2007, 16h05
  2. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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