مشکل این سکریپت کجاست؟؟؟

PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$uploaddir = "c:/apache/htdocs/site/picture/";  
$picture = $uploaddir . basename($_FILES['picture']['name']);
if (file_exists("$picture")) {
echo("already uploaded <a href='javascript:history.back(1)'>Back‌</a>");}
if ( @copy ($_FILES['picture']['tmp_name'], $picture)) {
echo "sucess";
$omed = "picture/".basename($_FILES['picture']['name']);
} else {
echo "Sorry, there is an error processing uploading, Please try again later!";
}
  $insertSQL = sprintf("INSERT INTO art (`date`, `language`, category, title, short, `full`, imgtitle, `user`, type, picture) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, '$omed')",
                       GetSQLValueString($_POST['date'], "date"),
                       GetSQLValueString($_POST['language'], "int"),
                       GetSQLValueString($_POST['category'], "int"),
                       GetSQLValueString($_POST['title'], "text"),
                       GetSQLValueString($_POST['short'], "text"),
                       GetSQLValueString($_POST['full'], "text"),
                       GetSQLValueString($_POST['imgtitle'], "text"),
                       GetSQLValueString($_POST['user'], "text"),
                       GetSQLValueString($_POST['type'], "int"),
                       GetSQLValueString($_POST['picture'], "text"));

  mysql_select_db($database_ren, $ren);
  $Result1 = mysql_query($insertSQL, $ren) or die(mysql_error());
}

اگر خبر عکس داشته‌ باشه‌ که‌ درست کار میکنه‌، اما بعضی وقتها عکس نداره‌ و بازم already uploaded رو پرینت میکنه‌، حتی ایرور sorry رو هم پرینت میکنه‌.
 

tabib_m

Member
قبل از این که چک کنی فایل وجود داره یا نه ، چک کن ببین اصلا فایلی انتخاب شده یا نه.

در ضمن ، اگه هدفت رو دقیقتر بگی ، و ارور (اگه داره) ی که میده رو بنویسی ، بهتر میشه کمکت کرد.
 
هدف من اینه‌ که‌ همراه‌ با هر خبر یک عکس بزارم، اما گاهی اوقات ممکنه‌ عکس نداشته‌ باشه‌.
و اینم مشخصه‌ که‌ از داتابیس استفاده‌ کردم.
ارور ندارم، اما میدونم که‌ سکریپت کامل نیست و مشکلاتی داره‌.
شما هم اگه‌ راه‌ حل بهتری دارین بگین عالی میشه‌.
 
من که‌ نمیفهمم منظورتون چیه‌، اگه‌ بلدی خوب کدش رو بزار تا بفهمم
 

tabib_m

