Mettre à disposition sur mon site des fichiers au format PDF

Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 14 oct. 2016 à 08:38
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 18 oct. 2016 à 19:48
Bonjour,
je souhaite mettre à disposition pour les membres des fichiers au format PDF. J'ai déjà ma BDD avec une table et cinq champs.
Je n'arrive pas à construire mon lien pour le téléchargement des fichier, page NOT FOUND.
J'ai mes fichiers PDF qui sont dans le répertoire "partitions" qui lui est à la racine du site.
Pouvez-vous m'aider s'ils vous plait, je vous remercie.
Voici la requète
	$requete = "SELECT *"
	         . " FROM cdc_oeuvres,cdc_partitions,cdc_pupitres"
                 . " WHERE cdc_oeuvres.idoeu = cdc_partitions.idoeu"
                 . " AND cdc_pupitres.idpup = cdc_partitions.idpup"
	         . " ORDER BY oeuvre";
	$resultat = ExecRequete($requete,$connexion);

	echo "<h2>Oeuvres</h2>";
	echo "<ul>";
	while($r=mysql_fetch_object($resultat)) {
                $lien = "/'partitions/$r->fichier' target='_blank'";
		echo "<li> <a href=\"$lien\">$r->oeuvre $r->fichier</a></li>";
	}
	echo "</ul>";



A voir également:

7 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
14 oct. 2016 à 09:37
Salut,

Si tu regardes le html généré par ton code (en affichant le code source de la page de ton navigateur par exemple), tu devrais remarquer que les guillemets autour des attributs ne sont pas corrects.

Exemple de correction :
$lien = "/partitions/$r->fichier";
echo "<li><a href=\"$lien\" target=\"_blank\">$r->oeuvre $r->fichier</a></li>";


Bonne journée,
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
14 oct. 2016 à 09:49
bonjour,
hélas j'ai toujours un retour de ma page
Not Found
	$requete = "SELECT *"
	         . " FROM cdc_oeuvres,cdc_partitions,cdc_pupitres"
                 . " WHERE cdc_oeuvres.idoeu = cdc_partitions.idoeu"
                 . " AND cdc_pupitres.idpup = cdc_partitions.idpup"
	         . " ORDER BY oeuvre";
	$resultat = ExecRequete($requete,$connexion);
	$letter   = "";  // Initialiser les lettres

	echo "<h2>Oeuvres</h2>";
	echo "<ul>";
	while($r=mysql_fetch_object($resultat)) {
            $lien = "/partitions/$r->fichier";
            echo "<li><a href=\"$lien\" target=\"_blank\">$r->fichier</a></li>";
	}
	echo "</ul>";
0
Tu as peut etre tout simplement entrer un mauvais chemin.
Le plus simple à mes yeux serait de rentrer tout directement en BDD ainsi tu affiches qu'un apercu=id? etc
Ce qui te permettrais de un de gagner du temps lors du changement de pdf, tu reupload juste le nouveau directement dans ta bdd
et de deux tu ne touches plus au code sources de ton site
Voila pour la page apercu le code a mettre

<?php
    
    if ( isset($_GET['id']) ){
        $id = intval ($_GET['id']);
        include ("config.php");
        $req = "SELECT img_id, img_type, img_blob,img_desc " . 
               "FROM images WHERE img_id = " . $id;
        $ret = mysql_query ($req) or die (mysql_error ());
        $col = mysql_fetch_row ($ret);
        
        if ( !$col[0] ){
            echo "Id d'image inconnu";
        } else {
            header ("Content-type: " . $col[1]);
            echo $col[2];
        }

    } else {
        echo "Mauvais id d'image";
    }

?>


Ce n'est qu'un exemple faut remplacer les noms. Mais le pdf doit etre inserer en blob
Et pour l'afficher c'est facile :)
tu tapes juste exemple <a href="apercu=id?35> Cliquez ici pour voir le pdf </a>
a oui le type du fichier pdf quand tu le rentres doit etre ABSOLUMENT application/pdf
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
Modifié par papyclic le 14/10/2016 à 22:50
Bonjour
Merci pour votre réponse.
En fait je suis un peu perdu, j'aimerai pourtant pouvoir mettre à disposition mes partitions de musique pour les membres.
J'ai refait mes tables parce que je me suis aperçu qu'elle n'était pas conforme à ce que je voulais.

