Notice: Undefined index

Eléphanteau du PHP | 10 Messages

11 déc. 2013, 20:11

Bonjour, depuis quelque chose, cette erreur intervient avec le code suivant, et je ne comprends pas pourquoi il ne trouve pas "avatar" (sachant que le formulaire est avant) :
Le truc c'est que le code fonctionne sur mon site en ligne mais pas avec WampServer en local...

<?php
$dossier = '../fichiersmembre/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 20000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Debut des verifications de securite...
if (isset($_POST['avatar'])){
}else{
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, txt ou doc...';
}
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,
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiii?ooooouuuuyy',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$query2 = mysql_query("INSERT INTO fichiers VALUES ('','$fichier')") or die(mysql_error());
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ca a fonctionne...
{
echo 'Upload effectue avec succes !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
?>

Merci de votre aide ! ^^

Mammouth du PHP | 504 Messages

11 déc. 2013, 20:27

Slt,

Notice undefined index veut dire que tu as une variable indefini dans ton script.

Le message d'erreur t'indique la ligne dans ton code ou est placé cette variable et ainsi savoir laquelle c'est. Tu dois initialisé cette variable dans ton code.

Eléphanteau du PHP | 10 Messages

11 déc. 2013, 20:29

Voici le code en entier :
<?php
include ('../pages/entetelog.php');
include ('../secur/vars.php');
mysql_connect('xxxxx','xxxxx','xxxxx') or die();
mysql_select_db('xxxx')or die();
?>
<center>
<table border="1px">
<th>
<form method="POST" action="" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
	<input type="file" name="avatar"/>
	<input type="submit" value="Uploader !"/>
</form>

</th>
</table>

<?php
$dossier = '../fichiersmembre/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 20000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.'); 
//Debut des verifications de securite...
if (isset($_POST['avatar'])){
}else{
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, txt ou doc...';
}
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, 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiii?ooooouuuuyy', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
	 $query2 = mysql_query("INSERT INTO fichiers VALUES ('','$fichier')") or die(mysql_error());
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ca a fonctionne...
     {
          echo 'Upload effectue avec succes !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
}
?>
</center>
Modifié en dernier par moogli le 11 déc. 2013, 23:08, modifié 1 fois.
Raison : bbcode php !

Mammouth du PHP | 504 Messages

11 déc. 2013, 21:14

tu peux nous donner le message d'erreur en entier, svp.

Eléphanteau du PHP | 10 Messages

11 déc. 2013, 21:17

( ! ) Notice: Undefined index: avatar in C:\wamp\www\account\uploadfichier.php on line 22
Call Stack
# Time Memory Function Location
1 0.0003 140160 {main}( ) ..\bdd.php:0
2 0.0006 148552 include( 'C:\wamp\www\account\uploadfichier.php' ) ..\bdd.php:7

( ! ) Notice: Undefined index: avatar in C:\wamp\www\account\uploadfichier.php on line 24
Call Stack
# Time Memory Function Location
1 0.0003 140160 {main}( ) ..\bdd.php:0
2 0.0006 148552 include( 'C:\wamp\www\account\uploadfichier.php' ) ..\bdd.php:7

( ! ) Notice: Undefined index: avatar in C:\wamp\www\account\uploadfichier.php on line 26
Call Stack
# Time Memory Function Location
1 0.0003 140160 {main}( ) ..\bdd.php:0
2 0.0006 148552 include( 'C:\wamp\www\account\uploadfichier.php' ) ..\bdd.php:7

Merci :D

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

11 déc. 2013, 23:11

salut,


ceci est normal, lorsque tu affiche la page, le formulaire n'est pas posté donc les index n'existe pas.

il faut que tu conditionne la validation du formulaire afin d'être certain que celui est posté.
généralement on utilise l’existence d'un (ou plusieurs) champs dans le tableau $_POST (ou $_GET si tu utilise ma méthode $_GET).


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 10 Messages

12 déc. 2013, 18:02

Mais même si je rajoute un :
If (isset($_POST['avatar'])){
}
ça ne fonctionne toujours pas :/

Mammouth du PHP | 504 Messages

12 déc. 2013, 18:10

hello,
( ! ) Notice: Undefined index: avatar in C:\wamp\www\account\uploadfichier.php on line 22
Dans ta fichier uploadfichier.php, que contient ta ligne 22 ?

Eléphanteau du PHP | 10 Messages

12 déc. 2013, 18:47

"$fichier = basename($_FILES['avatar']['name']);" //l22

Mammouth du PHP | 504 Messages

12 déc. 2013, 19:03

Cette variable
$_FILES['avatar']['name']
est indéfini. il faut l'initialisé.

Pense aussi à la remarque de moogli.