برگزیده های پرشین تولز

تاپیک جامع PHP [پرسش و پاسخ، مشکلات و...]

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
با سلام
در این تاپیک میتوانید پرسش و پاسخ، مشکلات و... مربوط به PHP را مطرح کنید


قوانین:
⚠️ سعی کنید سوالات خود را دقیق و بدون ابهام بیان کنید تا دوستان برای پاسخ شما مجبور به پرسیدن سوال ها و پیام های اضافی نباشند !

⚠️ مطالب خارج از حوزه php ممنوع است.

⚠️ لطفا سوالات و مطالبتان را در یک پست ارسال کنید

⚠️ مطالب تماماً جنبه علمی داشته و قصد کسی رقابت در میزان دانش نیست !

⚠️ در صورت توهین و حرف های رکیک، با فرد خاطی برخورد خواهد شد.

⚠️ لطفا جویای دانش دیگران نشوید که چند سال است که برنامه نویس هستند و در چه مواردی تسلط دارند این سوال بی معنی است

⚠️ از گفتن حرف های سبک و شوخی جدا بپرهیزید شوخی جایگاه دارد❗

⚠️ برای گذاشتن کد php، از تگ زیر استفاده کنید:
کد:
[php] کد php شما [/php]


ممنونم از اینکه به قوانین تاپیک احترام میزارید
 
Last edited:

farshad-fr4

Registered User
تاریخ عضویت
28 دسامبر 2012
نوشته‌ها
2,037
لایک‌ها
743
محل سکونت
زمین
مشکل در سرعت آپلود فایل به اف تی پی
سلام این مشکل رو دارم که وقتی میخوام با پی اچ پی یه فایل رو منتقل کنم (به اف تی پی ) خیلی کند هستش
یعنی برای مثال یه فایل 100 مگی رو حدودا ده دقیقه زمان میبره تا انقال بده (من میخوام فایل های حجم بالا مثلا 2 گیگ رو انتقال بدم که خیلی زمان میبره اگه با این سرعت بخواد پیش بره )
اینم کد هایی که نوشتم
از راهنماییتون پیشاپیش ممنونم
پ.ن: مشکل از سرور هم نیستش چک شده قبلا
PHP:
$ftp_server = "";
$ftp_username="";
$ftp_userpass="";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

ftp_pasv($ftp_conn, true);     
      
$dir = 'folder';

// get file list of current directory
$file_list = ftp_nlist($ftp_conn, ".");

// try to create directory $dir
if (ftp_mkdir($ftp_conn, $dir) or strpos(var_dump($file_list),"\"".$dir."\""))
  {
  echo "Successfully created $dir";
 
$file = '';//لینک دانلود از سرور سایت منبع
$fileupname="test.mkv";      // اسم فایل در اف تی پی
 
// upload file
if (ftp_put($ftp_conn, $dir.'/'.$fileupname, $file, FTP_ASCII))
  {
  echo "Successfully uploaded $file.";
  }
else
  {
  echo "Error uploading $file.";
  }

  }//end ftp_mkdir
else
  {
  echo "Error while creating $dir";
  }
// close this connection and file handler
ftp_close($ftp_conn);
fclose($fp);
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
مشکل در سرعت آپلود فایل به اف تی پی
سلام این مشکل رو دارم که وقتی میخوام با پی اچ پی یه فایل رو منتقل کنم (به اف تی پی ) خیلی کند هستش
یعنی برای مثال یه فایل 100 مگی رو حدودا ده دقیقه زمان میبره تا انقال بده (من میخوام فایل های حجم بالا مثلا 2 گیگ رو انتقال بدم که خیلی زمان میبره اگه با این سرعت بخواد پیش بره )
اینم کد هایی که نوشتم
از راهنماییتون پیشاپیش ممنونم
پ.ن: مشکل از سرور هم نیستش چک شده قبلا
PHP:
$ftp_server = "";
$ftp_username="";
$ftp_userpass="";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

ftp_pasv($ftp_conn, true);  
   
$dir = 'folder';

// get file list of current directory
$file_list = ftp_nlist($ftp_conn, ".");

// try to create directory $dir
if (ftp_mkdir($ftp_conn, $dir) or strpos(var_dump($file_list),"\"".$dir."\""))
  {
  echo "Successfully created $dir";
 
$file = '';//لینک دانلود از سرور سایت منبع
$fileupname="test.mkv";      // اسم فایل در اف تی پی
 
// upload file
if (ftp_put($ftp_conn, $dir.'/'.$fileupname, $file, FTP_ASCII))
  {
  echo "Successfully uploaded $file.";
  }
else
  {
  echo "Error uploading $file.";
  }

  }//end ftp_mkdir
else
  {
  echo "Error while creating $dir";
  }
// close this connection and file handler
ftp_close($ftp_conn);
fclose($fp);
سرعت آپلود به خیلی از موارد بستگی داره
منجمله فاصله شما تا سرور مقصد و..
ممکنه سرعت آپلود سرور یا هاست شما محدود شده باشه (که معمولا در هاست های اشتراکی به همین صورته)
یا سرعت دانلود سرور مقصد محدود باشه
یکبار ftp_pasv رو false کنید و مجدد تست کنید
همچنین اگر سرور مجازی یا اختصاصی دارید، میتونید از نرم افزار های linux ftp upload multiple threads که تحت کامند لاین هستند با واسط php استفاده کنید
 

farshad-fr4

Registered User
تاریخ عضویت
28 دسامبر 2012
نوشته‌ها
2,037
لایک‌ها
743
محل سکونت
زمین
نحوه اتصال و استفاده از فایل های محافظت شده توسط هاست
ممنون از پاسختون
یک سوال دیگه :
برای مثال این پوشه رو هاست هستش (هاست برای من نیستش اما یوزر پسورد برای استفاده از پوشه رو دارم)
files
و با استفاده از هاست روش پسورد گذاشته شده
چطور میتونم با پی اچ پی از این پوشه و فایل هاش استفاده کنم ؟
چون یوزر پس رو وارد نمیتونم بکنم با پی اچ پی ارور 401 رو بهم میده
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
نحوه اتصال و استفاده از فایل های محافظت شده توسط هاست
ممنون از پاسختون
یک سوال دیگه :
برای مثال این پوشه رو هاست هستش (هاست برای من نیستش اما یوزر پسورد برای استفاده از پوشه رو دارم)
files
و با استفاده از هاست روش پسورد گذاشته شده
چطور میتونم با پی اچ پی از این پوشه و فایل هاش استفاده کنم ؟
چون یوزر پس رو وارد نمیتونم بکنم با پی اچ پی ارور 401 رو بهم میده
با curl بصورت زیر ممکنه:
PHP:
$username='ABC';
$password='XYZ';
$URL='URL';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
$result=curl_exec ($ch);
curl_close ($ch);
 

farshad-fr4

Registered User
تاریخ عضویت
28 دسامبر 2012
نوشته‌ها
2,037
لایک‌ها
743
محل سکونت
زمین
اتصال به ftp و آپلود یک فایل در آن با استفاده از Curl
سلام میخواستم با curl به ftp وصل بشم و توش یک فایل رو اپلود کنم (فایل از ادرس اینترنتی نه از لوکال خودم)
کد زیر رو پیدا کردم که برای اپلود از لوکال بودش
PHP:
<?php

echo '<hr>file _ name :  '.$_FILES['file']['name'].'<hr>';
echo '<hr>file _ tmp_name :  '.$_FILES['file']['tmp_name'].'<hr>';


if (isset($_POST['Submit'])) {
 if (!empty($_FILES['file']['name'])) {
     $ch = curl_init();
     $uploadedfile = $_FILES['file']['tmp_name'];
     $fp = fopen($uploadedfile , 'r');
     curl_setopt($ch, CURLOPT_URL, 'ftp://userftp:[email protected]/'.$_FILES['file']['name']);
     curl_setopt($ch, CURLOPT_UPLOAD, 1);
     curl_setopt($ch, CURLOPT_INFILE, $fp);
     curl_setopt($ch, CURLOPT_INFILESIZE, filesize($uploadedfile ));
     curl_exec ($ch);
     $error_msg = curl_errno($ch);
     curl_close ($ch);
        if ($error_msg == 0) {
            $response = 'Yours File uploaded successfully.';
        } else {
            $response = 'Error into upload file.';
        }
 } else {
        $response = 'Please select a file.';
 }
 echo $response ;
}
 
?>
<!DOCTYPE html>
<html>
<body>
<form action="" method="post" enctype="multipart/form-data">
<div>
<label>Select file</label>
<input name="file" type="file" />
<input type="submit" name="Submit" value="Upload File" />
</div>
</form>
</body>
</html>
اما من دنبال این هستم که از لینک دانلود
مثلآ: http://dl5.downloadha.com/hosein/Mo...720p.BRRip-ETRG_DLHA (www.Downloadha.com).mkv
فایل رو انتقال بدم به اف تی پی و اسمش هم تغییر بدم (برای مثال فایل بالا رو انتقال بدم به پوشه movie تو اف تی پی و اسمش رو بزارم new name.mkv )

پیشاپیش ممنون
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
اتصال به ftp و آپلود یک فایل در آن با استفاده از Curl
سلام میخواستم با curl به ftp وصل بشم و توش یک فایل رو اپلود کنم (فایل از ادرس اینترنتی نه از لوکال خودم)
کد زیر رو پیدا کردم که برای اپلود از لوکال بودش

اما من دنبال این هستم که از لینک دانلود
مثلآ: http://dl5.downloadha.com/hosein/Movie/November 2016/Dont.Breathe.2016.720p.BRRip-ETRG_DLHA (www.Downloadha.com).mkv
فایل رو انتقال بدم به اف تی پی و اسمش هم تغییر بدم (برای مثال فایل بالا رو انتقال بدم به پوشه movie تو اف تی پی و اسمش رو بزارم new name.mkv )

پیشاپیش ممنون
این مورد که میفرمایید امکان پذیر نیست. باید اول فایل رو دانلود کنید روی هاست خودتون و سپس آپلود کنید رو مقصد
یه روش دیگری هم هست ک در این صورت باید هاست دانلود php رو ساپورت کنه
به این صورت که یه فایل php بعنوان وب سرویس در هاست دانلود ایجاد کنید. سپس مقادیر خودتون مثل لینک دانلود، مسیر ذخیره، نام جدید رو در قالب متد GET یا POST از هاست خودتون به وب سرویس ارسال کنید. سپس در سمت وب سرویس، مقادیر رو دریافت و سپس دانلود و ذخیره و غیره رو انجام بدید و در نهایت مواردی مثل وضعیت دانلود یا غیره رو در خروجی پاسخ بدید. اینطوری دیگه نیازی به ftp هم نیست (مشکل سرعت هم نخواهید داشت دیگر)
 

ms368

Registered User
تاریخ عضویت
13 ژوئن 2009
نوشته‌ها
3,965
لایک‌ها
8,673
کد زیر محتویات کلاس ratingValue از یه آدرس توی imdb میخونه و نمایش میده

PHP:
            <?php
$url = 'http://www.imdb.com/title/tt0475783/';
$content = file_get_contents($url);
$first_step = explode( '<div class="ratingValue">' , $content );
$second_step = explode("</div>" , $first_step[1] );
echo $second_step[0];
?>
فقط مشکل دیر لود شدنشه، سوالم اینه که کد بالا کل اطلاعاتو صفحه مورد نظرو دانلود میکنه و بعد اطلاعات کلاسو نشون میده؟
روش سریعتری نیست که نخاد کل اطلاعات صفحه رو دانلود کنه ؟
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
کد زیر محتویات کلاس ratingValue از یه آدرس توی imdb میخونه و نمایش میده

PHP:
            <?php
