karinou | Bonjour, je suis en train de réaliser un site Internet.
Dans un de mes modules, je dois pouvoir gerer une liste de documents uploadés sur le serveur. Les liens vers ses fichiers sont stockés dans une base de données mysql
J'ai donc réaliser une page pouvant gerer l'affichage de ses documents, donc une liste permettant de modifier ou supprimer chaque document et un bouton permettant d'ajouter des documents : Voici le code de ma page principale et récapitulative : Code :
- $contenu.='<h2>Documents à télécharger : </h2><br /><br />';
- $contenu.='<p style={text-align:"center";><a href="?a=addFic" class="bt" ><img src="../img/add1.gif" alt="" title="" style="border:0;" alt="" />Ajouter un nouveau fichier</a><br /><br /></p>';
- $contenu.='<table><tr><th>Date d\'ajout</th><th>Nom</th><th>Fichier</th><th>Modifier</th><th>Supprimer</th></tr>';
- $query = "SELECT idFicDrh, nomFicDrh, lienFicDrh, dateFicDrh FROM fichierDRH";
- $result = mysql_query($query);
- while ($row = mysql_fetch_row($result)){
- $idF = $row[0];
- $nomF = $row[1];
- $lienF = $row[2];
- $dateF = $row[3];
- $contenu.='<tr>
- <td>'.$dateF.'</td>
- <td>'.$nomF.'</td>';
- if (!isEmpty($lienF) ){
- $contenu.='<td><a href="'.$lienF.'" target=_blank ><img src="../img/pdf1.gif" style="border:0;" alt="" title="" /></a></td>';
- }
- else {
- $contenu.='<td> </td>';
- }
- $contenu.='<td ><a href="?a=edit&idFichier='.$idF.'" ><img src="../img/modifier.gif" style="border:0;" alt="" /></a></td>';
- $contenu.='<td ><a href="?a=delete&idFichier='.$idF.'" onclick="javascript:return(confirm(\'Etes vous sur de vouloir supprimer ce conseil?\'));"><img src="../img/supprimer.gif" style="border:0;" alt="" /></a></td >';
- }
|
La variable $contenu est une sorte de buffer dans lequel, je stocke toute mes informations que j'affiche grace a un template. Si elle vous perturbe vou pouvez la remplacer par une echo''
Voici ensuite par exemple mon bout de code permettant d'ajouter un document via un formulaire :
Code :
- $contenu = '<h2>Ajouter un nouveau fichier</h2><br /><br />';
- $contenu.= '<form action="?a=addFic-r" method=post ENCTYPE="multipart/form-data">
- <table>
- <tr>
- <td>Intitulé du document : </td>
- <td><input type="text" name="nomFic"><br /></td>
- </tr>
- <tr>
- <td>Lien : </td>
- <td><input type="file" name="fichier"><br /></td>
- </tr>
- <tr>
- <td><input type="submit" name="valider" value="Ajouter ce fichier"></td>
- </tr>
- </table></form>';
|
Code :
- $nomF = trim($_POST['nomFic']);
- $aujourdhui=date("d/m/Y" );
- if(isEmpty($_POST['fichier'])){
- $dest_dossier = 'upload/drh/fichiers/';
- $dest_fichier = basename($_FILES['fichier']['name']);
- $nouveauFichier = $dest_dossier . $dest_fichier;
- move_uploaded_file($_FILES['fichier']['tmp_name'], $nouveauFichier);
- mysql_query("INSERT INTO `fichierDRH` ( `idFicDrh` , `nomFicDrh` , `lienFicDrh` , `dateFicDrh`) VALUES ('','$nomF', '$nouveauFichier','$aujourdhui');" );
- }else{
- mysql_query("INSERT INTO `fichierDRH` ( `idFicDrh` , `nomFicDrh` , `lienFicDrh` , `dateFicDrh`) VALUES ('','$nomF', '','$aujourdhui');" );
- }
|
Enfin, la partie permettant de modifier un document (c'est la que tout se complique pour moi)
Code :
- $idF = trim($_GET['idFichier']);
- $query = "SELECT nomFicDrh, lienFicDrh, dateFicDrh FROM fichierDRH WHERE idFicDrh='$idF'";
- $result = mysql_query($query) or die(mysql_error());
- // Recuperation des resultats
- $row = mysql_fetch_row($result);
- $nomF = $row[0];
- $lienF = $row[1];
- $dateF = $row[2];
- $contenu.='<h2>Modifier un fichier</h2>';
- $contenu.='<form action="?a=edit-r&idFichier='.$idF.'" method=post ENCTYPE="multipart/form-data">
- <table>
- <tr>
- <td>Intitulé du document : </td>
- <td><input type="text" name="nomFic" value="'.$nomF.'"><br /></td>
- </tr>
- <tr>
- <td>Lien : </td>
- <td><input type="file" name="fichier" ><br /></td>
- </tr>
- <tr>
- <td><input type="submit" name="valider" value="Ajouter ce fichier"></td>
- </tr>
- </table>
- </form>';
|
Code :
- $idF = trim($_GET['idFichier']);
- $nomF = trim($_POST['nomFic']);
- $aujourdhui = date("d/m/Y" );
- if(!(isEmpty($_FILES['fichier']))){
- echo 'traceeeeeeeeeeeeeeeeeee';
- $dest_dossier = 'upload/drh/fichiers/';
- $dest_fichier = basename($_FILES['fichier']['name']);
- $nouveauFichier = $dest_dossier . $dest_fichier;
- move_uploaded_file($_FILES['fichier']['tmp_name'], $nouveauFichier);
- mysql_query("UPDATE `fichierDRH` SET `nomFicDrh` = '$nomF', `lienFicDrh` ='$nouveauFichier', `dateFicDrh` = '$aujourdhui' WHERE `idFicDrh` ='$idF' LIMIT 1 " );
- }else{
- mysql_query("UPDATE `fichierDRH` SET `nomFicDrh` = '$nomF', `dateFicDrh` = '$aujourdhui' WHERE `idFicDrh` ='$idF' LIMIT 1 " );
- }
|
Mon soucis est que, des que je modifieun formulaire sans changer le fichier joint, mon fichier est totalment ecrasé dans la base, meme si le champ 'fichier' du formulaire est vide.Des que je fais une modification dans le document, il est necessaire de remette le fichier joint pour qu'il soit isible dans la base. Cette m"those est vraiment inutilisable par mon commanditaire. Comment faire pour ne pas mettre à jour le champs fichier qui celui si est vide dans le formulaire, non rempli par l'utilisateur
Merci, karine |