我正在创建一个程序,其中一个人可以插入任何带有Image的产品。我面临的问题是,如果我输入产品详细信息,如果单击提交按钮而没有上传图像,则会插入记录。
如果用户没有上传任何图像,我希望它不插入记录。简而言之,我也想在图像上使用验证。我使用(isset)产品字段,但当我使用(isset)与Image时,它给我以下错误消息,如果我只是删除isset($ _ POST ['files []'])它工作得很好,但它停止验证图像字段。
我在这里分享代码。守则相当冗长。任何帮助,将不胜感激。
Plesae填满所有领域 silverbrooches.jpg
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法 ''silverbrooches.jpg'附近, 'upload / products / 32046silverbrooches.jpg')'在第2行 Gold_Ring2.png您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法 靠近''Gold_Ring2.png','upload / products / 207Gold_Ring2.png')'在第2行左右 Necklaces_Diamond.png
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法 ''Necklaces_Diamond.png'附近, 'upload / products / 6748Necklaces_Diamond.png')'第2行
<?php
//Use Category_id insted of Sub_category_id
session_start();
if (isset ($_SESSION['username']) )
{
//echo "<div id='nav'";
echo "<ul><hr>
<li><a href='insert_product.php' >Add Product </a></li>
<li><a href='add_category.php'> Add Category </a></li>
<li><a href='add_sub_category.php'> Add Sub-Category </a></li>
<li><a href = 'view_products.php' >View All Products</a> </li>
<li><a href = 'all_categories.php' >View All Categories</a> </li>
<li><a href='view_all_sub_categories.php'>View All Sub Categories</a></li>
</ul></hr>";
error_reporting(E_PARSE); //To Remove Notices!!
global $current_id;
//$GLOBALS $current_id;
if(isset($_SESSION['username']))
{
include 'connect.php';
// $select_query= 'Select * from category';
// $select_query_run = mysql_query($select_query);
echo "<div id='line' >
<div id='form'>";
echo "
<form action='insert_product.php' method='POST' enctype='multipart/form-data' >
<table border=1>
<tr>
<td>
<label>Product Name:</label> </td> <td><input type='text' name='product_name' />*Required</td></tr>
<tr><td><label>Item No:</label></td> <td><input type='text' name='item_no' ></td></tr>
<tr><td>Recipient </td> <td> <input type='text' name='recipient' ></td></tr>
<tr><td> Total Carat Weight</td> <td><input type='text' name= 'total_carat_weight' ></td></tr>
<tr><td> Metal </td><td><input type='text' name='metal' ></td></tr>
<tr><td> Stone Shape </td><td><input type='text' name='stone_shape' ></td></tr>
<tr><td> Stone Type</td><td> <input type='text' name='stone_type'></td></tr>
<tr><td> Stone Setting</td><td> <input type='text' name='stone_setting'></td></tr>
<tr><td> Wastage </td><td><input type='text' name='wastage'></td></tr></br></br>
<tr><td> Retail_price </td><td><input type='text' name='retail_price' ></td></tr>
<tr><td> Actual Price: </td><td> <input type= 'text' name= 'price' /></td></tr>*Required
<tr><td> Description:</td><td><input type='text' name='description' /></td></tr>
<tr><td> Image1:</td><td> <input type='file' name= 'files[]' ></td></tr> *Required
<tr><td> Image2:</td><td> <input type='file' name= 'files[]' ></td></tr>
<tr><td> Image3:</td><td> <input type='file' name= 'files[]' ></td></tr></table> ";
/*------------------
Drop Down List Start
------------------ */
/*----------------
Drop Down List
---------------*/
echo "<select name='category'>";
$select_query= 'Select * from category';
$select_query_run = mysql_query($select_query);
$sub_category_query="Select * from sub_categories
where category_id='".$select_query_array['category_id']."'";
// $sub_category_query="Select * from sub_categories ";
// $sub_query_run= mysql_query($sub_category_query);
while ($select_query_array= mysql_fetch_array($select_query_run) ) {
echo "<optgroup label='".$select_query_array['name']."' >".
//$sub_category_query="Select * from sub_categories";
$sub_category_query="Select * from sub_categories
where category_id='".$select_query_array['category_id']."'";
$sub_query_run= mysql_query($sub_category_query);
while ($sub_query_run_fetch= mysql_fetch_array($sub_query_run) ) {
echo "<option value='".$sub_query_run_fetch['sub_category_id'] . "' >" .
htmlspecialchars($sub_query_run_fetch['sub_category_name']) . "</option>";
}
echo "</optgroup>";
}
echo "</br>";
$selectTag= "</br><input type='submit' value='Insert Product' /></select></form>";
echo "</div></div>";
echo $selectTag;
/*----------------
Drop Down List
---------------*/
/*-----------------
Drop Down List End
------------------*/
if(isset($_POST['product_name']) && isset($_POST['price']) && isset($_POST['description'] )
&& isset($_POST['files[]'])
)
{
$product_name = $_POST['product_name'];
$price = $_POST['price'];
$description = $_POST['description'];
$category = $_POST['category'];
$query= "insert into products (name, sub_category_id )
VALUES( '$product_name', $category )";
if($query_run= mysql_query($query) )
{
echo 'Data Inserted';
$current_id= mysql_insert_id();
//$_SESSION['current_id']= mysql_insert_id();
}
else
{
'Error In SQL'.mysql_error();
}
/*-----------------
INSERT Description!!
-------------------*/
$item_no= $_POST['item_no'];
$recipient= $_POST['recipient'];
$total_carat_weight= $_POST['total_carat_weight'];
$metal= $_POST['metal'];
$stone_shape= $_POST['stone_shape'];
$stone_type = $_POST['stone_type'];
$stone_setting = $_POST['stone_setting'];
$wastage = $_POST['wastage'];
$retail_price = $_POST['retail_price'];
$query_description= "insert into product_description VALUES($current_id,'$item_no','$recipient',
'$total_carat_weight','$metal','$stone_shape','$stone_type','$stone_setting',
'$wastage','$retail_price','$price' ,'$description' ) ";
if(mysql_query($query_description))
{
echo 'Insert descrition successfull';
}
else
{
echo mysql_error();
}
}
else
{
echo '</br>Plesae fill all the Fields';
}
/*-----------------
IMAGE QUERY 2
------------------*/
if (isset($_FILES['files'])
|| ($_FILES["files"]["type"] == "image/jpeg"))
{
foreach($_FILES['files']['tmp_name'] as $key=> $tmp_name)
{
//echo $tmp_name."<br>";
echo $image_name= $_FILES["files"]["name"][$key];
$random_name= rand().$_FILES["files"]["name"][$key];
$folder="upload/products/" .$random_name;
move_uploaded_file($_FILES["files"]["tmp_name"][$key],
"upload/products/" . $random_name);
// print_r($_FILES);
$sql = "Insert into product_images (product_id,name,images)
VALUES ($current_id,'$image_name', '$folder')";
if (mysql_query($sql))
{
echo 'Done';
}
else
{
echo mysql_error();
}
}
}
/*-----------------
IMAGE QUERY 2- END
------------------*/
}
else
{
echo 'You Must Log in To View this Page!';
}
}
else
{
echo "You Must need to login to View this Page";
}
?>
答案 0 :(得分:2)
$_POST
为您需要使用$_FILES
的文件带来所有输入
检查这个php.net/manual/en/reserved.variables.files.php
另请注意不要使用isset()
检查if ($_FILES['file']['name'] != "")
,因为如果您的html表单中包含名称字段,isset
将始终返回true
例如 <input type='text' name='fname'>
如果您选中isset($_POST['fname'])
,则会返回true,因为它已设置为name='fname'
isset
不会检查您的文本框是否为空。你可以用
if (trim($_POST['fname']) != "") {
} else {
}
因此,如果用户将该字段留空,您的代码将停在那里并进入else块。
PS: trim()
将trim字符串开头和结尾的空格。
答案 1 :(得分:0)
$ _FILES ['fileFormName']有一个名为'error'的索引可以解决问题。
if($_FILES['files']['error'][0] == 4){
echo you didn't upload an image
}
这将检查用户是否已上传图像。
[0]是文件数组中的 Imagen 1 ,它是一个数组,因为你在表单中使用了文件[]。
如果您希望用户“必须”上传所有图片,您可以使用if 或或和语句播放此
if($_FILES['files']['error'][0] == 4 or $_FILES['files']['error'][1] == 4 or $_FILES['files']['error'][2] == 4){ echo "You must upload ALL images";}
只需从或更改为和,只需要至少一张图片