$url = 'http://www.imdb.com/title/tt0475783/';
$content = file_get_contents($url);
$first_step = explode( '<div class="ratingValue">' , $content );
$second_step = explode("</div>" , $first_step[1] );
echo $second_step[0];
?>
فقط مشکل دیر لود شدنشه، سوالم اینه که کد بالا کل اطلاعاتو صفحه مورد نظرو دانلود میکنه و بعد اطلاعات کلاسو نشون میده؟
روش سریعتری نیست که نخاد کل اطلاعات صفحه رو دانلود کنه ؟
این کد مناسب تر هست:
PHP:
<?php
$id = 'tt0475783';
$str = file_get_contents('http://www.imdb.com/title/'.$id.'/');
preg_match('~\<span itemprop\=\"ratingValue\"\>(.*?)\<\/span\>~i', $str, $matches);
$re = $matches[1];
echo $re; // Show Rating Value - simple "7.8"

?>
 

ms368

Registered User
تاریخ عضویت
13 ژوئن 2009
نوشته‌ها
3,965
لایک‌ها
8,673
این کد مناسب تر هست:
PHP:
<?php
$id = 'tt0475783';
$str = file_get_contents('http://www.imdb.com/title/'.$id.'/');
preg_match('~\<span itemprop\=\"ratingValue\"\>(.*?)\<\/span\>~i', $str, $matches);
$re = $matches[1];
echo $re; // Show Rating Value - simple "7.8"

?>
@MOHAMMAD026_1 ممنونم بابت انتقال این پست به این صفحه :general601:
درکل فرق نداشت چون سرعت جفتشون یکیه به نظرم
در مورد ذخیره کردن این مقدار "7.8" توی دیتابیس چیکار باید کنم ؟ من باید توی چندتا از محتویات دیگر سایت ها مثه imdb و wikia استفاده کنم و میخام که ذخیرشون کنم که سرعت زیاد بشه چون هر دفعه کلی باید منتظر دانلود صفحه مورد نظر بشم اونم فقط برای یه مقداری مثه کلاس ratingValue
میخام که یکبار این مقدارو توی دیتابیس ذخیره کنم تا بتونم ازش استفاده کنم که هر دفعه نخاد هی صفحه رو دانلود کنه
برنامه نویسی رو اینجوری در نظر بگیرید که راحت تر متوجه بشید:

اول چک کن ببین این مقدار توی دیتابیس هست یا نه، اگه بود (if) نمایشش بده
در غیر این صورت (else) برو صفحه رو با file_get_contents دانلود کن و محتویات class="ratingValue" رو بریز توی یه متغیری و محتویات اون متغیر رو توی دیتابیس ذخیره کن و سپس اون مقداروی که توی دیتابیس ذخیره کردیمو نمایش بده

از وردپرس استفاده میکنم.
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
@MOHAMMAD026_1 ممنونم بابت انتقال این پست به این صفحه :general601:
درکل فرق نداشت چون سرعت جفتشون یکیه به نظرم
در مورد ذخیره کردن این مقدار "7.8" توی دیتابیس چیکار باید کنم ؟ من باید توی چندتا از محتویات دیگر سایت ها مثه imdb و wikia استفاده کنم و میخام که ذخیرشون کنم که سرعت زیاد بشه چون هر دفعه کلی باید منتظر دانلود صفحه مورد نظر بشم اونم فقط برای یه مقداری مثه کلاس ratingValue
میخام که یکبار این مقدارو توی دیتابیس ذخیره کنم تا بتونم ازش استفاده کنم که هر دفعه نخاد هی صفحه رو دانلود کنه
برنامه نویسی رو اینجوری در نظر بگیرید که راحت تر متوجه بشید:

اول چک کن ببین این مقدار توی دیتابیس هست یا نه، اگه بود (if) نمایشش بده
در غیر این صورت (else) برو صفحه رو با file_get_contents دانلود کن و محتویات class="ratingValue" رو بریز توی یه متغیری و محتویات اون متغیر رو توی دیتابیس ذخیره کن و سپس اون مقداروی که توی دیتابیس ذخیره کردیمو نمایش بده

