Gestion de documents, formulaires + PHP

Gestion de documents, formulaires + PHP - PHP - Programmation

Marsh Posté le 22-06-2005 à 09:52:53    

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 :
  1. $contenu.='<h2>Documents à télécharger : </h2><br /><br />';
  2. $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>';
  3. $contenu.='<table><tr><th>Date d\'ajout</th><th>Nom</th><th>Fichier</th><th>Modifier</th><th>Supprimer</th></tr>';
  4. $query = "SELECT idFicDrh, nomFicDrh, lienFicDrh, dateFicDrh FROM fichierDRH";
  5. $result = mysql_query($query);
  6. while ($row = mysql_fetch_row($result)){
  7. $idF = $row[0];
  8. $nomF = $row[1];
  9. $lienF = $row[2];
  10. $dateF = $row[3];
  11. $contenu.='<tr>
  12.    <td>'.$dateF.'</td>
  13.    <td>'.$nomF.'</td>';
  14.    if (!isEmpty($lienF) ){
  15.     $contenu.='<td><a href="'.$lienF.'" target=_blank ><img src="../img/pdf1.gif" style="border:0;" alt="" title="" /></a></td>';
  16.    }
  17.    else {
  18.     $contenu.='<td>&nbsp;</td>';
  19.    }
  20.    $contenu.='<td ><a href="?a=edit&amp;idFichier='.$idF.'" ><img src="../img/modifier.gif" style="border:0;" alt="" /></a></td>';
  21.    $contenu.='<td ><a href="?a=delete&amp;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 >';
  22. }


 
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 :
  1. $contenu = '<h2>Ajouter un nouveau fichier</h2><br /><br />';
  2. $contenu.= '<form action="?a=addFic-r" method=post ENCTYPE="multipart/form-data">
  3. <table>
  4.  <tr>
  5.   <td>Intitulé du document : </td>
  6.   <td><input type="text" name="nomFic"><br /></td>
  7.  </tr>
  8.  <tr>
  9.   <td>Lien : </td>
  10.   <td><input type="file" name="fichier"><br /></td>
  11.  </tr>
  12.  <tr>
  13.   <td><input type="submit" name="valider" value="Ajouter ce fichier"></td>
  14.  </tr>
  15.  </table></form>';


Code :
  1. $nomF = trim($_POST['nomFic']);
  2. $aujourdhui=date("d/m/Y" );
  3. if(isEmpty($_POST['fichier'])){ 
  4.  $dest_dossier = 'upload/drh/fichiers/'; 
  5.  $dest_fichier = basename($_FILES['fichier']['name']);
  6.  $nouveauFichier = $dest_dossier . $dest_fichier;
  7.  move_uploaded_file($_FILES['fichier']['tmp_name'], $nouveauFichier);
  8.  mysql_query("INSERT INTO `fichierDRH` ( `idFicDrh` , `nomFicDrh` , `lienFicDrh` , `dateFicDrh`) VALUES ('','$nomF', '$nouveauFichier','$aujourdhui');" );
  9. }else{
  10.  mysql_query("INSERT INTO `fichierDRH` ( `idFicDrh` , `nomFicDrh` , `lienFicDrh` , `dateFicDrh`) VALUES ('','$nomF', '','$aujourdhui');" );
  11. }


 
Enfin, la partie permettant de modifier un document (c'est la que tout se complique pour moi)

Code :
  1. $idF = trim($_GET['idFichier']);
  2.  $query = "SELECT nomFicDrh, lienFicDrh, dateFicDrh FROM fichierDRH WHERE idFicDrh='$idF'";
  3.  $result = mysql_query($query) or die(mysql_error());
  4.  // Recuperation des resultats
  5.  $row = mysql_fetch_row($result);
  6.   $nomF = $row[0];
  7.   $lienF = $row[1];
  8.   $dateF = $row[2];
  9.  $contenu.='<h2>Modifier un fichier</h2>';
  10.  $contenu.='<form action="?a=edit-r&amp;idFichier='.$idF.'" method=post ENCTYPE="multipart/form-data">
  11.   <table>
  12.  <tr>
  13.   <td>Intitulé du document : </td>
  14.   <td><input type="text" name="nomFic" value="'.$nomF.'"><br /></td>
  15.  </tr>
  16.  <tr>
  17.   <td>Lien : </td>
  18.   <td><input type="file" name="fichier" ><br /></td>
  19.  </tr>
  20.  <tr>
  21.   <td><input type="submit" name="valider" value="Ajouter ce fichier"></td>
  22.  </tr>
  23.  </table>
  24. </form>';


Code :
  1. $idF = trim($_GET['idFichier']);
  2. $nomF = trim($_POST['nomFic']);
  3. $aujourdhui = date("d/m/Y" );
  4. if(!(isEmpty($_FILES['fichier']))){
  5.  echo 'traceeeeeeeeeeeeeeeeeee';
  6.  $dest_dossier = 'upload/drh/fichiers/'; 
  7.  $dest_fichier = basename($_FILES['fichier']['name']);
  8.  $nouveauFichier = $dest_dossier . $dest_fichier;
  9.  move_uploaded_file($_FILES['fichier']['tmp_name'], $nouveauFichier);
  10.  mysql_query("UPDATE `fichierDRH` SET `nomFicDrh` = '$nomF', `lienFicDrh` ='$nouveauFichier', `dateFicDrh` = '$aujourdhui' WHERE `idFicDrh` ='$idF' LIMIT 1 " );
  11. }else{
  12.  mysql_query("UPDATE `fichierDRH` SET `nomFicDrh` = '$nomF', `dateFicDrh` = '$aujourdhui' WHERE `idFicDrh` ='$idF' LIMIT 1 " );
  13. }


 
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

Reply

Marsh Posté le 22-06-2005 à 09:52:53   

Reply

Marsh Posté le 22-06-2005 à 09:58:10    

Code :
  1. if($_FILES['fichier']['error'] != UPLOAD_ERR_NO_FILE) {
  2.   // Un fichier a été uploadé
  3. } else {
  4.   // Fichier vide
  5. }


:)


Message édité par FlorentG le 22-06-2005 à 09:58:18
Reply

Marsh Posté le 22-06-2005 à 10:26:43    

FlorentG, dis moi ce bout de code sert bien à verifier mon upload, je n'ai pas de probleme d'upload, les uploads se font bien correctement, mes fichiers sont bien présents sur le serveur. Mon probleme est quand un document contient un fichier et que je souhaite modifier un champs de ce doument (date, titre, ...) sans modifier le fichier l'appli modifie tt de meme le fichier et remplace dans la base ce fichier par une chaine vide et je ne sais pas pkoi
Si tu avais bien compris ton probleme, je suis désolée, mais dans  ce cas la je n'ai as compris ta question et je ne sais pas comment utilisé ton code


Message édité par karinou le 22-06-2005 à 10:27:05
Reply

Marsh Posté le 22-06-2005 à 10:28:22    

Justement, ce bout de code sert à vérifier si un fichier a été uploadé. Ainsi, si $_FILES['fichier']['error'] est égal à UPLOAD_ERR_NO_FILE, alors le champ fichier est vide, donc à toi de ne pas triturer le champ dans la base ;)

Reply

Marsh Posté le 22-06-2005 à 10:30:13    

D'accoooooooooooooooord :) je vais essayer ca, merci beaucoup

Reply

Marsh Posté le 22-06-2005 à 10:43:32    

Bien joué, ca marche nikel encore une fois et bravo :)

Reply

Marsh Posté le 22-06-2005 à 10:47:24    

Yeah

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed