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 :

Insérer un ou plusieurs fichiers php/sql/html


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut Insérer un ou plusieurs fichiers php/sql/html
    Bonjour,

    Je suis bloquée, je souhaiterai avoir de l'aide pour uploader des fichiers, pdf, word, png, jpeg,jpg ... J'ai regardé le cours, mais j'ai du mal à comprendre

    Niveau phpMyAdmin :
    J'ai 3 variables où j'ai déclaré que ce sont des LONGBLOB.

    Niveau HTML, ce n'est qu'un extrait, j'ai 60 variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form method="post" action="./enregistrement.php" enctype="multipart/form-data">
    format pdf <span class="marge0_8">
    <input type="file" name="pdf" multiple/>
     
    Image <span class="marge8_5">
    <input type="file" name="image" multiple/></span>
    </form>
    Niveau PHP, mon code fonctionne sauf pour insérer les fichiers, j'avoue ne pas avoir un bon niveau en PHP, voici un extrait :

    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
    18
    19
    20
     
    require_once 'cnxBDD.php';
    $type=isset($_POST['type']) ? $_POST['type']:'';
    $sql="INSERT INTO table1  (type,...) VALUES(:type,...)";
     
    $a_datas = array(':type'=>$type,...);
     
    try {
    	$req=$bdd->prepare($sql);
    	$req->execute($a_datas);
     
     
    	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
    } catch(Exception $e) {
    	//en cas d'erreur dans la requete ::
    	echo "<pre><br>Erreur dans la requete <br>" . $e -> getMessage() . "<br>";
    	echo "datas:<br>";
    	print_r($a_datas);
    	echo "</pre>";
    }

    J'ai fait la même chose que type pour chaque variable.
    Ça fait plusieurs jours que j'y suis, je ne sais pas quoi mettre et où dans le code, je ne sais pas si je dois créer une nouvelle page php pour l'insertion des fichiers, mais je souhaiterai garder qu'une table au niveau de PhpMyAdmin.

    Je vous remercie d'avance pour l'aide,

    Tiph

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si ça fait plusieurs jours que tu es sur le sujet tu as du lire des choses comme ça
    http://antoine-herault.developpez.co...ls/php/upload/

    non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bonjour et bienvenu(e) dans les forums de Developpez.com

    D'abord, le fichier uploadé est envoyé sur le serveur :
    Le nom du fichier temporaire sur le serveur est obtenu avec un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tmp_name = $_FILES['pdf']['tmp_name'];
     
    // et
     
    $tmp_name = $_FILES['image']['tmp_name'];
    Ensuite, tu dois lire chaque fichier pour récupérer le contenu et l'enregistrer dans ta table de données...
    Par exemple :
    http://php.net/manual/fr/function.file-get-contents.php

    Bon courage!
    De retour parmis vous après 10 ans!!

  4. #4
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Oui je l'ai lu, je ne vois pas comment enlever la taille, parce que je souhaite laisser libre la taille des fichiers, il y a un champs video aussi ...
    et je ne comprends pas :
    strtr($fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'

    Ca veut dire qu'il accepte les différents caractères spéciaux ? Je ne vois pas non plus dans ce document la déclaration des variables sur PhpMyAdmin

  5. #5
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Merci Sub0,

    Je vais tester

    @+

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par tiph3164 Voir le message
    parce que je souhaite laisser libre la taille des fichiers
    La taille maximale d'un fichier que l'on peut envoyer sur un serveur dépend de la configuration du serveur.
    En général, c'est 8Mo...
    Si tu souhaites aller au-delà, par exemple 24Mo, il faut modifier le fichier php.ini avant de redémarrer le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    memory_limit = 32M
    upload_max_filesize = 24M
    post_max_size = 32M
    Citation Envoyé par tiph3164 Voir le message
    Ca veut dire qu'il accepte les différents caractères spéciaux ?
    Non, c'est plutôt le contraire...
    Ce code sert à convertir dans une chaîne les caractères accentués par leur équivalence sans accent.
    On l'utilise quand les caractères spéciaux & accentués sont prohibés.

    Citation Envoyé par tiph3164 Voir le message
    Je ne vois pas non plus dans ce document la déclaration des variables sur PhpMyAdmin
    Pardon ? Je n'ai pas compris...
    De retour parmis vous après 10 ans!!

  7. #7
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour toutes ces explications

    En fait, j'ai déclaré mes fichiers sur PhpMyAdmin comme des "LONGBLOB", pour pouvoir y insérer des fichiers avec de grandes tailles.
    Et sur le tuto, je ne vois pas comment elles sont déclarées dans PhpMyAdmin, et je sais qu'on peut uploader des fichiers directement sur le serveur sans passer par PhpMyAdmin, mais ce n'est pas ce que je veux :/

  8. #8
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Mettons les choses au clair si tu veux bien.
    Tout d'abord, 2 choix s'offrent à toi :


    Solution 1 : Tu le sais, l'upload de fichiers permet d'envoyer ces fichiers (données binaires) sur le serveur.
    On a alors la possibilité de conserver ces fichiers tels quels dans un dossier spécifique; On enregistre simplement dans la base de données le lien vers ce fichier. C'est la solution la plus commune et la plus utilisée car enregistrer le contenu binaire dans la base de données peut devenir un inconvénient dans la mesure où cette-dernière peut très vite grossir... C'est pourquoi il est généralement conseillé de séparer les fichiers de la base de données surtout si les fichiers à stoker sont très volumineux.


    Solution 2 : Autrement, si tu souhaites enregistrer ces données dans ta table, généralement, il va falloir ajouter 3 ou 4 champs à ta table :
    nom : Nom du fichier - Type VARVHAR 255
    taille : Taille du fichier - Type INT 11
    donnees: Données binaires, base64 - Type BLOB ou LONGBLOB
    typemime : Type du fichier - TYPE VARCHAR 255
    Ensuite, tu utilises les pistes que je t'ai donné dans mon message précédent...


    ► Quelle solution comptes-tu choisir ?
    De retour parmis vous après 10 ans!!

  10. #10
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Je pense qu'il serait plus judicieux si j'utilise alors la solution 1, mais, dans ce cas, il faudrait que je change mon code PHP, pour les autres champs ?

    Merci mille fois pour les explications !

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bon choix! En effet, c'est une solution bien plus adaptée à ton besoin.
    Ne t'inquiètes pas, nous allons t'expliquer et t'aider à le réaliser....
    après manger!
    A+
    De retour parmis vous après 10 ans!!

  12. #12
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Chouette!
    Je suis en formation cet après-midi, je tenterai quand même de répondre, en tout cas merci !
    Bon appétit ^^!

  13. #13
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ça devrait être super rapide en fait si tu reprends exactement le code du tutoriel.

    ► Dans le paragraphe 3.3, l'auteur explique à quel endroit et comment il stocke le fichier uploadé sur le serveur.
    Ce qui t'intéresse dans ton cas, c'est seulement de récupérer le nom du fichier, éventuellement sa taille et son type mime (extension) et d'enregistrer ces infos dans ta table SQL.
    Donc à l'endroit où on trouve ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Upload effectué avec succès !';
    Tu vas simplement remplacer cette ligne par le code suivant (que j'ai récupéré de ton premier message)
    Celui-ci qui te permettra normalement d'enregistrer les informations du fichier dans ta table (attention à bien la nommer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    require_once 'cnxBDD.php';
     
    $tablename = 'tablename'; // Nom de la table à spécifier
     
    $sql = "INSERT INTO $tablename ('nom', 'taille', 'extension') VALUES ('$fichier', '$taille', '$extension')";
    try {
    	$req = $bdd->prepare($sql);
    	$req->execute();
    	echo 'Upload effectué avec succès !';
    } catch(Exception $e) {
    	echo '<pre><br>Erreur dans la requete <br/>'.$e->getMessage().'<br/>';
    }

    ► Au préalable, tu devras évidemment ajouter les 3 colonnes suivantes à ta table :
    nom : Nom du fichier - Type VARVHAR 255
    taille : Taille du fichier - Type INT 11
    extension: Type du fichier - TYPE VARCHAR 255
    A toi de voir si tu as besoin de plus d'infos comme par exemple le nom original du fichier, la date d'upload, l'IP du client, etc... Faudra alors ajouter d'autres colonnes.


    ► Pour générer un lien vers le fichier uploadé avec ces informations, il suffit de récupérer le nom dans la table, par exemple (rapidement de tête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="' . $dossier . $nom .'">Télécharger ' . $nom . '</a>';

    Normalement, c'est tout
    Bon courage!
    De retour parmis vous après 10 ans!!

  14. #14
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour tout !
    Je ne peux pas tester, je ne suis pas sur mon ordinateur :/
    Je teste au plus vite, et je reviendrai.
    Merci beaucoup encore
    ++

  15. #15
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Bonjour ^^!

    Merci encore pour les tuyaux, mais j'ai deux problèmes :


    • Le premier est que lorsque je charge un ou plusieurs fichiers, il appartient aux informations données c'est-à-dire, j'ai un formulaire, où je remplis une date, un nom, un lieu, ...., un ou plusieurs pdf, une ou plusieurs image, et autres. Je souhaite que ces fichiers uploadés, se retrouvent avec les informations insérées. Ce serait contraignant s'ils se retrouvent avec d'autres informations. Ici, j'upload mes fichiers et ils s'insèrent automatiquement tous dans un dossier

    • Le deuxième, maintenant, toutes mes autres données de type VARCHAR, INT, ... ne s'enregistrent pas sur PhpMyAdmin


    j'ai essayé comme ça :

    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
    18
    19
    20
    21
     
    require_once 'cnxBDD.php';
     
    $table= 'table'; // Nom de la table à spécifier
     
    $type='type';
    $cote='cote';
    .
    .
    .
    $pdf ='pdf';
     
    $sql = "INSERT INTO $table ('type','cote',...,'pdf') VALUES ('$type','$cote',...,'$pdf')";
     
    try {
    	$req = $bdd->prepare($sql);
    	$req->execute();
    	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
    } catch(Exception $e) {
    	echo '<pre><br>Erreur dans la requete <br/>'.$e->getMessage().'<br/>';
    }
    Rien ne s'enregistre
    et maintenant c'est comme ça, je n'ai que les fichiers à uploader qui s'enregistre dans un dossier, donc, les fichiers sont mélangés, et non triés par formulaire rempli :/ :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     
    require_once 'cnxBDD.php';
     
    $table= 'table'; // Nom de la table à spécifier
     
    $type='type';
    $cote='cote';
    .
    .
    .
    $pdf ='pdf';
     
     
    $sql = "INSERT INTO $table ('type','cote',...,'pdf') VALUES ('$type','$cote',...,'pdf')";
     
    $a_datas = array(':type'=>$type,
    ':cote'=>$cote,
    .
    .
    .
    ':pdf'=>$pdf);
     
    $dossier_pdf = 'pdf/';
    $pdf = basename($_FILES['pdf']['name']);
    $taille_pdf_fichier= 10000000;
    $taille_pdf = filesize($_FILES['pdf']['tmp_name']);
    $extensions_pdf = array('.docx', '.pdf');
    $extension_pdf= strrchr($_FILES['pdf']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension_pdf, $extensions_pdf)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type pdf ou docx...';
    }
    if($taille_pdf>$taille_pdf_fichier)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $pdf= strtr($pdf, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $pdf= preg_replace('/([^.a-z0-9]+)/i', '-', $pdf);
         if(move_uploaded_file($_FILES['pdf']['tmp_name'], $dossier_pdf . $pdf)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès le fichier PDF !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
    try {
    	$req = $bdd->prepare($sql);
    	$req->execute();
    	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
    } catch(Exception $e) {
    	echo '<pre><br>Erreur dans la requete <br/>'.$e->getMessage().'<br/>';
    }
     
    try {
    	$req = $bdd->prepare($sql);
    	$req->execute();
    	$req->execute($a_datas);
     
    	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
    } catch(Exception $e) {
    	echo '<pre><br>Erreur dans la requete <br/>'.$e->getMessage().'<br/>';
    }

    Et je n'ai pas d'erreur ....
    Merci d'avance,

  16. #16
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bonjour.

    • Si tu as besoin de ranger tes fichiers dans des dossiers spécifiques, il faut déjà les créer et puis dans le code qui sert à les copier dans le dossier, il faut simplement spécifier le paramètre $dossier. Ton code doit sélectionner le bon dossier. Ça veut dire aussi que tu dois enregistrer cette information dans ta table si tu veux pouvoir retrouver le fichier par la suite...
    Tu dois récupérer ces informations de ton formulaire avec le tableau $_POST. Par exemple, voici un code pour lister le contenu de ce tableau une fois ton formulaire soumi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<pre>';print_r($_POST);die('</pre>');
    • Concernant l’insertion en base de données, j'ai repris de tête le code que tu as donné sans le tester... mais il y a des erreurs en effet :

    - Important : En fait, il n'y a pas de quotes (apostrophes) pour le nom des colonnes. Eventuellement, on utilise une quote inversée (`) qui permet d'utiliser des noms réservés pour nommer ses colonnes, comme 'type', 'name', 'size' par exemple sont des noms MySQL réservés...

    - A partir de ce qui est dit dans la FAQ concernant PDO : https://php.developpez.com/faq/?page=pdo
    voici ce code d'exemple spécialement pour toi :
    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
    18
    19
    20
    21
    22
    23
    <?php
     
    // Connexion à la base de données
    require_once 'cnxBDD.php';
     
    $table= 'table';
     
    // Remarque l'utilisation du quote inversé et des points d'interrogation pour les valeurs...
    $sql = "INSERT INTO `$table` (`type`,`cote`,`pdf`) VALUES (?, ?, ?)"; 
     
    try {
    	$req = $bdd->prepare($sql);
     
            // Ici, on valorise les paramètres :
    	$req->execute( array($type, $cote, $pdf) );
     
            echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
     
    } catch(Exception $e) {
    	echo '<pre><br>Erreur dans la requete <br/>'.$e->getMessage().'<br/>';
    }
     
    ?>
    Bon courage
    De retour parmis vous après 10 ans!!

  17. #17
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci infiniment pour tous les renseignements, mais n'existe-t-il pas un moyen automatique de créer un dossier pour que chaque fichier uploadé soit classé dans un dossier spécifique?

    Encore merci ^^

  18. #18
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bien sûr que l'on peut, mais il n'y a pas d'intérêt en réalité dans ce cas précis :
    En général, on se moque que tous les fichiers soient dans un même dossier puisque c'est dans la base de données que se trouve les informations associées aux fichiers... Il suffit que le fichier soit nommé avec un nom unique (en général, on utilise une clé md5).

    Par exemple, via la bdd, on peut facilement retrouver une série de fichiers uploadés le même jour, ou un autre jour, ou possédant une même extension, etc. C'est plus rapide pour la recherche que de devoir scruter des dossiers... et c'est justement tout l'intérêt du système!

    Malgré tout, si tu persistes à vouloir créer des dossiers avec PHP : http://php.net/manual/fr/function.mkdir.php
    De retour parmis vous après 10 ans!!

  19. #19
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci encore pour tout !

    Donc si je ne fais pas de dossier spécifique par ligne et que je veux exporter ma bdd en XML, je peux récupérer les fichiers chargés qui correspond à la ligne ?

  20. #20
    Candidat au Club Avatar de tiph3164
    Femme Profil pro
    ingé
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ingé
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 4
    Points
    4
    Par défaut
    Dans mon message qui explique que j'arrive à enregistrer mes fichiers dans des dossiers différents, ça c'est ok. Le code que tu m'as donné n'affiche pas d'erreur, mais je n'arrive pas toujours à enregistrer les données du formulaire. Alors que si j'utilise le code suivant, j'arrive à enregistrer les données du formulaire mais si je rajoute le code pour enregistrer les fichiers pdf, jpeg .... rien ne s'enregistre sauf les fichiers :
    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
    18
    19
    20
    21
     
     
    require_once 'cnxBDD.php';
    $type=isset($_POST['type']) ? $_POST['type']:'';
    $sql="INSERT INTO table1  (type,...) VALUES(:type,...)";
     
    $a_datas = array(':type'=>$type,...);
     
    try {
    	$req=$bdd->prepare($sql);
    	$req->execute($a_datas);
     
     
    	echo 'Vous avez bien ajout&eacute; vos donn&eacute;es ! ';
    } catch(Exception $e) {
    	//en cas d'erreur dans la requete ::
    	echo "<pre><br>Erreur dans la requete <br>" . $e -> getMessage() . "<br>";
    	echo "datas:<br>";
    	print_r($a_datas);
    	echo "</pre>";
    }
    Encore merci,

Discussions similaires

  1. [Stage] 2-3moi Développeur en PHP/SQL/HTML/CSS/JavaScript/Java/AS3
    Par Ckpierre dans le forum Demandes
    Réponses: 0
    Dernier message: 29/06/2011, 11h41
  2. Plusieurs fichiers php.ini
    Par michelw dans le forum Apache
    Réponses: 2
    Dernier message: 11/10/2009, 15h31
  3. Submit sur plusieurs formulaires PHP et HTML
    Par Gareth dans le forum Langage
    Réponses: 7
    Dernier message: 26/05/2009, 12h09
  4. Convertir plusieurs fichiers word en html
    Par Srh00 dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2008, 16h28
  5. [Wamp] Plusieurs fichiers php.ini
    Par adel.87 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/03/2008, 19h56

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