از وردپرس استفاده میکنم.
در تست هایی که من انجام دادم، در کمتر از 0.5 ثانیه اطلاعات دریافت و استخراج شد
احتمالا منابع هاست شما محدوده و سرعت اجرا کد پایینه یا اینکه سرعت اینترنت هاست، محدود شده یا فاصله سرور شما از سرور imdb زیاده و دریافت اطلاعات کند صورت میگیره

در هر صورت، روش های زیادی برای کش کردن دیتا وجود داره.
در وردپرس از دو تابع get_transient و set_transient میتونید بهره ببرید.
https://codex.wordpress.org/Function_Reference/set_transient
https://codex.wordpress.org/Function_Reference/get_transient
 

ms368

Registered User
تاریخ عضویت
13 ژوئن 2009
نوشته‌ها
3,965
لایک‌ها
8,673
در تست هایی که من انجام دادم، در کمتر از 0.5 ثانیه اطلاعات دریافت و استخراج شد
احتمالا منابع هاست شما محدوده و سرعت اجرا کد پایینه یا اینکه سرعت اینترنت هاست، محدود شده یا فاصله سرور شما از سرور imdb زیاده و دریافت اطلاعات کند صورت میگیره

در هر صورت، روش های زیادی برای کش کردن دیتا وجود داره.
در وردپرس از دو تابع get_transient و set_transient میتونید بهره ببرید.
https://codex.wordpress.org/Function_Reference/set_transient
https://codex.wordpress.org/Function_Reference/get_transient
ممنون
متوجه نشدم که اطلاعات از طریق سرور دریافت میشه، چون از لوکال هاست استفاده میکنم
مشکلم حل شد و با آموزش هایی که پیدا کردم موفق شدم از صبح تا همین الان فقط ۷ ۸ خط کد برای ذخیره اطلاعات و فراخانی از طریق دیتابیس بنویسم :D
کدها به شکل زیر ولی و خیلی خوب کار میکنن (البته هنوز از file_get_contents استفاده نکردم و برای مراحل بعدی میخام ازش استفاده کنم)
کد زیر ابتدا به دیتابیس متصل میشه و هرچی اطلاعات توی جدول imdb هست رو میخونه و در پایان رکورد ids که مقدارش با متغیر idimdb یکی هست رو پیدا میکنه و نمایش میده

PHP:
            <?php
               global $idimdb;
               $idimdb = get_field('film_name');
               mysql_connect("localhost", "root", "")//اطلاعات اتصال
               or die(mysql_error());
               mysql_select_db("mostafa")//نام دیتابیس
               or die(mysql_error());
               $get_query = mysql_query("SELECT * FROM `imdb`");
               $fetch_result = mysql_fetch_array($get_query);
               $postTitle = $fetch_result['ids'];
                               if ($postTitle != $idimdb)
                               {
               mysql_query("INSERT INTO imdb (ids) VALUES('$idimdb')")
               or die(mysql_error());
                               }
      
       while ($fetch_result = mysql_fetch_array($get_query))
       {
       $postTitle2 = $fetch_result['ids'];
             if ($postTitle2 == $idimdb){
               echo "$postTitle2";
               }
       }
               mysql_close;
           ?>
مشکلی که وجود داره و نتونستم حلش کنم اینه که کدهای زیر (توی کدهای بالا هستن) عملا کاری انجام نمیدن و جلوی ایجاد رکورد جدید رو نمیگیرین و هر دفعه که صفحه رفرش میشه دوباره یه رکورد تکراری میسازه
نمیدونم مشکلش چیه، به طور منطقی خودم فکر میکنم باید درست باشه ولی اشتباهه

PHP:
                               if ($postTitle != $idimdb)
                               {
               mysql_query("INSERT INTO imdb (ids) VALUES('$idimdb')")
               or die(mysql_error());
                               }
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
ممنون
متوجه نشدم که اطلاعات از طریق سرور دریافت میشه، چون از لوکال هاست استفاده میکنم
مشکلم حل شد و با آموزش هایی که پیدا کردم موفق شدم از صبح تا همین الان فقط ۷ ۸ خط کد برای ذخیره اطلاعات و فراخانی از طریق دیتابیس بنویسم :D
کدها به شکل زیر ولی و خیلی خوب کار میکنن (البته هنوز از file_get_contents استفاده نکردم و برای مراحل بعدی میخام ازش استفاده کنم)
کد زیر ابتدا به دیتابیس متصل میشه و هرچی اطلاعات توی جدول imdb هست رو میخونه و در پایان رکورد ids که مقدارش با متغیر idimdb یکی هست رو پیدا میکنه و نمایش میده

PHP:
            <?php
               global $idimdb;
               $idimdb = get_field('film_name');
               mysql_connect("localhost", "root", "")//اطلاعات اتصال
               or die(mysql_error());
               mysql_select_db("mostafa")//نام دیتابیس
               or die(mysql_error());
               $get_query = mysql_query("SELECT * FROM `imdb`");
               $fetch_result = mysql_fetch_array($get_query);
               $postTitle = $fetch_result['ids'];
                               if ($postTitle != $idimdb)
                               {
               mysql_query("INSERT INTO imdb (ids) VALUES('$idimdb')")
               or die(mysql_error());
                               }
     
       while ($fetch_result = mysql_fetch_array($get_query))
       {
       $postTitle2 = $fetch_result['ids'];
             if ($postTitle2 == $idimdb){
               echo "$postTitle2";
               }
       }
               mysql_close;
           ?>
مشکلی که وجود داره و نتونستم حلش کنم اینه که کدهای زیر (توی کدهای بالا هستن) عملا کاری انجام نمیدن و جلوی ایجاد رکورد جدید رو نمیگیرین و هر دفعه که صفحه رفرش میشه دوباره یه رکورد تکراری میسازه
نمیدونم مشکلش چیه، به طور منطقی خودم فکر میکنم باید درست باشه ولی اشتباهه

PHP:
                               if ($postTitle != $idimdb)
                               {
               mysql_query("INSERT INTO imdb (ids) VALUES('$idimdb')")
               or die(mysql_error());
                               }
کل کد و روش تون اشتباهه
بهتره با همون دو تابع کار کنید تا درگیر مسائل دیگری نشید. اون توابع هم مقادیر رو در دیتابیس کش و فراخوانی میکنن
 

hassanagha110

Registered User
تاریخ عضویت
20 سپتامبر 2010
نوشته‌ها
771
لایک‌ها
81
محل سکونت
مشهد دل ها
سلام
ببخشید من فرایند زیر رو می خوام انجام بدم:
1. من حدود 20 تا فایل دارم به نام های a.pdf b.pdf c.pdf و...
2. می خوام یک فرم کوچک درست کنم که یک اینپوت داشته باشه با یک دکمه زیرش
3. وقتی کسی توی فرم نوشت a و دکمه نمایش زیرش رو زد a.pdf باز بشه و اگر نوشت b و دکمه رو زد b.pdf باز بشه و همینطور

ممنون میشم یک کمکی بفرمایید
 

alavi24

کاربر تازه وارد
تاریخ عضویت
6 مارس 2013
نوشته‌ها
21
لایک‌ها
3
سلام
چه طور میشه اطلاعات درون دیتابیس را داخل تگ <select> ریخت و به کاربر نشان داد؟
الان در کد زیراطلاعات رو داخل یه جدول ریخته و نمایش میده:
PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$con=mysql_connect('localhost','root','');
mysql_select_db('shop_sql',$con);
mysql_query('SET NAMES UTF8');
echo'<table alin="center" dir="rtl" border="1">
<td>نوع محصولات</td>
<tr>';
$r=mysql_query('select * from category');
while($row=mysql_fetch_array($r))
{
    echo '<td align="center">'.$row['type_product'];'</td>';
    echo '<tr>';
}
echo '<table>';
?>
</body>
</html>
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
سلام
چه طور میشه اطلاعات درون دیتابیس را داخل تگ <select> ریخت و به کاربر نشان داد؟
الان در کد زیراطلاعات رو داخل یه جدول ریخته و نمایش میده:
PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$con=mysql_connect('localhost','root','');
mysql_select_db('shop_sql',$con);
mysql_query('SET NAMES UTF8');
echo'<table alin="center" dir="rtl" border="1">
<td>نوع محصولات</td>
<tr>';
$r=mysql_query('select * from category');
while($row=mysql_fetch_array($r))
{
    echo '<td align="center">'.$row['type_product'];'</td>';
    echo '<tr>';
}
echo '<table>';
?>
</body>
</html>
این کد رو بررسی کنید:
PHP:
<?php
$con=mysql_connect('localhost','root','');
mysql_select_db('shop_sql',$con);
mysql_query('SET NAMES UTF8');
echo'<select>';
$r=mysql_query('select * from category');
while($row=mysql_fetch_array($r))
{
    echo '<option value="'.$row['type_product'].'">'.$row['type_product'].'</option>';
}
echo '</select>';
?>
 

alavi24

کاربر تازه وارد
تاریخ عضویت
6 مارس 2013
نوشته‌ها
21
لایک‌ها
3
این کد رو بررسی کنید:
PHP:
<?php
$con=mysql_connect('localhost','root','');
mysql_select_db('shop_sql',$con);
mysql_query('SET NAMES UTF8');
echo'<select>';
$r=mysql_query('select * from category');
while($row=mysql_fetch_array($r))
{
    echo '<option value="'.$row['type_product'].'">'.$row['type_product'].'</option>';
}
echo '</select>';
?>
دوست گرامی ممنون از پاسخگویی سریعتان
یه سوال دارم، چرا دوبار باید دستور زیر را در تگ option نوشت؟
کد:
.$row['type_product']
 

MOHAMMAD026_1

مدیر بخش ویژه وب مستر
مدیر انجمن
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,048
لایک‌ها
8,666
محل سکونت
ROOT
دوست گرامی ممنون از پاسخگویی سریعتان
یه سوال دارم، چرا دوبار باید دستور زیر را در تگ option نوشت؟
کد:
.$row['type_product']
والا بنده از ساختار اسکریپت شما اطلاعی ندارم
بنابراین بر اساس همون کدی که خودتون دادید، من این کد رو نوشتم
یک عکس از جدول category در phpmyadmin بگیرید
دقیقا بفرمایید چه کاری با select میخاید بکنید؟
 

Mostafa313

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
10 سپتامبر 2003
نوشته‌ها
482
لایک‌ها
638
دوست گرامی ممنون از پاسخگویی سریعتان
یه سوال دارم، چرا دوبار باید دستور زیر را در تگ option نوشت؟
کد:
.$row['type_product']
دلیلش خیلی سادس.مطمپنا یا حواستون نیست یا اینکه کلا با دستورات اچ تی ام ال آشنایی ندارید
در تگ آپشن شما باید دو مقدار معرفی کنید یکی برای عنوان آیتم و دیگری برای مقداری که با انتخاب اون آیتم به صفحه یا اسکریپت پردازش ارسال میشه
مثلا اگه بخواین ماههای سال رو نشون بدید اما با انتخاب نام یک ماه عدد اون ماه به اسکریپت ارسال بشه می تونید اینطوری بنویسید:

HTML:
<option value="1">فروردین</option>

خوب در کد شما اما مقادیر عنوان و مقدار ارسال شده به اسکریپت یکسانه.


ضمنا با توجه به اینکه دیگه از دستورات mysql پشتیبانی نمیشه حتما دستوراتتون رو با معادلهای دستورات mysqli جایگزین کنید...
 

alavi24

کاربر تازه وارد
تاریخ عضویت
6 مارس 2013
نوشته‌ها
21
لایک‌ها
3
ضمنا با توجه به اینکه دیگه از دستورات mysql پشتیبانی نمیشه حتما دستوراتتون رو با معادلهای دستورات mysqli جایگزین کنید...
ممنون از توضیحات کاملتون، من تازه دارم یاد میگیرم و مشکل اصلی من زمانی هست که دستورات html قراره با php ترکیب بشن.
 
بالا