|
|
تاریخ: شنبه 9 اسفند 1393 - 05:24
|
bidak
داره كولاك ميكنه!
پست: 121
عضو شده در: 29 تیر 1392
امتياز: 1376
|
عنوان: پاسخ به «خواندن لينك از پايگاه» |
|
|
شما میتونید دو تا جدول درست کنید و در جدول اول اطلاعاتی مثل نام و عکس و ... در مورد فایل قرار بدید و در جدول دوم لینک مربوط به جزوه ها.
اگر فایل ها رو سایت خودتون آپلود میشن , نیاز نیست آدرس کامل فایل هارو در دیتابیس نگه دارید.کافیه نام فایل ذخیره شدرو درج کنید.چون در اینصورت میدیونید که فرضا فایل های شما در پوشه ی uploads یا files آپلود شدن.
یک عنوان هم در جدول لینک درج میکنید که مثلا مشخص بشه فصب 1 یا هر موضوع دیگه.اما یک فیلد مهم دیگه ای که جدول links باید داشته باشه , فیلدی مثلا بنام jozve_id که یک کلید خارجی هست و مقدار id جدول اولتون یعنی jozve در این فیلد قرار میگیره تا مشخص بشه این لینک ها مربوط به کدوم جزوه هست.
در ادامه توو صفحه میتونید تمام فیلدهای جدول jozve رو نمایش بدید.
زمانی که کاربر کلیک کرد روی یک لینک از جزوه ها , در صفحه ی دیگه ای که باز میشه , لینک های مربوط به اون جزوه ای که باز کرده لود بشه.
حالا این میتونه یکی باشه یا چنتا.
اما اگه واستون مهمه که اگر فقط یک فایل بود , دیگه به صفحه ی دیگه نره و همونجا دانلود بشه و فقط اون جزوه هایی که چنتا لینک دارن برن صفحه ی دیگه و لینک هاشون لود بشه , میتونی به این شکل عمل کنی:
کد: |
mysql_connect('localhost', 'root', '');
mysql_select_db('test');
$result = mysql_query("SELECT project.id AS pID, project.name, links.*
, (SELECT Count(links.id) FROM links WHERE links.project_id = project.id) AS countTotal
FROM project LEFT OUTER JOIN links on project.id=links.project_id GROUP BY (project.name)");
echo mysql_error();
if(mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
if($row['countTotal'] == 1)
{
echo '<a href="www.mysite.com/files/'. $row['link_name'] .'.zip">' . $row['name'] . '</a>';
}
else
{
echo '<a href="www.mysite.com/file.php?id='. $row['pID'] .'">' . $row['name'] . '</a>';
}
echo "<br>";
}
}
|
تو این مثال من project نوشتم که همون jozve میتونی در نظر بگیری.
کد فقط یک مثال بود , ولی میتونی ازش ایده بگیری و تغییراتی بدی.
یه توضیج دیگه:
وقتی کاربر روی لینکی مثلا dc کلیک کرد , شما لینکی درست کردی که به صفحه ای میره با آیدی مشخص شده واسه dc.
در اون صفحه واسه نمایش لینک های dc و یا هرعنوان دیگه مثل آزمایشگاه بازهم میتونی از همین نمونه کد بالا استفاده کنی و جوین بزنی اما قسمت select count و قسمت group by پاک میشه و یک where هم اضافه میشه که این شرط مشخص میکنه کدوم جزوه باید لینکهاش فراخوانی بشن:
کد: |
$id = intval($_GET['id']);
$result = mysql_query("SELECT project.id AS pID, project.name, links.*
FROM project LEFT OUTER JOIN links on project.id=links.project_id WHERE (project.id = '{$id}')
");
|
و دز ادامش یک while مینویسی و لینکهای مربوط به اون جزوه ی مورد نظرو چاپ میکنی.
این از کلیتش. |
|
[ وضعيت كاربر: ]
|
تشکرها از این پست:
|
تاریخ: شنبه 9 اسفند 1393 - 13:48
|
bidak
داره كولاك ميكنه!
پست: 121
عضو شده در: 29 تیر 1392
امتياز: 1376
|
عنوان: پاسخ به «خواندن لينك از پايگاه» |
|
|
چون اطلاعات دو تا جدولو (jozve و links) رو با هم نیاز داری از جوین استفاده میکنی.
اما اگر خواستی در یک صفحه فقط عناوین جزوه ها رو نمایش بدی و بعد از کلیک روی یک جزوه در صفحه ی بعد لینک نمایش داده بشه , نیاز به جوین نیست و فقط یک سلکت به جدول jozve میزنی.
وقتی جوین میزنیم بدیلیل تشابه اسمی فیلد های دو جدول مثل id , واسه مشخص کردن فیلد اول نام جدولو صدا میزنیم بعد نام فیلد.
قسمت اول فیلدهایی که میخوایم سلکت بشن رو مشخص میکنیم:
کد: |
SELECT project.id AS pID, project.name, links.*
, (SELECT Count(links.id) FROM links WHERE links.project_id = project.id) AS countTotal
|
وقتی as میزاریم یک عنوان یا نام مستعار برای اون فیلد انتخاب کردیم.
مثلا project.id as pID گذاشتم.علتش اینه که در جدول project یا همون جزوه و جدول links فیلد های آیدی تشابه اسمی دارن , به همین دلیل نام مستعار واسه آیدی جدول project گذاشتم که توسط pID بهش دسترسی داشته باشم.
یه سای کوئری هم نوشتم.این ساب کوئری تعداد لینک های جزوه رو توو فیلد countTotal که با as مشخص کردیم نگه میداره که بعدا چک میکنیم اگر تعداد لینک ها یکی بود , لینک دانلود نمایش داده بشه و نره صفحه ی بعد.
البته اگر روشت عوض شد و قرار شد همه ی لینک ها وقتی کلیک شد , بره صفحه ی بعد و اونجا لینک های دانلود بیاد , خوب دیگه نه به subquery و نه به جوین نیاز داری که قبلا هم گفتم.
در ادامه ی کوئری گفته شده روی کدام دو تا جدول جوین بشه:
کد: |
FROM project LEFT OUTER JOIN links
|
و جوین با چه شرطی:
کد: |
on project.id=links.project_id
|
یعنی هر جایی , آیدی project برابر باشه با فیلد project_id جدول links (که این فیلد کلید خارجی است).
یکبار کوئریرو داخل خود phpmyadmin و جدولت , اجرا کن و نتیجرو ببین.
اسامی فیلدهارو مثل اسامی جدولت کن. |
|
[ وضعيت كاربر: ]
|
تشکرها از این پست:
|
|
|
صفحه 1 از 1
تمام زمانها بر حسب GMT + 3.5 Hours میباشند
|
|
شما نمی توانید در این بخش موضوع جدید پست کنید شما نمی توانید در این بخش به موضوعها پاسخ دهید شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید شما نمی توانید موضوع های خودتان را در این بخش حذف کنید شما نمی توانید در این بخش رای دهید
|
|
|