J'ai d'abords la saisie des oeuvres avec une table de 4 champs
idoeu
oeuvre (nom de l'oeuvre)
idaut (nom de l'auteur issu d'une liste déroulante)
idorch (nom de l'orchestrtion de l'oeuvre issu d'une liste déroulante)

Pour la saisie de l'oeuvre c'est ok
Ensuite j'ai une table avec 5 champs pour la saisie des partitions car chaque oeuvre à plusieurs partitions
idpart
fichier (fichier de la partition en PDF)
idoeu (relation de la table oeuvre)

Pour la saisie des partitions ç'est OK également

Par contre l'arborescence de mes répertoires est quelque peu complexe pour pouvoir aller chercher les fichiers PDFs.
A la racine de mon site j'ai un répertoire partitions
J'ai un sous dossier qui coresponds à une oeuvre et 2 sous dossiers ou il y a les fichiers PDFs.
Si quelqu'un à une idée car comme je le disais je suis un peu beaucoup perdu.
Merci de votre aide.
Cordialement.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 oct. 2016 à 10:26
Le champ fichier en bdd contient uniquement le nom du fichier pdf ou également le chemin vers ce fichier ?
Comment sont nommés les sous-dossiers pour chaque oeuvre dans le dossier partitions ?
Comment sont nommés 2 sous-dossiers en le dossier de chaque oeuvre ?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 oct. 2016 à 16:04
Bonjour
Dans la BDD la champ fichier contient uniquement le nom du fichier PDF
exemple Trompette UT.pdf
ci-joint une capture de L'arborescence des dossiers pour les partitions
https://www.cjoint.com/c/FJrmAukTT0u
comme sous dossiers il y a les répertoires des oeuvres et dans chaque répertoire des oeuvres il y a 2 sous dossier qui sont "grand format" & "Petit format" et ensuite on a acces au fichier PDF.
C'est peut-être un peu compliqué mais je voulais avoir chaque oeuvre dans l'orchestration qui lui est propre.
Merci en tout cas si vous pouvez m'aiguiller.
Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 oct. 2016 à 17:11
Un début de solution possible :
$requete = 'SELECT o.idoeu, o.oeuvre, p.fichier FROM oeuvres o LEFT JOIN partitions p ON o.idoeu = p.idoeu';
//$resultat = ExecRequete($requete,$connexion);
$resultat = array(
    array('idoeu' => 1, 'oeuvre' => 'Nom 1', 'fichier' => 'fichier1.pdf'),
    array('idoeu' => 2, 'oeuvre' => 'Nom 2', 'fichier' => 'fichier2.pdf'),
    array('idoeu' => 3, 'oeuvre' => 'Nom 3', 'fichier' => 'fichier3.pdf')
);

//while($oeuvre = mysql_fetch_object($resultat)) {
while($oeuvre = array_pop($resultat)) {
    $partitionGrandFormat = '/partitions/' . urlencode($oeuvre['oeuvre']) . '/grand format/' . urlencode($oeuvre['fichier']);
    $partitionPetitFormat = '/partitions/' . urlencode($oeuvre['oeuvre']) . '/petit format/' . urlencode($oeuvre['fichier']);
    
    echo 'Nom : ' . $oeuvre['oeuvre'] . '<br>';
    echo 'Partitions :<br>';
    echo '<a href="' . $partitionGrandFormat . '" rel="nofollow noopener noreferrer" target="_blank">Grand format</a><br>';
    echo '<a href="' . $partitionPetitFormat . '" rel="nofollow noopener noreferrer" target="_blank">Petit format</a><br>';
}


Plusieurs remarques :
- N'ayant pas accès à ta bdd, j'ai commenté l'exécution de la requête et créer un tableau de résultat en dur afin de simuler un retour de bdd.
Il faudra évidemment supprimer ce tableau en dur et décommenter l'exécution de la requête pour tester avec les vrais données.
Même chose pour mon while qui parcourt le tableau à remplacer par ton while qui parcourt le résultat de la requête sql.
- On commence par faire une jointure sql pour récupérer la liste des œuvres avec le fichier pdf associé
- Pour chaque œuvre, on construit le lien vers les partitions petite et grand format : pour cela il est nécessaire que le nom du sous-dossier dans le dossier partitions soit identique au nom de l’œuvre (attention aux majuscule/minuscule et espaces)
Les sous-dossiers dans le dossier de l’œuvre doit aussi être exactement nommé "petit format" et "grand format" (encore attention aux les majuscules/minuscules et espaces).

Si deux œuvres ont le mêmes noms, ce système ne pourra pas fonctionner car deux sous-dossiers du dossier partitions ne pourront pas avoir le même nom. Pour pallier à ce problème, on pourra alors utiliser l'identifiant de l’œuvre (qui lui est unique) pour nommer les sous-dossiers de chaque œuvre et pour construire les liens vers les partitions.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 oct. 2016 à 19:19
Bonjour
Je te remercie je vais essayer de mettre ça en place et je te redis ce qu'il en ai.
Bonne soirée
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
18 oct. 2016 à 19:48
Bonjour,
Voilà j'y vois déjà un peu plus clair sur l'organisation de mes partitions, j'ai encore quelques zones d'ombre.
Sur ce que as fait j'ai rajouté uniquement l'orchestration de l'oeuvre.
Voilà ce que ça donne à l'affichage. J'ai uniquement saisie une oeuvre
BF - Clairon
Vive la classe
Grand format
Petit format

Je me pose une question...elle est surement nul d'ailleurs.
En fait en intégrant tous en BDD, l'oeuvre, l'orchestration, fichier PDF et je peux rajouter dans la table oeuvre un champ format et de ce fait je n'ai plus besoin d'avoir mes partitions en dur sur mon serveur puisque tous ai en BDD non?? Actuellement toutes mes partitions sont sur mon PC bien sur, j'ai du mal à intégrer certaines choses.
Par contre j'ai les liens sur Grand format et Petit format qui me renvoie à une url NOT FOUND. En principe cela devrait ouvrir tous mes fichiers PDFs qui sont dans ces 2 sous dossiers. Car dans les deux sous dossires il y a plusieurs fichiers PDFs en fait.
Excuse moi si je suis brouillon dans mes expliacations. Serai tu d'accord pour que je te donne l'URL de l'acces privé pour voir exactement ce que ça donne.
Je te remercie.
Bonne soirée.
0