IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

upload de fichier


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut upload de fichier
    Bonjour,

    Etant étudiant en BTS Informatique je dois créer un site internet, dans mon cas je dois créer la partie stockage des cours partagés, il s'agit d'un site communautaire pour notre promotion. Le seul problème c'est que je suis totalement débutant en Base de données et je n'ai jamais fait de PHP. Or j'en ai besoin pour ma partie, j'ai réussi à créer mon script pour l'envoie de fichier comme je le voulais c'est à dire n'accepter que des fichier avec l'extension pdf et de 50mo maximum. Dans mon formulaire, j'ai des infos qui doivent être écrit dans la base de données en même temps que l'envoie du fichier, tel que la matière, date, nom...

    Le problème c'est que je ne sais pas par où commencer, faut-il créer d'abord mes tables sur PHPmyadmin ou ajouter les scripts nécessaire dans le fichier de traitement d'envoie de fichier PHP ?

    J'avoue être perdu pour faire le lien entre le PHP et l'écriture, lecture dans la base de données.

    Une fois ce problème éluder, je dois aussi afficher les derniers cours mis en ligne avec un lien pour les télécharger (10 derniers mis en ligne), c'est une requête SQL, mais où la placer ?

    Par avance merci de vos réponses, je ne vous demande pas forcément de me donner une réponse directe mais de m'aiguiller dans la bonne direction pour réussir à comprendre et réaliser ce projet.

    Voici mon fichier php pour l'envoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) //Verification des erreurs dans le fichier
    {
                    if ($_FILES['monfichier']['size'] <= 52428800) //Vérification taille du fichier : 50Mo max ici
            {
                    $infosfichier = pathinfo($_FILES['monfichier']['name']); //Vérification extension
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('pdf');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
                            // Validation du fichier et stockage dans le dossiers
                            move_uploaded_file($_FILES['monfichier']['tmp_name'], 'Uploads/' . basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
                    }
            }
    }
    ?>
    Dernière modification par sabotage ; 03/01/2015 à 13h29.

  2. #2
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Dans un premier temps, je pense qu'il est plus judicieux de faire tes tables avant de te lancer dans ton/tes scripts.
    Ce sera plus simple de faire tes requêtes si tes tables sont déjà crées

    Ce qui concerne la requête SQL tu peux la placer directement dans le fichier où tu souhaites afficher les dix derniers cours.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse en effet ca me parait plus judicieux, vu qu'il va falloir faire les dix derniers cours pour chaque matière et toutes matière confondues je créerais le fichier pour chacun dans ce cas, merci je vais commencer à chercher de ce coté.
    Dernière modification par rawsrc ; 02/01/2015 à 22h58. Motif: Inutile de citer un message pour y répondre.

  4. #4
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    dix derniers cours pour chaque matière et toutes matière confondues je créerais le fichier pour chacun dans ce cas
    Tu dois faire une page pour chaque derniers cours?
    Ou une page avec la liste des cours et un lien pour les charger?
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'avoue ne pas avoir été très clair, j'ai plusieurs matières : réseaux développement, anglais... dans la page publier un cour on choisi la matière qui viendra s'enregistrer dans la Base de données. Ensuite j'ai une page pour chaque matière ou on affichera les dix derniers cours des matières respectives, j'ai une autre page où cette fois ci seront affichés les dix derniers cours toute matières confondues. En espérant avoir été plus clair.

  6. #6
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Oui c'est effectivement plus clair!

    Tu auras juste deux pages à faire ou tu pourras y intégrer les deux requêtes qui seront différentes.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ok donc deux pages, avec deux requetes qui seront du SQL je suppose :

    Select ... From...
    Where...

    Bon ben au boulot, j'ai déja le merise des tables ce qui devrait grandement m'aidé

  8. #8
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Oui dès lors que tu auras fais le select pour les dix derniers peux importe le cours, ce sera du gateau pour l'autre select
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'ai terminé la création des tables avec les relations, j'ai fait au plus simple, 2 tables :

    -Cours
    -Matières

    Dans la table cours on retrouve :

    ID_Cours : clé primaire
    Noms_Cours : Nom que l'utilisateur rentrera dans le formulaire
    Desc_Cours : Je l'ai mis en facultatif
    Date_Cours
    File_Cours : qui comprend le nom du fichier
    Matière_cours : qui est clé étrangère

    Dans la table matières :

    ID_Matière : clé primaire lié a la clé étrangère de la table cours par une relation
    Matière_Cours : nom de la matière

    Donc si j'ai bien compris, je dois rentrer les matière manuellement et leur assigner un ID en chiffre:

    par exemple :
    maths : 1
    anglais : 2
    ...


    J'aurais par contre une question comment lors de l'envoie du fichier, je peut récupérer le chemin d'accès du fichier sur mon site car il faut que les personnes puisse le télécharger avec le lien ?

  10. #10
    bm
    bm est déconnecté
    Membre extrêmement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par défaut
    Cela dépend aussi du format du fichier , et du navigateur .
    *.zip est téléchargeable avec firefox :

    <a href="cours.zip">Cours</a>

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bm Voir le message
    Cela dépend aussi du format du fichier , et du navigateur .
    *.zip est téléchargeable avec firefox :

    <a href="cours.zip">Cours</a>
    J'ai autorisé seulement l'extension PDF, cela marcherait-il avec le pdf ?

    <a href="xxxx">Cours</a>, le XXXX sera je suppose remplacer par le nom du fichier qui est renseigné dans la BDD, mais comment juste insérer le nom à cet endroit de la balise ?

  12. #12
    bm
    bm est déconnecté
    Membre extrêmement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par défaut
    comment juste insérer le nom à cet endroit de la balise ?
    En sortant $nom de la bdd avec php , et avec insertion dans les balises html :

    <a href="<? echo $nom; ?>">Cours</a>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse qui m'aide à éclaircir le problème, je ne clos pas le sujet de suite, on ne sait jamais je pourrais peut-être avoir encore besoin d'aide. Encore une fois merci.

  14. #14
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    1/ J'espère que pour tes requêtes tu prends modèle sur du code assez récent. En effet l'extension mysql est dépréciée (c'est écrit dans toutes les fonctions mysql), il est recommandé d'utiliser PDO. Cela te servira aussi plus tard si tu continues à faire du php.

    2/ Pour que le lien fonctionne dans le href il faut mettre le chemin avec le dossier dans lequel il est stocké (je suppose que les fichiers ne sont pas en vrac à la racine du site) relatif à l'emplacement du script en cours. Si ton script est à la racine du site et que tu stocke dans un dossier nommé PDF ce sera donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<? echo 'PDF/'.$nom; ?>">Cours</a>
    3/ Ton script d'upload fonctionne mais il est très minimaliste. Cela peut suffire s'il s'agit d'un exercice mais en production il y aurait plus de code à développer.
    - Il faudrait vérifier et éventuellement renommer les fichiers avant l'upload car la présence de caractères spéciaux ou espacements dans le nom pourrait poser des problème.
    - Si tu ne fais aucune vérification sur l'existence de fichiers déjà existants, les nouveaux fichiers écraseront les anciens sans préavis en cas de doublons.
    - En cas de dépassement de la configuration "post_max_size" du serveur les super globales $_POST et $_FILE seront vides si bien que ton test sur les variables $_FILE ne sera pas valide. On peut gérer ce problème en passant une variable $_GET dans l'attribut action du formulaire d'upload. Ensuite il suffit de faire le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_GET["form_upload"]) && empty($_POST)) {// dépassement post_max_size}
    pour intercepter l'erreur sinon la plupart du temps on se retrouve devant un écran blanc.
    Si ensuite tu ne veux pas simplement gérer l'erreur mais pouvoir surpasser la configuration serveur pour permettre l'upload de plus gros fichiers et/ou un upload multiple sans limites (excepté celles que tu définirais toi-même) tu peux regarder la première solution d'upload dans l'ardoise sous mon pseudo.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse, j’essaierais de faire tous ce que tu m'as dit, je vais d'abord faire simple car je n'ai pas énormément le temps ceci dit, certaine de tes précision sont importantes je les ajouterais.

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo