Je reviens avec mon script d'envoi de fichier + commentaires.
Il y a des variables qui ne sont pas déclarées dans mon formulaire de reception donc du coup l'insertion en BDD mysql est incomplète ..
Voici le formulaire d'envoi:
<link rel="stylesheet" media="screen" type="text/css" title="Envoi" href="envoi.css" />
<form method="POST" action="reception.php" enctype="multipart/form-data">
<fieldset>
<legend>LOGIN</legend> <!-- Titre du fieldset -->
<p> <label for="inscr_pseudo">Votre pseudo :</label><br />
<input type="text" name="inscr_pseudo" value="" id="inscr_pseudo"/> </p>
<!-- Essayez de cliquer sur le texte "Votre pseudo" : vous allez voir que le curseur se place automatiquement dans la zone de texte correspondante.
On a "lié" le label avec sa zone de texte pour qu'on sache à quoi il correspond. -->
<p> <label for="inscr_pass">Votre mot de passe :</label><br />
<input type="password" name="inscr_pass" id="inscr_pass" /> </p>
</fieldset>
<p>
<fieldset>
<legend>POSTEZ VOTRE ARTICLE</legend> <!-- Titre du fieldset -->
<p> <label for="up_titre_article">Le titre de votre article :</label><br />
<input type="text" name="up_titre_article" id="up_titre_article"/> </p>
<p> <label for="up_rubrique">Dans quelle rubrique se situe votre article :</label><br />
<select name="up_rubrique" id="up_rubrique">
<option value="aluminium">Aluminium</option>
<option value="appel_temoin">Appel à témoins</option>
<option value="association">Association</option>
<option value="demarches">Démarches</option>
<option value="fibro">Fibromyalgie</option>
<option value="metaux">Métaux</option>
<option value="methodes_bienf">Méthodes bienfaisantes</option>
<option value="reconnaissance">Reconnaissance de la Fibro</option>
<option value="temoignage">Témoignages</option>
<option value="vaccination">Vaccination</option>
</select>
</p>
<label for="up_description">Commentaire relatif à l\'article :</label> <br />
<textarea name="message" rows="8" cols="45" id="up_description">ICI</textarea>
<p>
<!-- <form method="POST" action="reception.php" enctype="multipart/form-data"> -->
<!-- On limite le fichier à 10 000Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
<label for="up_fichier">Sélectionnez votre fichier :</label><br />
<input type="file" name="up_fichier" id="up_fichier">
<p><input type="submit" name="envoyer" value="Poster le message / fichier"></p>
<p><input type="reset" value="Effacer les champs" /></p>
</form>
</p>
</fieldset></p>
Ce formulaire fonctionne bien (apparement).Et voici le script de reception.php:
<link rel="stylesheet" media="screen" type="text/css" title="Envoi" href="envoi.css" />
<?php
mysql_connect("localhost", "root", ""); //Connexion à MySQL
mysql_select_db("maBDD"); // Sélection de la base
$dossier = 'fichiers_upload/';
// $dossier = '/home/monsite/photos/'; (Dossier sur le serveur par exemple)
$up_filename = basename($_FILES['up_fichier']['name']);
$taille_maxi = 10000000;
// $up_filesize = filesize($_FILES['up_fichier']['size']);
// $up_filesize = filesize($_FILES['up_fichier']['tmp_name']);
$extensions = array('.png', '.bmp', '.gif', '.jpg', '.jpeg', '.pdf', '.doc', '.xls', '.txt');
$extension = strrchr($_FILES['up_fichier']['name'], '.');
// $_FILES['userfile']['name']
// Le nom du fichier original sur la machine source (ex : image.gif).
// $_FILES['userfile']['type']
// Le type MIME du fichier, si le navigateur a fourni cette information (ex : image/gif).
// $_FILES['userfile']['size']
// La taille du fichier envoyé, en octets (ex : 2543).
// $_FILES['userfile']['tmp_name']
// Le nom temporaire du fichier qui sera chargé sur la machine serveur (ex : /home/uploads/FHGJKYUGTDFR).
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez envoyer un fichier de type png, bmp, gif, jpg, jpeg, pdf, doc xls ou txt...';
}
if($up_filesize>$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...
$up_filename = strtr($up_filename,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$up_filename = preg_replace('/([^.a-z0-9]+)/i', '-', $up_filename);
if(move_uploaded_file($_FILES['up_fichier']['tmp_name'], $dossier . $up_filename)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Transfert effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec du transfert !';
}
}
else
{
echo $erreur;
}
// on écrit la requête sql
$sql = "INSERT INTO upload_fichier( up_id,
inscr_pseudo,
up_filename,
up_filesize,
up_titre_article,
up_rubrique,
up_description,
up_finalname,
up_filedate )
VALUES( '".$_POST['up_id']."',
'".$_POST['inscr_pseudo']."',
'".$_POST['up_filename']."',
'".$_POST['up_filesize']."',
'".$_POST['up_titre_article']."',
'".$_POST['up_rubrique']."',
'".$_POST['up_description']."',
'".$_POST['up_finalname']."',
'".$_POST['up_filedate']."'
)";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
?>
C'est la que ca se gate .... et je n'arrive plus à m'en sortir ...Voici le script de ma BDD:
CREATE TABLE `upload_fichier` (
`up_id` int(10) unsigned NOT NULL auto_increment,
`inscr_pseudo` varchar(255) NOT NULL,
`up_filename` varchar(20) character set utf8 collate utf8_bin default NULL,
`up_filesize` int(30) unsigned default '0',
`up_titre_article` varchar(50) character set utf8 collate utf8_bin default NULL,
`up_rubrique` varchar(30) NOT NULL,
`up_description` varchar(255) character set utf8 collate utf8_bin default NULL,
`up_finalname` varchar(50) character set utf8 collate utf8_bin default NULL,
`up_filedate` datetime default NULL,
PRIMARY KEY (`up_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
Il arrive a m'enregistrer les informations suivantes mais pas le reste:up_id
inscr_pseudo
up_titre_article
up_rubrique
Si quelqu'un pouvait me donner un petit coup de main, je l'en remercierait beaucoup ....