Aller au contenu

Upload fichier + insertion donnée + modif apres insertion


Sujets conseillés

Posté

Bonjour,

je fais un upload de fichier et en meme temps j'insere des données de champs de formulaires dans la table.

ceci concerne une liste de course de ski avec nom, date et type de course, plus le fichier resultat.

donc ce cote la fonctionne SAUF si je ne mets pas de fichier a telecharger, or je voudrais que si la personne ne rentre pas le fichier, les autres données soient quand meme inserer dans la table.

Voici le code de la partie qui fonctionne :

fichier "ajout_course.php"

<?php require_once('../Connections/ma_connexion.php'); ?>
<?php
// ---------------------------------------------
// Pure PHP Upload version 1.1
// -------------------------------------------
if (phpversion() > "4.0.6") {
$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",300000);
define("DESTINATION_FOLDER", "../courses");
define("no_error", "search_course.php");
define("yes_error", "error_actu.php");
$_accepted_extensions_ = "pdf";
if(strlen($_accepted_extensions_) > 0){
$_accepted_extensions_ = _AT_explode(",",$_accepted_extensions_);
} else {
$_accepted_extensions_ = array();
}
$_file_ = @$HTTP_POST_FILES['file_course']; /* le fichier pdf des resultats de la course */

if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['file_course']['error'] == 0){
$errStr = "";
$nom_course = $_POST['type_course']; /* le type de la course */
$nom_course = $_POST['nom_course']; /* le nom de la course */
$date_course = $_POST['date_course']; /* la date de la course */
$_name_ = $_file_['name'];
$_type_ = $_file_['type'];
$_tmp_name_ = $_file_['tmp_name'];
$_size_ = $_file_['size'];
if($_size_ > MAX_SIZE && MAX_SIZE > 0){
$errStr = "Fichier trop volumineux";
}
$_ext_ = explode(".", $_name_);
$_ext_ = strtolower($_ext_[count($_ext_)-1]);
if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
$errStr = "Extension non valide";
}
if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
$errStr = "Dossier non valide";
}
if(empty($errStr)){
if(@move_uploaded_file($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)){
header("Location: " . no_error);
mysql_select_db($database_ma_connexion, $ma_connexion);
$insertSQL = "INSERT INTO course_tb (type_course, nom_course, date_course, file_course) VALUES ('$type_course', '$nom_course', '$date_course', '$_name_')";
mysql_query($insertSQL, $ma_connexion) or die(mysql_error());
} else
{ header("Location: " . yes_error);}
} else
{header("Location: " . yes_error);}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Ajouter une course </title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<div align="left">
<table align="center">
<tr>
<td align="right" nowrap="nowrap"> </td>
<td><input type="hidden" name="id" value="" size="32" /></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td align="right" nowrap="nowrap">Type de course :</td>
<td>
<label>
<select name="type_course" id="type_course" >
<option value="FLECHE">FLECHE</option>
<option value="CHAMOIS">CHAMOIS</option>
<option value="BOARDERCROSS">BOARDERCROSS</option>
</select>
</label></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td align="right" nowrap="nowrap">Nom :</td>
<td><input type="text" name="nom_course" value="" size="32" /></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td align="right" nowrap="nowrap">Date :</td>
<td><input type="text" name="date_course" value="" size="32" /></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td align="right" nowrap="nowrap">Fichier pdf :</td>
<td><input type="file" name="file_course" value="" size="32" /></td>
<td><div align="left"></div></td>
</tr>
<tr>
<td nowrap="nowrap" align="right"> </td>
<td><input type="submit" value="Insérer la course" /></td>
<td> </td>
</tr>
</table>
</div>
</form>
</body>
</html>

premier probleme : je ne veux pas que l'upload soit obligatoire

j'ai fait plusieurs essais pour faire en sorte que si le fichier a uploader n'est pas renseigné , les autres données soient quand meme insérées.

Or rien n'a fonctionne donc ce n'est pas la peine que je donne les codes !

que puis je faire a ce stade ?

je me rends compte que le fait d'utiliser Dreamweaver Bdd, avec son interface puis d'essayer de rentrer apres dans le code, c'est un peu galere...mais je ne maitrise pas assez le php/mysql.

mon deuxieme probleme concerne la modification d'un enregistrement toujours le meme, la course de ski.

J'utilise l'assistant d'enregistrement de Dreamweaver pour cela.

Or je souhaite faire la meme chose mais avec cette table qui a un fichier uploadé, donc dans le formulaire de modification, il va y avoir aussi un champ de type "file". Je voudrais qu'on puisse modifier les champs mais aussi le fichier telechargé.

J'ai essaye d'utiliser le meme code de PHP upload avec en plus la recup des données et leur modif, voici ce que ca donne mais ca ne marche pas !! je veux que les données soient modifiees et pas inserer de nouveau !!

je mets le code car je suis interessée de voir ce qui ne va pas.

<?php require_once('../Connections/ma_connexion.php'); ?>
<?php
//attention : celui ne change pas la course, il rajoute la course
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
// ---------------------------------------------
// Pure PHP Upload version 1.1
// -------------------------------------------
if (phpversion() > "4.0.6") {
$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",300000);
define("DESTINATION_FOLDER", "../courses");
define("no_error", "search_course.php");
define("yes_error", "error_actu.php");
$_accepted_extensions_ = "pdf";
if(strlen($_accepted_extensions_) > 0){
$_accepted_extensions_ = _AT_explode(",",$_accepted_extensions_);
} else {
$_accepted_extensions_ = array();
}
$_file_ = @$HTTP_POST_FILES['file_course'];

if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['file_course']['error'] == 0){
$errStr = "";
$_name_ = $_file_['name'];
$_type_ = $_file_['type'];
$_tmp_name_ = $_file_['tmp_name'];
$_size_ = $_file_['size'];
if($_size_ > MAX_SIZE && MAX_SIZE > 0){
$errStr = "Fichier trop volumineux";
}
$_ext_ = explode(".", $_name_);
$_ext_ = strtolower($_ext_[count($_ext_)-1]);
if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
$errStr = "Extension non valide";
}
if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
$errStr = "Dossier non valide";
}
if(empty($errStr)){
if(@move_uploaded_file($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)){
header("Location: " . no_error);
mysql_select_db($database_ma_connexion, $ma_connexion);
$updateSQL = sprintf("UPDATE course_tb SET type_course=%s, nom_course=%s, date_course=%s, file_course=%s WHERE id=%s",
GetSQLValueString($_POST['type_course'], "text"),
GetSQLValueString($_POST['nom_course'], "text"),
GetSQLValueString($_POST['date_course'], "text"),
GetSQLValueString($_POST['file_course'], "text"),
GetSQLValueString($colname_R_modif, "int"));

mysql_query($updateSQL, $ma_connexion) or die(mysql_error());
} else
{ header("Location: " . yes_error);}
} else
{header("Location: " . yes_error);}
}
$colname_R_modif = "-1";
if (isset($_GET['var_modif'])) {
$colname_R_modif = $_GET['var_modif'];

$query_R_modif = sprintf("SELECT * FROM course_tb WHERE id = %s", GetSQLValueString($colname_R_modif, "int"));
$R_modif = mysql_query($query_R_modif, $ma_connexion) or die(mysql_error());
$row_R_modif = mysql_fetch_assoc($R_modif);
$totalRows_R_modif = mysql_num_rows($R_modif);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ESF 1400 - Modifier une course</title>
</head>

<body>
<div align="left">Modifier la course sélectionnée<br />
</div>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table align="left">
<tr valign="baseline">
<td align="right" nowrap="nowrap"><div align="left">Id:</div></td>
<td class="text-noir"><?php echo $row_R_modif['id']; ?></td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"><div align="left">Type de course :</div></td>
<td class="text-noir"><select name="type_course" class="text-noir" id="type_course" >
<option value="<?php echo htmlentities($row_R_modif['type_course'], ENT_COMPAT, 'utf-8'); ?>"><?php echo htmlentities($row_R_modif['type_course'], ENT_COMPAT, 'utf-8'); ?></option>
<option value="FLECHE">FLECHE</option>
<option value="CHAMOIS">CHAMOIS</option>
<option value="ETOILE_OR">ETOILE_OR</option>
<option value="ETOILE_BRONZE">ETOILE_BRONZE</option>
<option value="BOARDERCROSS">BOARDERCROSS</option>
<option value="AUTRE">AUTRE</option>
</select></td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"><div align="left">Nom de la course :</div></td>
<td class="text-noir"><input type="text" name="nom_course" value="<?php echo htmlentities($row_R_modif['nom_course'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"><div align="left">Date de la course :</div></td>
<td class="text-noir"><input type="text" name="date_course" value="<?php echo htmlentities($row_R_modif['date_course'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"><div align="left">Fichier pdf de la course :</div></td>
<td class="text-noir"><input type="file" name="file_course" value="<?php echo htmlentities($row_R_modif['file_course'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"> </td>
<td class="text-noir"> </td>
</tr>
<tr valign="baseline">
<td align="right" nowrap="nowrap"> </td>
<td class="text-noir"><input type="submit" class="bouton" value="Mettre à jour la course" /></td>
</tr>
</table>
<input type="hidden" name="MM_update" value="form1" />
<input type="hidden" name="id" value="<?php echo $row_R_modif['id']; ?>" />
</form>
</body>
</html>
<?php
mysql_free_result($R_modif);
?>

merci de votre aide

sand

Posté

C'est ton is_uploaded_file($_file_['tmp_name']) qui bloque l'enregistrement des autres données.

=> supprime le de ta condition et met le juste avant le move_uploaded_file

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...