8770 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

En fait j'avais déjà fait une colonne qui s'appelle "up_finalname" mais c'était pour les noms des fichiers uploadés ...

Je vais en rajouter une pour le titre de l'article ...

Par contre dans le contenu de l'article ça risque de faire pareil à l'affichage ???

---------------

EDIT:

Euh ouais dans ma BDD, dans ma colonne "up_titre_article", pour ex, j'en ai un qui s'intitule "L\'histoire de la vie" ... effectivement il y a les \
Modifié par Jackisback (22 Oct 2008 - 11:05)
Quelle solution me proposerais-tu ??

Parceque on départ j'étais partis que la-dessus mais je n'avais pas réussi ...

Si tu as une petite idée, je veux bien essayer ....

D'avance merci
L'article est stocké dans une base de données ? Si oui, il possède un identifiant qui permet de l'identifier de manière unique par rapport aux autres articles. Dans ce cas là, seul l'id suffit !
Certes ....

J'ai donc modifié cette ligne:

$requete_contenu = sprintf("SELECT up_description FROM upload_fichier WHERE up_id = '%d' AND up_titre_article = '%s'", $id, mysql_real_escape_string($article));


Comme ça et c'est bon ...:

$requete_contenu = sprintf("SELECT up_description FROM upload_fichier WHERE up_id = '%d'", $id);


C'est qu'au début je n'avais pas eu la correction du code avec le %d donc ça ne fonctionnait pas et puis j'ai essayé d'autre truc et ainsi de suite ...

Et c'est vrai que maintenant je peux alléger un peu ce code, tu as raison ...

Merci encore pour votre aide ...

Je vais essayer maintenant de formater mon texte comme dis plus haut pour qu'il me vire les \\\ ...

Bye et merci encore
Euh avant de fermer le post ...

Une petite question tjs concernant ce script.

J'ai ajouté ce code pour qu'il m'affiche également un lien vers le fichier correspondant à l'article si toutefois un fichier à été envoyé :

while($row = mysql_fetch_row($result))
{
//var_dump($row);  # debug

echo '<div id="News">'.$row[0].'<br/>
<a href="../Gestion/fichiers_upload/'.$row[2].'" onclick="window.open(this.href,\'_blank\',\'height=300\',\'width=200\' ,\'location=no\',\'resizable=no\');return false;">Téléchargez l\'article correspondant. <a>
</div>';
}


Par contre lorsqu'aucun fichier n'est joint à un article lors d'un ajout, et bien a l'affichage de ce message il m'affiche un lien qui pointe vers mon dossier (genre dossier FTP).

J'aimerais juste savoir ce que je dois ajouter pour qu'il verifie si il y a déjà un fichier ...

Certainement un isset(...), non ????
Merci je vais creuser un peu cette fonction ...

----------------

EDIT:

Je viens de regarder cette fonction et j'ai ajouté ce bout de code:

while($row = mysql_fetch_row($result))
{

$filename = "$row[2]";

if (file_exists($filename)){
    echo "Le fichier $filename existe.";
} else {
    echo "Le fichier $filename n'existe pas.";
}


Ou $row[2] correspond au nom du fichier uploadé dans le dossier upload_fichiers.

Mais dans tout les cas que le fichier soit présent ou pas il m'affiche ce message:

Le fichier test.pdf n'existe pas.


Alors que juste en-dessous j'ai le lien pour télécharger le fichier correspondant et lui fonctionne.

Une petite idée ?
Modifié par Jackisback (22 Oct 2008 - 14:25)
Change

while($row = mysql_fetch_row($result))
{
//var_dump($row);  # debug

echo '<div id="News">'.$row[0].'<br/>

<a href="../Gestion/fichiers_upload/'.$row[2].'" onclick="window.open(this.href,\'_blank\',\'height=300\',\'width=200\' ,\'location=no\',\'resizable=no\');return false;">Téléchargez l\'article correspondant. <a>

</div>';

}


En:

while($row = mysql_fetch_row($result)) {
    //var_dump($row);  # debug
    echo '<div id="News">'.$row[0];

    if ( array_key_exists($row, '2') ) {
        $file = '../Gestion/fichiers_upload/' . $row[2];

        if ( file_exists($file) ) {
            echo '<br/><a href="'.$file.'">Téléchargez l'article correspondant. <a></div>';
        }
    }
}


Et tant que tu y es, mes un fichier "index.html" vide dans /Gestion/ et /Gestion/fichiers_upload/




Modifié par Calak (22 Oct 2008 - 14:31)
Pour le index.html vide c'est bon ...

Par contre, pour le code, je l'ai changé et maintenant il m'affiche ce message:

Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in c:\.....

Ce doit etre la dedans que ça coince ...

array_key_exists($row, '2')
Ok je vais l'enlever mais pourrais-tu m'expliquer pourquoi ??

Et je dois retirer juste:

if ( array_key_exists($row, '2') )


J'ai essayé de l'enlevé mais ca n'arrange rien à mon problème ...

Il m'affiche toujours "Téléchargez l'article correspondant." meme si il n'y a pas de fichier ...
Tai, je suis vriament en mode boulet moi, j'ai inversé les paramètres -_-

Donc, c'était array_key_exists('2', $row)
Mais dans le contexte, ce n'était pas exactement ça qu'il fallait non plus (c'est ça de répondre en passant en coup de vent -_-" )

Je me corrige donc:

Remplace ta boucle par:
while($row = mysql_fetch_row($result)) {
    //var_dump($row);  # debug
    echo '<div id="News">'.$row[0];

    if ( isset($row[2]) ) {
        $file = '../Gestion/fichiers_upload/' . $row[2];

        if ( file_exists($file) ) {
            echo '<br/><a href="'.$file.'">Téléchargez l'article correspondant. <a></div>';
        }
    }
}


Pourquoi? Simplement pour ne pas passer une chaîne nulle à file_exists s'il n'y a pas de fichier. C'est plus propre.

Sinon aussi, sous quelle forme sont stockés les noms de fichiers?

"/path/to/file.ext" ? "file.ext" ?
Toutes les infos sont ici : array_key_exists(). Comme le dit le descriptif de la fonction, elle recherche l'existence d'une clé dans un tableau or ta variable $row2 est une ressource. Et puis, les deux arguments sont de toute manière inversés...

Il t'affiche toujours "Téléchargez l'article correspondant" car il trouve l'article physiquement. Change le chemin qui se trouve dans la variable $file et je suis sûr que tu n'auras plus le message.
Ok, ça retourne bien un tableau. Pas besoin de s'emballer ! J'ai confondu avec mysql_query(), au temps pour moi !
Modifié par Alphonse (22 Oct 2008 - 15:48)
Je stocke les fichiers dans le dossier ../Gestion/fichiers_upload/ et je les purifient avec des fonctions comme strtr ou preg_replace ...

Les extensions autorisées sont les suivantes:

'.png', '.bmp', '.gif', '.jpg', '.jpeg', '.pdf', '.doc', '.xls', '.txt'

Voilà ...

J'ai fais la modif du script comme conseillé juste en haut mais ça m'affiche toujours le lien "Téléchargez l\'article correspondant."
Pour reprendre ce que Calak disait, que vaut $row[2] ? Et puis, à quoi ressemble cette requête SQL ?
Concernant les $rows, voici:

array(3) 
{
[0]=>  string(9) "Ca repose" 
[1]=>  string(64) "../Gestion/fichiers_upload/comparatif-portails.pdf-102208-140006" 
[2]=>  string(23) "comparatif-portails.pdf"
}
Ca repose
Téléchargez l'article correspondant. 


Dans le [1] les chiffres à la fin correspondent à ça:

// On sépare le nom du fichier et le nom du dossier
$up_filename = basename($_FILES['up_fichier']['name']);

// Enregistrement de la date et heure
$date  = date("mdy");
$heure = date("His");

// Ajout de la date et l'heure au nom de fichier
$up_finalname= $up_filename."-".$date."-".$heure;


-------------------

EDIT:

Voici la structure de la table:

-- Structure de la table `upload_fichier`
-- 

CREATE TABLE `upload_fichier` (
  `up_id` int(10) unsigned NOT NULL auto_increment,
  `inscr_pseudo` varchar(255) NOT NULL,
  `up_filename` varchar(65) default NULL,
  `up_filesize` int(30) unsigned default '0',
  `up_titre_article` varchar(50) default NULL,
  `up_rubrique` varchar(30) NOT NULL,
  `up_description` varchar(255) default NULL,
  `up_finalname` varchar(50) default NULL,
  `up_filedate` bigint(20) unsigned default NULL,
  `up_lien` varchar(255) default 'vide',
  `up_modif` bigint(20) NOT NULL,
  PRIMARY KEY  (`up_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=129 ;


Si ça peut aider ...

----------------

RE-EDIT:

J'ai essayé en mettant
if ( isset($row[45]) )
et bien là il ne m'affiche plus le lien pour téléchargez ....

Normal ca n'existe pas mais justement dans ma bdd les champs [1] et [2] sont vides car il m'affiche ça quand je fais un var_dump ... :

[1]=>  string(0) "" [2]=>  string(0) "" }

Modifié par Jackisback (22 Oct 2008 - 16:15)
Et tu es sur que le fichier "comparatif-portails.pdf" existe?
Ecrit EXACTEMENT comme ça?


Peux tu nous copier-coller:

- Un lien direct vers "comparatif-portails.pdf"
- Un lien direct vers la page où du appelle tes script (index.php?)

Même si tu es en localhost, ne t'inquiète pas, c'est pour comparer les url's
Pages :