Upload de fichiers problématique

Tengmalm
Invité n'ayant pas de compte PHPfrance

16 févr. 2008, 15:29

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
				 } 
			?>


Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 févr. 2008, 16:01

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).

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Tengmalm
Invité n'ayant pas de compte PHPfrance

17 févr. 2008, 00:12

Je vais voir tout ça merci!!! Je te tiendrais au courant!