par
Cyrano » 08 sept. 2005, 20:20
La condition de ton premier if() est bizarre, je te l'ai fait remarqué mais tu ne sembles pas avoir remarqué la bizarrerie: tu testes si le poinds du fichier envoyé est bien nul ; Pourquoi ne testes-tu pas tout simplement l'existence du fichier comme sur la ligne qui initialise la variable $filename ?
Ensuite, l'utilisation de mysql_free_result() est complètement inutile:
Il est important de noter que la fonction mysql_query() retourne uniquement une ressource pour les requêtes SELECT, SHOW, EXPLAIN et DESCRIBE.
Enfin, je commence à soupçonner autre chose: dans ton formulaire, as-tu mis un attribut
enctype dans la balise <form> ?
Petites modifications suggérées :
<?php
require_once('../Connections/imprime.php');
if (isset($test))
{
mysql_free_result($test);
}
if (isset($result2))
{
mysql_free_result($result2);
}
$file_name = isset($_FILES['file_name']['name']) ? $_FILES['file_name']['name'] : "none";
echo $file_name;
echo("<pre>");
var_dump($_FILES);
echo("</pre>");
if ($file_name == "none")
{
$Id = $_GET['id'];
$titre = $_POST['titre'];
$descriptif = $_POST['descriptif'];
echo $Id . "<br>\n" . $titre . "<br>\n" . $descriptif ;
mysql_select_db($database_imprime, $imprime);
$sql = "UPDATE `document` SET `Nomdoc`='". $file_name ."', `Titredoc`='". $titre ."', `Descriptifdoc`='". $descriptif ."'";
$sql.= " WHERE `Iddoc`='". $Id ."'";
$test = mysql_query($sql);
echo("Partie if() : ". $sql);
}
// ELSE DU PREMIER TEST
else
{
//Récupération du chemin pour la copie du fichier et des données pour l'enregistrement dans la base de donnée
$chemin=" ";
$query2 = "SELECT Valeur FROM imprime.param WHERE Donnee='chemin'";
$result2 = mysql_query($query2);
$resultchemin = mysql_fetch_array($result2);
$chemin = $resultchemin[0];
$Id = $_GET['id'];
$titre = $_POST['titre'];
$descriptif = $_POST['descriptif'];
echo $Id . "<br>\n" . $titre . "<br>\n" . $descriptif ;
$file_terminaison = substr($file_name,strlen($file_name)-3);
if ($file_terminaison=="txt" or $file_terminaison=="pdf" or $file_terminaison=="doc")
{
/* indiquer $dest_file qui correspond au répertoire de destination */
$dest_file = $chemin . $file_name;
/* enlève un "" */
$source_file=$_FILES['file_name']['tmp_name'];
/* copie du fichier */
$res_copy=copy($source_file , $dest_file);
}
else
{
print "Sélectionner un fichier au format texte.";
}
//Enregistrement dans la base
if (isset ($_POST['Nomdoc']) && isset ($_POST['titre']) && isset ($_POST['descriptif']))
{
$nomdoc = $_FILES['file_name']['name'];
$sql = "UPDATE `document` SET `Nomdoc`='". $nomdoc ."', `Titredoc`='". $titre ."', `Descriptifdoc`='". $descriptif ."'";
$sql.= " WHERE `Iddoc`='". $Id ."'";
$test = mysql_query($sql);
echo("Partie else() : ". $sql);
echo("<pre>");
var_dump($_FILES);
echo("</pre>");
/* Ici le mysql_result se justifie mais pour la requête SELECT, pas pour UPDATE */
mysql_free_result($result2);
}
}
?>
<html>
<head>
<title></title>
<!--<META HTTP-EQUIV="Refresh" CONTENT="2; URL= ../maj_lien.php"> -->
</head>
<body background="../Images/PINELUMB.JPG">
<h2 align="center" style="color:#009900">Votre document a été modifié</h2>
</body>
</html>
La condition de ton premier if() est bizarre, je te l'ai fait remarqué mais tu ne sembles pas avoir remarqué la bizarrerie: tu testes si le poinds du fichier envoyé est bien nul ; Pourquoi ne testes-tu pas tout simplement l'existence du fichier comme sur la ligne qui initialise la variable $filename ?
Ensuite, l'utilisation de mysql_free_result() est complètement inutile:
[quote="Manuel PHP"]Il est important de noter que la fonction mysql_query() retourne uniquement une ressource pour les requêtes SELECT, SHOW, EXPLAIN et DESCRIBE.[/quote]
Enfin, je commence à soupçonner autre chose: dans ton formulaire, as-tu mis un attribut [b]enctype[/b] dans la balise <form> ?
Petites modifications suggérées :
[php]<?php
require_once('../Connections/imprime.php');
if (isset($test))
{
mysql_free_result($test);
}
if (isset($result2))
{
mysql_free_result($result2);
}
$file_name = isset($_FILES['file_name']['name']) ? $_FILES['file_name']['name'] : "none";
echo $file_name;
echo("<pre>");
var_dump($_FILES);
echo("</pre>");
if ($file_name == "none")
{
$Id = $_GET['id'];
$titre = $_POST['titre'];
$descriptif = $_POST['descriptif'];
echo $Id . "<br>\n" . $titre . "<br>\n" . $descriptif ;
mysql_select_db($database_imprime, $imprime);
$sql = "UPDATE `document` SET `Nomdoc`='". $file_name ."', `Titredoc`='". $titre ."', `Descriptifdoc`='". $descriptif ."'";
$sql.= " WHERE `Iddoc`='". $Id ."'";
$test = mysql_query($sql);
echo("Partie if() : ". $sql);
}
// ELSE DU PREMIER TEST
else
{
//Récupération du chemin pour la copie du fichier et des données pour l'enregistrement dans la base de donnée
$chemin=" ";
$query2 = "SELECT Valeur FROM imprime.param WHERE Donnee='chemin'";
$result2 = mysql_query($query2);
$resultchemin = mysql_fetch_array($result2);
$chemin = $resultchemin[0];
$Id = $_GET['id'];
$titre = $_POST['titre'];
$descriptif = $_POST['descriptif'];
echo $Id . "<br>\n" . $titre . "<br>\n" . $descriptif ;
$file_terminaison = substr($file_name,strlen($file_name)-3);
if ($file_terminaison=="txt" or $file_terminaison=="pdf" or $file_terminaison=="doc")
{
/* indiquer $dest_file qui correspond au répertoire de destination */
$dest_file = $chemin . $file_name;
/* enlève un "" */
$source_file=$_FILES['file_name']['tmp_name'];
/* copie du fichier */
$res_copy=copy($source_file , $dest_file);
}
else
{
print "Sélectionner un fichier au format texte.";
}
//Enregistrement dans la base
if (isset ($_POST['Nomdoc']) && isset ($_POST['titre']) && isset ($_POST['descriptif']))
{
$nomdoc = $_FILES['file_name']['name'];
$sql = "UPDATE `document` SET `Nomdoc`='". $nomdoc ."', `Titredoc`='". $titre ."', `Descriptifdoc`='". $descriptif ."'";
$sql.= " WHERE `Iddoc`='". $Id ."'";
$test = mysql_query($sql);
echo("Partie else() : ". $sql);
echo("<pre>");
var_dump($_FILES);
echo("</pre>");
/* Ici le mysql_result se justifie mais pour la requête SELECT, pas pour UPDATE */
mysql_free_result($result2);
}
}
?>
<html>
<head>
<title></title>
<!--<META HTTP-EQUIV="Refresh" CONTENT="2; URL= ../maj_lien.php"> -->
</head>
<body background="../Images/PINELUMB.JPG">
<h2 align="center" style="color:#009900">Votre document a été modifié</h2>
</body>
</html>[/php]