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 :

Pourquoi lors de l'envoie de mon formulaire, je me retrouve avec une erreur: illegal offset?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Points : 13
    Points
    13
    Par défaut Pourquoi lors de l'envoie de mon formulaire, je me retrouve avec une erreur: illegal offset?
    Bonjour,

    Je doit créer un formulaire en PHP qui doit me permettre de remplir une base de type MySQL et un dossier pour les images.

    Selon mon navigateur (chrome) ce serait cette ligne de code qui serait fautive mais je sais que ce ce n'est pas ici l'erreur car en faite mon code s’exécute normalement. Mon image arrive dans mon dossier et mes infos arrivent dans ma base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_REQUEST['ajouter_enseigne']))
    {Ajout_enseigne($_POST['txt_nom'],$_POST['txt_descriptif'],$_POST['txt_montant'],$_POST['txt_reference'],$_POST['Lst_enseigne'],$_POST['Lst_client'],$_FILES['Image_Telecharger']);
    }
    voici la partie de mon formulaire qui envoie l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo "<tr>";
    echo "<td><label for='img'>Image : </label></td>";//donner l'image correspondante à l'enseigne
    echo "<td><input type='hidden' name='MAX_FILE_SIZE' value='5242880'>";
    echo "<input type='file' name='Image_Telecharger' /></td>";
    echo "</tr>";
    je tien à dire que l'envoie de l'image ne débouche pas sur une erreur lorsqu'il est appelé seul et le formulaire non plus lorsqu'il n'y a pas la partie pour l'image.

    voici la parti de mon code qui effectue la vérification de tous les champs du formulaire:
    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
     
    function Ajout_enseigne($pNomEnseigne,$pDesEnseigne,$pMontantEnseigne,$pRefEnseigne,$pLibTypeEnseigne,$pclient,$pImage)
    	{
    		if ($_POST['Lst_enseigne']=="")
    		{
    			echo "<span class='attention'>Vous n'avez pas désigné de catégorie pour l'enseigne, l'enseigne n'a pas pu être créée.</span>";
    			include('./Formulaires/Ajouter_enseigne.inc.php');
    		}else if($_POST['Lst_client']=="")
    				{
    					echo "<span class='attention'>Vous n'avez pas désigné de client pour cette enseigne, l'enseigne n'a pas pu être créée.</span>";
    					include('./Formulaires/Ajouter_enseigne.inc.php');
    				}else if($_POST['txt_nom']=="")
    					{
    						echo "<span class='attention'>Vous n'avez pas donné de nom à l'enseigne, nous n'avons donc pas pu la créée.</span>";
    						include('./Formulaires/Ajouter_enseigne.inc.php');
    					}else if($_POST['txt_descriptif']=="")
    						{
    								echo "<span class='attention'>Vous n'avez pas décris l'enseigne, nous n'avons donc pas pu la créée.</span>";
    								include('./Formulaires/Ajouter_enseigne.inc.php');
    						  }else if($_POST['txt_montant']=="")
    								{
    									echo "<span class='attention'>Vous n'avez pas donné le montant de l'enseigne, nous n'avons donc pas pu la créée.</span>";
    									include('./Formulaires/Ajouter_enseigne.inc.php');
    								}else if($_POST['txt_reference']=="")
    										{
    											echo "<span class='attention'>Vous n'avez pas donné la référence de l'enseigne, nous n'avons donc pas pu la créée.</span>";
    											include('./Formulaires/Ajouter_enseigne.inc.php');
    										}else if (!isset($_POST[$_FILES['Image_Telecharger']]))
    												{
    												echo "<span class='attention'>Veuillez bien ajouter une image.</span>";
    												include('./Formulaires/Ajouter_enseigne.inc.php');
    												}
    		// Test si l'image a bien été envoyée et s'il n'y a pas d'erreur
    		if (isset($_FILES['Image_Telecharger']) AND $_FILES['Image_Telecharger']['error'] == 0)
    		{ 
    				// Test si le image n'est pas trop gros
    				if ($_FILES['Image_Telecharger']['size'] <= 1000000000)
    				{
    						// Test si l'extension est autorisée
    						$infosfichier = pathinfo($_FILES['Image_Telecharger']['name']);
    						$extension_upload = $infosfichier['extension'];
    						$extensions_autorisees = array('JPG','jpg','JPEG','jpeg','GIF','gif','PNG','png');
    						if (in_array($extension_upload, $extensions_autorisees))
    						{
    							// On peut valider le image et le stocker définitivement
    							move_uploaded_file($_FILES['Image_Telecharger']['tmp_name'],'./Images/Enseignes_images/' . basename($_FILES['Image_Telecharger']['name']));
    							echo "L'envoi a bien été effectué !";
    						}
    				}
    				else if ($_FILES['image']['error']) 
    						{ 
    							switch ($_FILES['image']['error']){ 
    							case 1: // UPLOAD_ERR_INI_SIZE 
    							echo"Le image dépasse la limite
                                                             autorisée par le serveur (fichier
                                                             php.ini) !"; 
    							break; 
     
                                        	                  case 2: // UPLOAD_ERR_FORM_SIZE 
    															echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";															break;
    															case 3: // UPLOAD_ERR_PARTIAL 															echo "L'envoi du fichier a été interrompu pendant le transfert !"; 															break; 
    															case 4: // UPLOAD_ERR_NO_FILE 															echo "Le fichier que vous avez envoyé a une taille nulle !";															break;
    															}
    	}
    		}
    	}
    Pouvez-vous m'aider s'il vous plais je ne trouve vraiment pas où l'erreur peut être malgré toutes mes recherches.

    A bientôt, merci par avance. =)

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Fais un var_dump() des différents array pour vérifier que tu récupères bien les index que tu utilises.
    Et au passage... C'est quoi l'intérêt d'une fonction avec paramètres si par la suite tu n'utilises que les tableaux super-globaux ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Alors transgohan, je viens de faire mon var_dump($_POST)
    voici le resultat:
    array
      'Lst_enseigne' => string '13' (length=2)
      'Lst_client' => string '1' (length=1)
      'txt_nom' => string 'toto' (length=4)
      'txt_descriptif' => string 'fhds' (length=4)
      'txt_montant' => string '152' (length=3)
      'txt_reference' => string 'kf' (length=2)
      'MAX_FILE_SIZE' => string '5242880' (length=7)
      'ajouter_enseigne' => string 'Ajouter l' (length=9)
    
    On peut voir que l'image passe pas et lors de ma vérification non plus car un message d'erreur me dit de choisir une image, mais le plus étonnant c'est que je la retrouve dans mon dossier d'arrivée.

    Puis je ne comprend pas ce que tu entends par des tableaux super-globaux?
    Car je n'ai pas de tableau. Mise à par l'image qui devient un tableau le reste ce ne sont que des variables.

    Merci d'avance. =)

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    $_POST, $_GET, $_COOKIE, $_SESSION sont des tableaux super-globaux.
    Cela veut dire qu'ils existent avant l'exécution de ton script, ils sont générés par PHP et sont accessibles n'importe où dans tes scripts (pas de souci de portée de variable).

    Ensuite il est normal de ne pas retrouver le fichier dans $_POST. Il se trouve dans le tableau $_FILES.
    Et donc une petite absurdité dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }else if (!isset($_POST[$_FILES['Image_Telecharger']]))
    Pas le temps de regarder outre-mesure, je ne fais que passer.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    MERCI !!!!!! ça marche, rho quel erreur bête quand même. J'ai tout essayer sauf ça ^^

    Merci pour ton aide transgohan.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/01/2014, 10h52
  2. [MySQL] problème lors de l'envoi de mon formulaire
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/03/2009, 18h19
  3. [MySQL] Envoi de mon formulaire vers ma base MySQL
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/09/2007, 23h55
  4. problème lors de l'envoi d'un formulaire
    Par fk04 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 15/04/2007, 21h00
  5. [MySQL] Exécuter 2 actions lors de l'envoi d'un formulaire
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2006, 21h16

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