Member
PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
$uploaddir = "c:/apache/htdocs/site/picture/";   
$picture = $uploaddir . basename($_FILES['picture']['name']);
if (isset($_POST['FILE_INPUT_NAME']){
if (file_exists("$picture") and isset($_POST['FILE_INPUT_NAME'])) { 
echo("already uploaded <a href='javascript:history.back(1)'>Back‌</a>");} 
if ( @copy ($_FILES['picture']['tmp_name'], $picture)) { 
echo "sucess"; 
$omed = "picture/".basename($_FILES['picture']['name']); 
} else { 
echo "Sorry, there is an error processing uploading, Please try again later!"; 
} 
  $insertSQL = sprintf("INSERT INTO art (`date`, `language`, category, title, short, `full`, imgtitle, `user`, type, picture) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, '$omed')", 
                       GetSQLValueString($_POST['date'], "date"), 
                       GetSQLValueString($_POST['language'], "int"), 
                       GetSQLValueString($_POST['category'], "int"), 
                       GetSQLValueString($_POST['title'], "text"), 
                       GetSQLValueString($_POST['short'], "text"), 
                       GetSQLValueString($_POST['full'], "text"), 
                       GetSQLValueString($_POST['imgtitle'], "text"), 
                       GetSQLValueString($_POST['user'], "text"), 
                       GetSQLValueString($_POST['type'], "int"), 
                       GetSQLValueString($_POST['picture'], "text")); 

  mysql_select_db($database_ren, $ren); 
  $Result1 = mysql_query($insertSQL, $ren) or die(mysql_error()); 
}

فكر نميكنم جمله م نا مفهوم بود!!
 
آخرین ویرایش:

iman_ebru

Active Member
طبیب جان شما چه تغییری در کد دادی؟ میشه توضیح بدی؟

ایمان
 

tabib_m

Member
خط 5 عبارت
[LTR] and isset($_POST['FILE_INPUT_NAME'])[/LTR]
رو اضافه کردم.
 
آخرین ویرایش:
هنوز دروست کار نمیکنه‌.
آقا شما فرض کنید یک جدول دارین که‌ این فیلدها رو داره‌، id,title,content,picture
حالا میخوایم یک فرم واسه‌ insert کردن بسازین که‌ هم عکس رو آپلود کنه‌ و هم به‌ MySql زیاد بکنه‌، اما به‌ شرط اینکه‌ عکس رو با نام تکراری قبول نکنه‌ و این رو هم مدنظر داشته‌ باشین که‌ ممکنه‌ بعضی وقتها هم عکس اصلا عکسی در کار نباشه‌.
ممنون
 

sanbad

Member
يک سوال داشتم.

اين تابع:
PHP:
GetSQLValueString
يک تابع تعريف شده ي برنامه نويس هست يا يک تابع وابسته به يک اکستنشن php و يا mysql که بايد به سرور اضافه شود؟

چون من هرچي تو ebook هاي php و mysql سرچ کردم چيزي پيدا نکردم.

اگر اين تابع دست نويس نيست، کارش چي هست؟
 

sanbad

Member
PHP:
$uploaddir = "c:/apache/htdocs/site/picture/";   
$picture = $uploaddir . basename($_FILES['picture']['name']);

شايد اشکال کار اين باشه که وقتي
$_FILES
مقداري نداشته باشد مقدار متغير
$picture = $uploaddir

يعن مقدار آن برابر با مسير فولدر مي شود.

مطابق با تعريف دستور

file_exists

در کتاب الکترونيکPhp manual ، که از سايت php مي توني دانلود کني نوشته :

Returns TRUE if the file or directory specified by filename exists; FALSE otherwise

پس اين دستور هم در صورت وجود فايل و هم درصورت وجود دايرکتوري مقدار 1يا true را برمي گرداند.

وقتي هم که شما فايلي آپلود نکرده باشي شرط

PHP:
if (file_exists("$picture"))

همواره درست خواهد بود! چون ممکن است فايلي نباشد اما همواره فولدر ذيل
:/apache/htdocs/site/picture/
وجود خواهد داشت!

مي تواني آزمايش کني:

PHP:
if (file_exists($picture)) {
 
echo("already uploaded <a href='javascript:history.back(1)'>Back</a>");
//ezafe kon
echo file_exists($picture);
echo $picture ; 
}

بايد جوري بنويسي که فولدر را به حساب نياره!
نام متغير را هم تو گيومه نگذار.
 
آخرین ویرایش:

sanbad

Member
با تابع

PHP:
is_file();
is_file($picture);
مي توني امتحان کني که آيا متغير حاوي آدرس فايل است يا آدرس فولدر:
Returns TRUE if the filename exists and is a regular file.
 
سلام

PHP:
if (isset($picture) && !empty($picture)) {
$uploaddir = "c:/apache/htdocs/site/picture/";      
$picture = $uploaddir . basename($_FILES['picture']['name']);    
if (file_exists("$picture")) {
die("already uploaded!!Please rename your file <a href='javascript:history.back(1)'>Back‌</a>");
} else {
@copy ($_FILES['picture']['tmp_name'], $image) or die("Sorry, there is an error processing uploading, Please try again later!");
$omed = "picture/".basename($_FILES['picture']['name']);
}
}

من این قسمت رو اضافه‌ کردم، درست کار مینکه‌ ،تو لوکال هاست هیچ مشکلی نداره‌ اما دیشب که‌ آپ کردم دیدم که‌ عکس Insert نمیشه‌ به‌ سایت. Uploaddir رو هم عوض کردم، حتی 777 کردم فولدر رو. کار نکرد که‌ نکرد
اما اگه‌ این قسمت
PHP:
if (isset($picture) && !empty($picture)) {
رو بردارم کاملا درست کار میکنه‌.

میشه‌ بگین مشکل کجاست؟؟؟؟؟؟
 

جدیدترین ارسال ها

بالا