Page 1 sur 1

Upload de fichiers problématique

Posté : 16 févr. 2008, 15:29
par Tengmalm
Bonjour à tous,

Déjà, désolé si je ne poste pas ce message à la bonne place, c'est la première fois que je met les pieds sur ce forum...

J'ai un gros souci avec mon code d'upload de fichiers. Tout à l'air de fonctionner normalement, seulement rien ne s'enregistre dans la base de donnée. Inutile de dire que c'est assez frustrant!!!

Je n'arrive pas à voir où ça coince. Le login (username et mot de passe) sont bons. Un de vous pourra-t'il me dire où est le problème?

Merci d'avance!!!

Teng'

PS: Je met le code et la structure de la BDD...
PS2: La page s'appelle rediger_news.php…

Image

<?php
				//Initialisation de la variables $infos
				$infos = '';
					
				//Initialisation des variables du formulaire (mise à '' si elles sont vides)
				empty($_POST['contenu']) ? $contenu = '' : $contenu = htmlentities(addslashes($_POST['contenu']));
				empty($_POST['titre_news']) ? $titre_news = '' : $titre_news = htmlentities(addslashes($_POST['titre_news']));
				empty($_POST['titre']) ? $titre = '' : $titre = htmlentities(addslashes($_POST['titre']));
				
				//Vérification du titre de la news, du contenu et du titre du fichier
				if ($titre_news == '')
					{	$infos .= "- Vous devez définir le titre de la news!<br>";
					}
				
				if ($contenu == '')
					{	$infos .= "- Vous devez entrer le contenu de la news!<br>";
					}
					
				if ($titre == '')	
					{	$infos .= "- Vous devez donner un titre au fichier chargé!<br/>";
					}
					
				//Pour savoir si le fichier a été uploadé, on vérifie que le fichier est bien dans le tableau des fichiers
				if (!empty($_FILES['fichier']['size']))
					{	//On récupère la taille, le nom et le nom du fichier temporaire
						$f1_size = $_FILES['fichier']['size'];
 						$f1_name = $_FILES['fichier']['name'];
 						$f1_tmpname = $_FILES['fichier']['tmp_name'];
 						
						//Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule
						$ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1));
 						
						//Création du tableau des extensions acceptées
						$valides = array("jpg","pdf","doc","xls");
 			
						//On vérifie la taille et le type de fichier
						if ($f1_size > 3000000) 
							{	$infos .= "- Le fichier est trop volumineux!<br>";
							}
 
 						if (!in_array($ext,$valides)) 
							{	$infos .= "- Ce type de fichier n'est pas accepté!<br>";
							}
						 
						//Si tout est bon (aucune erreur dans $infos), on déplace le fichier
						if ($infos == '')
							{	move_uploaded_file($f1_tmpname, "../fichiers/{$f1_name}") or $infos .= "- Impossible d'enregistrer la news, contacter le webmaster!<br>";
							}
					 
						if ($infos == '')
							{	//Connection à la base de donnée
								mysql_connect("localhost", "***", "***") or die (mysql_error());
								mysql_select_db("nosoiseauxch1");
								mysql_query("INSERT INTO news VALUES ('','$titre_news','$contenu', 'titre','$f1_name', '$f1_size' );") or die (mysql_error());
							}	
					}
									
				//Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
				if (empty($_POST['MAX_FILE_SIZE'])) $infos = '';

				//Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé, MAX_FILE_SIZE est vide), on l'affiche
				if ($infos != '' || empty($_POST['MAX_FILE_SIZE'])):
				?>
			

			<p><span style="color:red"><?php echo $infos; ?></span></p>
			

			<form method="post" action="rediger_news.php" enctype="multipart/form-data">
				<label for="titre_news">Titre de la news:</label><br/>
     			<input type="text" name="titre_news" id="titre_news"/><br/>
     			<label for="contenu">Contenu de la news:</label><br />
     			<textarea name="contenu" id="contenu"></textarea><br />
 				<label for="fichier">Fichier (max. 3Mo):</label><br />
				<input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
    				<input type="file" name="mon_fichier" id="mon_fichier" /><br />
     			<label for="titre">Titre du fichier (max 80 caractères):</label><br />
     			<input type="text" name="titre" value="Titre du fichier" id="titre" /><br />
     			<input type="submit" name="submit" value="Envoyer" />
			</form>
			
			
			<?php ENDif;
				if ($infos == '' && !empty($_POST['MAX_FILE_SIZE']))
				{
			?>
			<p>Transfert réussi!</p>
			<?php
				 } 
			?>


Posté : 16 févr. 2008, 16:01
par Truc
Bienvenue,

Ne laisse pas trop trainer tes identifiants de connexion lorsque tu postes du code on ne sait jamais ;)

En ce qui concerne ton problème décompose la requête et son exécution affin de visualiser la requête générée et qui sera exécutée réellement
$sql = "INSERT INTO news VALUES ('','".$titre_news."','".$contenu."', '".titre."','".$f1_name."', '".$f1_size."' )";
echo $sql;
mysql_query($sql) or die (mysql_error());
Mais apparemment il manque une valeur d'insertion.
Tu as 7 champs mais seul 6 valeurs à l'insertion (possible mais en précisant les champs concernés... ce n'est pas le cas ici).

Posté : 17 févr. 2008, 00:12
par Tengmalm
Je vais voir tout ça merci!!! Je te tiendrais au courant!