erreur surement simple?

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 12:42

Bonjour, j'ai voulu faire un système d'upload, mais je me retrouve face à une erreur, or je ne la vois pas ^^. Quelqu'un peut il me dire pourquoi? Car j'ai du mal codé un truc, parce que pour moi, avatar est défini, mais apparement non ^^

erreur :
Notice: Undefined index: avatar in C:\wamp\www\test\upload_test.php on line 3

le fichier : 'upload_test.php'
<?php
$rep = 'video_tuto/';
$fichier = basename($_FILES['avatar']['name']);
$taille_max = 200000;
$taille_origin = filesize($_FILES['avatar']['tmp_name']);
$ext = array('.png','.jpg','.jpeg','.JPG');
$ext_origin = strchr($_FILES['avatar']['name'], '.');

if($_POST){
	if(!in_array($ext_origin,$ext)){
		$erreur = 'Vous devez uploader un fichier de type png,jpg et jpeg';
	}
	if($taille_origin>$taille_max){
		$erreur = 'le fichier est trop volumineux';
	}
	if(!isset($erreur)){
		if(move_uploaded_file($_FILES['avatar']['tmp_name'],$rep .$fichier)){
			echo 'upload ok';
			
		}else{
			echo 'upload pas ok';
		}
	}
		if(isset($erreur)){
			echo $erreur;
		}
}


?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<form method="post" action="" enctype="multipart/form-data"/>
<input type="hidden" name="MAX_FILE_SIZE" value="200000"/>
Avatar : <input type="file" name="avatar"/>
<input type="submit" name="envier" value="envoyer"/>
</body>
</html>
Merci beaucoup

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2012, 13:13

Tu tentes de récupérer $_FILES dès l'ouverture de la page avant même que le formulaire soit soumis. ;)
Il faut déplacer ce traitement sous la condition "le formulaire a été soumis".

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 15:11

Jte remercie beaucoup xTG :)

Par contre j'aurais une question : A la base, ce sont des videos que je vais uploader. Mais comment changer le format? Par exemple si c'est du mov ou mpeg, que cela soit converti en flv, puis renvoyer sur le site, un peu comme youtube, dailymotion?

Mammouth du PHP | 2278 Messages

26 janv. 2012, 15:37

FFMPEG
version en ligne, je pense, mais pour des conversions simples ça devrait suffire
http://ffmpeg.zeranoe.com/builds/
Il existe un interface Windows win ffmpeg, que je n'aime pas trop mais qui simplifie la vie...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 15:50

Je te remercie, parce que j'avais deja vu avec FFmpeg mais il fallait linux, ou quelque chose comme ca.

Une derniere chose : Comment d'une image uploader dans un dossier, je peux récuperer le lien?

Par exemple : Un membre poste un avatar. L'image est stocker dans un dossier "avatar", mais comment dans la base de donnée faire en sorte d'avoir le lien, afin de mettre l'avatar du membre sur sa page?

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 17:28

L'image s'envoie dans le répertoire que j'ai demandé, mais ne figure pas dans ma base de donnée :( aurais je fais une erreur de code, ou oublier quelque chose?
<?php


if($_POST){
	
	$rep = 'video_tuto/';
$fichier = basename($_FILES['avatar']['name']);
$taille_max = 2000000;
$taille_origin = filesize($_FILES['avatar']['tmp_name']);
$ext = array('.png','.jpg','.jpeg','.JPG','.JPEG');
$ext_origin = strchr($_FILES['avatar']['name'], '.');

	if(!in_array($ext_origin,$ext)){
		$erreur = 'Vous devez uploader un fichier de type png,jpg et jpeg';
	}
	if($taille_origin>$taille_max){
		$erreur = 'le fichier est trop volumineux';
	}
	if(!isset($erreur)){
		if(move_uploaded_file($_FILES['avatar']['tmp_name'],$rep . $fichier)){
			echo 'upload ok';
		mysql_connect('localhost', 'root', '');
mysql_select_db('esma');
mysql_query('insert into users(avatar) values ("'.$rep.$fichier.'","'.time().'")');
		
		}
		
		else{
			echo 'upload pas ok';
		}
	}
		if(isset($erreur)){
			echo $erreur;
		}
}


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<form method="post" action="upload_test.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
Avatar : <input type="file" name="avatar"/>
<input type="submit" value="envoyer"/>
</body>
</html>

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2012, 18:27

Sous MySQL c'est pas des doubles quotes mais des simples quotes pour les chaînes de caractères.
Il doit donc te générer une erreur t'indiquant cela. Sauf que t'affiches pas les erreurs. :P

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 18:54

Le probleme justement c'est qu'il me dit "upload ok" j'ai bien la photo dans le repertoire, mais le lien ne s'affiche pas dans la base de donnée.

mais wamp me sort pas d'erreur il est la le gros probleme, sinon j'aurais regardé, c'est comme si la ligne query n'existé pas

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2012, 20:23

De base les erreurs ne sont pas affichées comme je te l'ai dit.
Il faut rajouter la gestion avec par exemple :
mysql_query('insert into users(avatar) values ("'.$rep.$fichier.'","'.time().'")') or die(mysql_error());
Et là tu vas la voir l'erreur de syntaxe.

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 20:57

Autant pour moi, ca ne m'étais pas venu a l'esprit. Voici l'erreur : Column count doesn't match value count at row 1.

D'apres la trad, j'ai un probleme de Nombre de colonnes qui ne correspondrait pas à la valeur de la ligne 1. Mais la traduction programmeur donne? Parce qu'il est vrai que ma bdd possede 7champs, mais je n'en veux qu'un celui de l'avatar pour le moment. Comment modifier cela? (si c'est ca)

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2012, 21:39

Euh... C'est pas plutôt une mise à jour que tu veux faire dans ce cas ?
Car c'est une table renseignant la liste des utilisateurs non ?
Recréer une ligne pour chaque avatar n'a aucun sens.

Eléphanteau du PHP | 43 Messages

26 janv. 2012, 23:55

Le but final est que lutilisateur puisse uploader un avatar tout simplement.

ViPHP
xTG
ViPHP | 7331 Messages

27 janv. 2012, 09:30

Donc c'est bien le champ avatar DE CET utilisateur qui faut modifier.
Et non pas rajouter un n-uplet avec uniquement un champ avatar...

C'est une requête UPDATE qu'il faut utiliser, et il te faudra la clé primaire identifiant l'utilisateur dans la clause WHERE pour ne mettre à jour que l'utilisateur en question.

Eléphanteau du PHP | 43 Messages

27 janv. 2012, 12:01

Je viens de mettre tout dans le "design" du site, sur la page d'inscription, comme ca, j'ai pas de mise a jour à faire puisque ca part avec l'inscription.
Mais maintenant j'ai deux erreurs :( la premiere est un : ( ! ) Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\test\inscription.php on line 195 et le second toujours le Column count doesn't match value count at row 1. la ligne 195 est au passage de :
			//le format d'image
			$form = true;
			if(!in_array($ext_origin,$ext)){
			$message = 'Les formats acceptés sont : jpg, png, gif.';}
		}
	}
	else
		{
			//Sinon, on dit que le mot de passe nest pas assez long
			$form = true;
			if($taille_origin>$taille_max){
			$message = 'fichier trop volumineux.';}
A la base mon code marchait impécablement avant que je mette le systeme d'upload. le T_ELSE ne serait pas parce que j'ai mal placé mon code ?
	<?php
include('config.php');
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

           <title>DBA PRODUCTION FILMS : LA REALISATION AUDIOVISUELLE</title>


                                                                <!--Metas-->

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="fr" />

<meta name="description" content="Réalisation audiovisuelle dans la france entière" />
<meta name="keywords" content="Cinéma, Audiovisuel, animation 3d, Son, DBA, Prod, Esma, Studio M, Supinfograph, métiers du cinéma, école de cinéma, ecole de cinema, école d audiovisuel, école supérieur de réalisation audiovisuelle, formation, formation son, formation audiovisuelle, formation cinema, after, effects, adobe, avid, xpress pro, composer, premiere, première, Autodesk, 3ds Max,réalisation, film d'entreprise, film pour entreprise, film, entreprise, vidéo, video professionnelle, video numerique, video, videos, films video, reportage video, tournage vidéo, montagevideo , video pro, reportage, société production audiovisuelle, vidéo coaching, réalisation films entreprise, communication interne, effets spéciaux, film salon, video d'entreprise, presentation video d'entreprise, film process, doublage son, film institutionnel, reportage evenementiel, film nantes, film paris, video sur internet, DVD, CD-Rom, duplication, avfactory, paris, boulogne, billancourt, boulogne billancourt, capitale, montpellier, saint mathieu de tréviers, nimes, marseille, lyon, caen, nantes, corse, ajaccio, bastia, france, entière, entiere, france entière, europe, tuto, tutorial, tutoriel, didacticiel, best, better, meilleur, sud, de, la, france, sud de la france, languedoc roussillon, captation spetacle" />
<meta name="robots" content="index, follow" />
<meta name="indentifier-URL" content="www.dba-prod.com" />
<meta name="copyright" content="Dba production film 2011" />

<link rel="stylesheet" media="all" type="text/css" href="css/espacemembre.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />


</head>


<body>
<div class="content">
  <?php
//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
	<?php if(isset($_SESSION['username'])){echo ' Bonjour '.htmlspecialchars($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>
  <?php
//Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
if(isset($_SESSION['username']))
{
//On compte le nombre de nouveaux messages que lutilisateur a
$nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"'));
//Le nombre de nouveaux messages est stoque dans la variable $nb_new_pm
$nb_new_pm = $nb_new_pm['nb_new_pm'];
//On affiche les liens
?>
      
  <a href="list_pm.php"> | Vous avez <?php echo $nb_new_pm; ?> messages</a> | <a href="edit_infos.php">Mon compte | </a>
  <a href="connexion.php">Se d&eacute;connecter</a>
  <?php
}
else
{
//Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
?>
  <a href="inscription.php">Inscription</a>
  <a href="connexion.php">Se connecter</a>
  <?php
}
?>
</div>
<?php include('include/header.inc.php'); ?>

		<!-- corps -->
	<div id="corps">
		<div id="titre"><font color="#000000">Inscrip</font><font color="#ba2c3a">tion</font>
        </div>
        
        <div id="descriptif_inscription"> Vous avez aimé nos tutoriaux? Vous désirez participer aux forums, à une news? Pour cela rien de plus simple. Remplissez les informations demandées, cela ne vous prendra que deux minutes.
        </div>
	
    <div id="inscription">
<?php



//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')

	$rep = 'video_tuto/';
$fichier = basename($_FILES['avatar']['name']);
$taille_max = 2000000;
$taille_origin = filesize($_FILES['avatar']['tmp_name']);
$ext = array('.png','.jpg','.jpeg','.JPG','.JPEG');
$ext_origin = strchr($_FILES['avatar']['name'], '.');
{
	//On enleve lechappement si get_magic_quotes_gpc est active
	if(get_magic_quotes_gpc())
	{
				$username = mysql_real_escape_string($_POST['username']);
				$password = mysql_real_escape_string($_POST['password']);
				$email = mysql_real_escape_string($_POST['email']);
				$avatar = mysql_real_escape_string($_POST['avatar']);
				$adresse_web = mysql_real_escape_string($_POST['adresse_web']);
				$adresse_msn = mysql_real_escape_string($_POST['adresse_msn']);
				$adresse_aim = mysql_real_escape_string($_POST['adresse_aim']);
				$prenom = mysql_real_escape_string($_POST['prenom']);
				$nom = mysql_real_escape_string($_POST['nom']);
				$ville = mysql_real_escape_string($_POST['ville']);
				$signature = mysql_real_escape_string($_POST['signature']);
				$sexe_inscription = mysql_real_escape_string($_POST['sexe_inscription']);
				
	}
	//On verifie si le mot de passe et celui de la verification sont identiques
	if($_POST['password']==$_POST['passverif'])
	{
		//On verifie si le mot de passe a 6 caracteres ou plus
		if(strlen($_POST['password'])>=6)
		{
			//On verifie si lemail est valide
			if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
			
			
			{
				//On echape les variables pour pouvoir les mettre dans une requette SQL
								$username = mysql_real_escape_string($_POST['username']);
				$password = mysql_real_escape_string($_POST['password']);
				$email = mysql_real_escape_string($_POST['email']);
				$avatar = mysql_real_escape_string($_POST['avatar']);
				$adresse_web = mysql_real_escape_string($_POST['adresse_web']);
				$adresse_msn = mysql_real_escape_string($_POST['adresse_msn']);
				$adresse_aim = mysql_real_escape_string($_POST['adresse_aim']);
				$prenom = mysql_real_escape_string($_POST['prenom']);
				$nom = mysql_real_escape_string($_POST['nom']);
				$ville = mysql_real_escape_string($_POST['ville']);
				$signature = mysql_real_escape_string($_POST['signature']);
				$sexe_inscription = mysql_real_escape_string($_POST['sexe_inscription']);
				$taille = 40;
			$lettres = "abcdefghijklmnopqrstuvwxyz0123456789AZERTYUIOPMLKJHGFDSQWXCVBN";
			$date= date("Y-m-d");
			$heure= date("H:i:s");
			srand(time());
			for ($i=0;$i<$taille;$i++)
				{
				@$idm.=substr($lettres,(rand()%(strlen($lettres))),1);
				}
					$date = date("Y-m-d");
		$heure = date("H:i:s");
				//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
				$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
				if($dn==0)
				{
					//On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
					$dn2 = mysql_num_rows(mysql_query('select id from users'));
					$id = $dn2+1;
					//On enregistre les informations dans la base de donnee
					if(mysql_query('insert into users(id, adresse_web, adresse_msn, adresse_aim, username, password, email, prenom, nom, ville, signature, avatar, sexe_inscription, insdate, insheure, signup_date) values ('.$id.', "'.$adresse_web.'", "'.$adresse_msn.'", "'.$adresse_aim.'", "'.$username.'", "'.$password.'", "'.$email.'", "'.$prenom.'", "'.$nom.'", "'.$ville.'", "'.$signature.'", "'.$avatar.'", "'.$sexe_inscription.'", "'.$date.'", "'.$heure.'",  "'.time().'")'))
					{
						//Si ca a fonctionne, on naffiche pas le formulaire
						$form = false;
						if(move_uploaded_file($_FILES['avatar']['tmp_name'],$rep . $fichier))
?>
<div class="message">Vous avez bien &eacute;t&eacute; inscrit. Vous pouvez dor&eacute;navant vous connecter.<br />
<a href="connexion.php">Se connecter</a></div>
<?php
					}
					else
					{
						//Sinon on dit quil y a eu une erreur
						$form = true;
						$message = 'Une erreur est survenue lors de l\'inscription.';
					}
				}
				else
				{
					//Sinon, on dit que le pseudo voulu est deja pris
					$form = true;
					$message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
				}
			}
			else
			{
				//Sinon, on dit que lemail nest pas valide
				$form = true;
				$message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
			}
		}
		else
		{
			//Sinon, on dit que le mot de passe nest pas assez long
			$form = true;
			$message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
		}
	}
	else
		{
			//le format d'image
			$form = true;
			if(!in_array($ext_origin,$ext)){
			$message = 'Les formats acceptés sont : jpg, png, gif.';}
		}
	}
	else
		{
			//Sinon, on dit que le mot de passe nest pas assez long
			$form = true;
			if($taille_origin>$taille_max){
			$message = 'fichier trop volumineux.';}
		}
	}
	else
	{
		//Sinon, on dit que les mots de passes ne sont pas identiques
		$form = true;
		$message = 'Les mots de passe que vous avez entr&eacute; ne sont pas identiques.';
	}
}
else
{
	$form = true;
}
if($form)
{
	//On affiche un message sil y a lieu
	if(isset($message))
	{
		echo '<div class="message">'.$message.'</div>';
	}
	//On affiche le formulaire
	
	
?>

		<div class="titre_pour_inscription">
			<form action="inscription.php" method="post" enctype="multipart/form-data" />
        Veuillez remplir ce formulaire pour vous inscrire:<br />
        <div class="center">
        <p class="double">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br /></p>
            <p class="double">
            <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="password" name="password" /><br /></p>
            <p class="double">
            <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="password" name="passverif" /><br /></p>
            <p class="double">
            <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br /></p>
            
            <p class="double"><label for="adresse_web">Site web(sans http://)</label><input type='text' name='adresse_web'  id='adresse_web'></p>
 					<p class="double"><label for="adresse_msn">MSN</label><input type='text' name='adresse_msn'  id='adresse_msn'></p>
                    <p class="double"><label for="adresse_aim">AIM</label><input type='text' name='adresse_aim'  id='adresse_aim'></p>
 <p class="double"><label for="prenom">Prénom</label><input type='text' name='prenom'  id='prenom'></p>
                    <p class="double"><label for="nom">Nom</label><input type='text' name='nom'  id='nom'></p>
 					<p class="double"><label for="ville">Ville *</label><input type='text' name='ville'  id='ville'></p>
                  <p class="double"><label for="signature">Signature *</label><input type='text' name='signature'  id='signature'></p>
		
					<center>Selectionnez le type d'avatar que vous désirez :</center>
                    
                    
    <label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
Avatar : <input type="file" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
	
    	<p class="double"><label for="sexe">Votre sexe</label>Homme : <input type='radio' name='sexe_inscription'  value="homme" checked="checked">&nbsp;Femme : <input name='sexe_inscription' type='radio' value='femme'></p>
        
            <input type="submit" value="Envoyer" />
		</div>
    </form>
</div>
</div>
</div>
<?php
}
?>
</body>
</html>

Mammouth du PHP | 2278 Messages

27 janv. 2012, 13:26

il y a des chances qu'il y ait une accolade en trop avant le else
if ()
{
}
else
{
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD