php upload pour insérer le nom d'une image dans une table

Eléphanteau du PHP | 33 Messages

12 févr. 2013, 19:31

Bonjour,

J'essai d'utiliser l'extension php upload pour insérer le nom d'une image dans une table (le chargement de l'image fonctionne bien) mais apparamment cela fonctionne bien moins bien qu'avec du texte et d'autres données. Sauriez-vous quelle est la marche à suivre sachant que cette erreur s'affiche par-ce-que j'ai modifié le php.ini afin qu'il me retourne ce qui ne va pas. Dans un formulaire complet, tout fonctionne mis à part la récupération de la valeur de ce input file. Merci de votre aide.


Message d'ereur:

Column 'news_image' cannot be null

Comme si mon input file était "vide" (ce qui n'est pas le cas)

Eléphant du PHP | 229 Messages

12 févr. 2013, 20:13

Bonsoir,

Ton image se trouve où ?

Eléphanteau du PHP | 33 Messages

13 févr. 2013, 17:53

Je la télécharge sur mon disque dur et elle se charge bien dans mon dossier d'upload:

<?php
// ---------------------------------------------
// Pure PHP Upload version 1.1
// -------------------------------------------
if (phpversion() > "4.0.6") {
$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",300000);
define("DESTINATION_FOLDER", "../upload");
define("no_error", "index.php");
define("yes_error", "erreur_img.php");
$_accepted_extensions_ = "jpg,bmp,gif,jpeg,png";
if(strlen($_accepted_extensions_) > 0){
$_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
$_accepted_extensions_ = array();
}
$_file_ = $HTTP_POST_FILES['news_image'];
if(is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['news_image']['error'] == 0){
$errStr = "";
$news_image = $_POST['news_image'];
if((is_uploaded_file($_file_['tmp_name']) && $HTTP_POST_FILES['news_image']['error'] == 0)){
$_name_ = $_file_['name'];
$_type_ = $_file_['type'];
$_tmp_name_ = $_file_['tmp_name'];
$_size_ = $_file_['size'];
if($_size_ > MAX_SIZE && MAX_SIZE > 0){
$errStr = "Fichier trop lourd";
}
$_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 de destination non valide";
}
if(empty($errStr)){
if(@copy($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)){
header("Location: " . no_error);
} else {
header("Location: " . yes_error);
}
} else {
header("Location: " . yes_error);
}
}
?>
<?php require_once('../Connections/ma_connexion.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$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;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "news_envoi")) {
$insertSQL = sprintf("INSERT INTO news (news_titre, news_image, news_texte, news_lien, news_etat) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['news_titre'], "text"),
GetSQLValueString($_POST['_name_'], "text"),
GetSQLValueString($_POST['news_texte'], "text"),
GetSQLValueString($_POST['news_lien'], "text"),
GetSQLValueString(isset($_POST['news_etat']) ? "true" : "", "defined","1","0"));
mysql_select_db($database_ma_connexion, $ma_connexion);
$Result1 = mysql_query($insertSQL, $ma_connexion) or die(mysql_error());

$insertGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
}
mysql_select_db($database_ma_connexion, $ma_connexion);
$query_news = "SELECT * FROM news ORDER BY news_date DESC";
$news = mysql_query($query_news, $ma_connexion) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);
$totalRows_news = mysql_num_rows($news);
?>

Seul le chargement de l'image fonctionne.

Eléphant du PHP | 229 Messages

14 févr. 2013, 08:05

Quand tu uplpoad un fichier son nom est passé dans la variable de $_FILES[name_input][name], après il ne te reste à le traiter et l'insérer dans ta table.
Bon codage.

Eléphanteau du PHP | 33 Messages

14 févr. 2013, 12:37

Ok merci beaucoup