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

Langage PHP Discussion :

Upload de fichiers et enregistrement dans la base de données


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 27
    Points : 14
    Points
    14
    Par défaut Upload de fichiers et enregistrement dans la base de données
    Bonsoir tout le monde !

    J'ai un gros problème, Je souhaite enregistrer dans ma base de données informations sur un document (fichier) et l’uploader dans un dossier tout en enregistrant dans cette base le chemin du fichier (dans la même table contenant les informations du fichier). Les problèmes que je rencontre sont soit que :
    - j’arrive à enregistrer dans la base le chemin et uploader dans le dossier, mais les informations du fichier ne sont pas insérées.
    - j’enregistre une ligne correcte mais l’upload ne se fait pas.
    - j’insère les toutes les informations mais dans des lignes différentes du fichier.
    Le code de l’upload est un code que j’ai trouvé quelque part, et qui marche très bien tout seul. C’est quand que je l’insère dans mon formulaire me créé des problèmes.
    Je pense que cela est dit à l’attribut action="document.php " dans mon formulaire.
    Voilà le code l’upload (je n'ai pas voulu copié le code du formulaire car je le trouve trop long.. dois le faire?):
    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
     
    table width="200" border="0" cellspacing="2" cellpadding="3">
     
     <tr>
     <form method="post"  enctype="multipart/form-data" action="Modifier.php">
     
         <label for="fichier">Fichier (Tous formats | max. 1Mo):</label><br />
         <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
         <input type="file" name="fichier" id="fichier" /><br />
     
          </tr>
     
         <input type="submit" name="upload" value="upload" />
    </form>
     
      <?php
     
    if( isset($_POST['upload']) ) // si formulaire soumis
    {
        $content_dir = "./doc/"; // dossier où sera déplacé le fichier
     
        $tmp_file = $_FILES['fichier']['tmp_name'];
     
        if( !is_uploaded_file($tmp_file) )
        {
            exit("Le fichier est introuvable");
        }
     
        // on copie le fichier dans le dossier de destination
        $name_file = $_FILES['fichier']['name'];
     
        if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
        {
            exit("Impossible de copier le fichier dans $content_dir");
        }
    else{
        echo "Le fichier est enregistr&eacute;";
    	}
    }
     
    ?>
    et voila le code qui traite l'ajout dans la base ( dans document.php :
    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
     
    <?php
    session_start();
    include('DBinfo.php');
    $link = mysqli_connect($host,$user,$pass,$dbname);
    if (!$link) {
    die('Could not connect: ' . mysqli_error($link));
    }
     
    mysqli_query($link,"SET NAMES UTF8");
             $v_titre=addslashes($_POST["titre"]);
             $v_keyword = addslashes($_POST["keyword"]);
             $v_fait_par = addslashes($_POST["fait_par"]);
             $v_desc= addslashes($_POST["description"]);
             /*$v_nom_type_doc=addslashes($_POST["type"]);*/
             $jour=$_POST["day"];
             $mois=$_POST["month"];
             $annee=$_POST["year"];
    		 $chemin= addslashes($_POST["fichier"]);
     
     
    		/*$v_id_type= "SELECT type_doc_id from typedoc WHERE typedoc.type_doc_nom = '$v_nom_type'";*/
            $query = "INSERT INTO document  VALUES ('','$v_titre','$v_keyword','$v_fait_par', '$annee-$mois-$jour', '$v_desc', '1' ,'$chemin')";		 
    		$res1 = mysqli_query($link,$query);
     
     
    	 ?>

    Si quelqu’un pourrait m’aider je lui serais reconnaissante.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 194
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    il serait intéressant que l'on puisse voir ta ligne qui permet de passer les infos à document.php.
    Pourquoi ne met tu pas ton code d'enregistrement dans la base avec ton code d'upload.

    pour l'insertion fait plutot comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "INSERT INTO document  VALUES (\"\",\"$v_titre\",\"$v_keyword\",\"$v_fait_par\", \"$annee-$mois-$jour\", \"$v_desc\", \"1\" ,\"$chemin\")";

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Oui d'accord
    voila ma page modifier.php

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    <?php session_start();
    include('DBinfo.php');
    $link = mysqli_connect($host,$user,$pass,$dbname);
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Consulter</title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <link href="http://localhost/LaGED/styles.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
     
    <!-- Header -->
    <?php include("includes/menu.php"); ?>
     
     
     
     
    <!-- start page -->
    <div id="page">
    	<!-- start content -->
    	<div id="content">
    			<h1 class="title" >Ajout d'un Document :</h1>
    <form id="monForm" action="document.php" method="post">
     
     
     
    		<fieldset>
            <legend>Documents</legend>
            <p>
                <label for="form_titre">Titre du document: </label>
                <input type="text" id="form_titre" name="titre" />
            </p>
     
            <p>
                <label for="form_Acronyme">Keyword : </label>
                <input type="text" id="form_keyword" name="keyword" />
            </p>
     
    		<p>
                <label for="form_edition">Fait par : </label>
                <input type="text" id="form_fait_par" name="fait_par" />
            </p>
     
    		<p>
                <label for="form_type">Type : </label>
    			<select title="- Choisir -" name="type" id="mm3" class="form_select_mois" >
    					<option value="" SELECTED >---- Choisissez ----</option>
                        <?php
                        include('DBinfo.php');
                        $link = mysqli_connect($host,$user,$pass,$dbname);
                        if (!$link) {
                        die('Could not connect: ' . mysqli_error($link));
                                    }
                        $sql="select DISTINCT type_doc_nom from typedoc";
                        $result=mysqli_query($link,$sql);
                        while($type=mysqli_fetch_assoc($result)){
                            echo '<option value="',htmlentities($type["type_doc_nom"]),'">',htmlentities($type["type_doc_nom"]),'</option>';
                        }
     
                        ?>
                </select>
     
     
     
            <p>
                <label for="form_datedebut">Date de cr&eacute;ation : </label>
                <input type="text"  id="form_datedebut" class="dates" name="day" value="JJ"/>
    			<select title="- Choisir -" name="month" id="mm" class="dates" >
                                  <option value="" SELECTED >---- Choisissez ----</option>
                                  <option value="01" >Janvier</option>
                                  <option value="02"  >Février</option>
                                  <option value="03"  >Mars</option>
                                  <option value="04"  >Avril</option>
                                  <option value="05"  >Mai</option>
                                  <option value="06"  >Juin</option>
                                  <option value="07"  >Juillet</option>
                                  <option value="08"  >Août</option>
                                  <option value="09"  >Septembre</option>
                                  <option value="10"  >Octobre</option>
                                  <option value="11"  >Novembre</option>
                                  <option value="12"  >Décembre</option>
                                  </select>
                <input type="text" class="dates" name="year" value="AAAA"/>
            </p>
    		<p>
    		<label for="form_description">D&eacute;scription :  </label>
    		<textarea name="description" id="form_description" rows="10" cols="49" ></textarea>
    		</p>
     
     </fieldset>
     
     
    	<p>
            <label class="form_label_nostyle">&nbsp;</label>
            <input type="submit" name="submit"/>
            <input type="reset" name="del" />
        </p>
     
    	</form>
        </center>    	
     
     
    </div>
    </body>
    </html>
    qui envoie a document.php

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    <?php
    session_start();
    include('DBinfo.php');
    $link = mysqli_connect($host,$user,$pass,$dbname);
    if (!$link) {
    die('Could not connect: ' . mysqli_error($link));
    }
     
    if( isset($_POST['submit']) ){
    		 mysqli_query($link,"SET NAMES UTF8");
             $v_titre=addslashes($_POST["titre"]);
             $v_keyword = addslashes($_POST["keyword"]);
             $v_fait_par = addslashes($_POST["fait_par"]);
             $v_desc= addslashes($_POST["description"]);
             /*$v_nom_type_doc=addslashes($_POST["type"]);*/
             $jour=$_POST["day"];
             $mois=$_POST["month"];
             $annee=$_POST["year"];
    		 //$chemin= addslashes($_POST["fichier"]);
     
    		 $query = "INSERT INTO document  VALUES (\"\",\"$v_titre\",\"$v_keyword\",\"$v_fait_par\", \"$annee-$mois-$jour\", \"$v_desc\", \"1\" ,\"$chemin\")";
     
     
    		$res1 = mysqli_query($link,$query);
     
     
     
    }
     
    //header('location: Modifier.php');
     
    		 ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Consulter</title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <link href="http://localhost/LaGED/styles.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
     
    <!-- Header -->
    <?php include("includes/menu.php"); ?>
     
     
     
     
    <!-- start page -->
    <div id="page">
    	<!-- start content -->
    	<div id="content">
    			<h1 class="title" >Ajout d'un Document :</h1>
     
     <form id ="monForm" method="post"  enctype="multipart/form-data" action="document.php">
     
    		<fieldset>
            <legend>Emplacement du Document : </legend>
            <p>
                <label for="fichier">Fichier (Tous formats | max. 1Mo):</label><br />
    			<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
    			<input type="file" name="fichier" id="fichier" /><br />
            </p>
    		<p>     
    			<input type="submit" name="upload" value="upload" />
    		</p>
    		<p>
    		<?echo shit;?>
    		</p>
     
    </form>
     
      <?php
     
     
    if( isset($_POST['upload']) ) // si formulaire soumis
    {
        $content_dir = "./doc/"; // dossier où sera déplacé le fichier
     
        $tmp_file = $_FILES['fichier']['tmp_name'];
     
        if( !is_uploaded_file($tmp_file) )
        {
            exit("Le fichier est introuvable");
        }
     
        // on copie le fichier dans le dossier de destination
        $name_file = $_FILES['fichier']['name'];
     
        if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
        {
            exit("Impossible de copier le fichier dans $content_dir");
        }
    else{
        $query = "INSERT INTO document  VALUES ('','','','', '', '', '1' ,'$name_file'); ";	
    	/*UPDATE document SET   document.piece_jointe ='$name_file' WHERE document.doc_titre = '$v_titre*/	
    	$res1 = mysqli_query($link,$query);
    	echo "Le fichier est enregistr&eacute;"."  --  ";
    	echo "$name_file  ".$name_file."  --  ";
    	echo "tmp_file  ".$tmp_file;
    	}
    }
    //header('location: Modifier.php');
    ?>   
     
     
    </div>
    </body>
    </html>

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    Mais dans ces deux j'ai séparé les formulaires dans deux pages en mettant celle d'upload dans document.php
    Avant il se trouvait dans la meme page

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    excuse moi mais dans document.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "UPDATE document SET   document.piece_jointe ='$name_file' WHERE document.doc_titre = '$v_titre; ";
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO document  VALUES ('','','','', '', '', '1' ,'$name_file'); ";
    Vraiment désolé

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/10/2012, 13h49
  2. Réponses: 3
    Dernier message: 13/08/2009, 00h44
  3. enregistrer dans une base de données
    Par liverbird dans le forum C++Builder
    Réponses: 33
    Dernier message: 12/07/2006, 19h50
  4. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 16h32
  5. inscription via le web et enregistrement dans une base de données
    Par titoenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 17/05/2006, 09h20

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