Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2011, 00h01   #1
Invité de passage
 
Mouna
Inscription : septembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Mouna

Informations forums :
Inscription : septembre 2010
Messages : 17
Points : 2
Points : 2
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 :
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 :
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.
nemo89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h03   #2
Membre habitué
 
Homme
Développeur Web
Inscription : mars 2007
Messages : 112
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 : 112
Points : 110
Points : 110
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 :
1
2
 
$query = "INSERT INTO document  VALUES (\"\",\"$v_titre\",\"$v_keyword\",\"$v_fait_par\", \"$annee-$mois-$jour\", \"$v_desc\", \"1\" ,\"$chemin\")";
yasen77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h08   #3
Invité de passage
 
Mouna
Inscription : septembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Mouna

Informations forums :
Inscription : septembre 2010
Messages : 17
Points : 2
Points : 2
Oui d'accord
voila ma page modifier.php

Code :
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 :
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>
nemo89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h11   #4
Invité de passage
 
Mouna
Inscription : septembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Mouna

Informations forums :
Inscription : septembre 2010
Messages : 17
Points : 2
Points : 2
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
nemo89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h21   #5
Invité de passage
 
Mouna
Inscription : septembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Mouna

Informations forums :
Inscription : septembre 2010
Messages : 17
Points : 2
Points : 2
excuse moi mais dans document.php

Code :
1
2
 
$query = "UPDATE document SET   document.piece_jointe ='$name_file' WHERE document.doc_titre = '$v_titre; ";
et non

Code :
$query = "INSERT INTO document  VALUES ('','','','', '', '', '1' ,'$name_file'); ";
Vraiment désolé
nemo89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h25.


 
 
 
 
Partenaires

Hébergement Web