PDA

View Full Version : سوال: حلقه های تو در تو



css-man
یک شنبه 06 مهر 1393, 16:10 عصر
دوستان من از دیتابیس جدول برنها همه برندها رو سلکت کردم و دارم به ازای هر برند یک تگ div نمایش میدم
حالا میخام تو هر کدوم از این تگها محصولات مربوط به اون برند ها رو هم نشون بدم
چطور میتونم این کار روانجام بدم؟

bagherok
یک شنبه 06 مهر 1393, 17:11 عصر
خوب با foreach

godofphp
یک شنبه 06 مهر 1393, 17:59 عصر
اطلاعات رو از پایگاه داده که میخونید داخل یک آبجکتی ریخته میشه و باید محتویات اون را داخل یک حلقه (

خوب با foreachهمیشه foreach نیست دوست عزیز )نمایش بدی این نمونه کد رو ببین


<?php
mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");
$result = mysql_query("select * from mytable");
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>

این یک نمونه از خود منوآل پی اچ پی هست و شما مشاهده میکنید که به پایگاه داده وصل شده و یک کوئری گرفته شده و نتیجه ی اون داخل یک متغیر با عنوان result ریخته شده و سپس داخل حلقه ی while تا زمانی که به تعداد محتویات اون میچرخه و میتونه به محتویات اون دسترسی داشته باشه
همونطور که مشاهده میکنید در این حلقه دو مقدار fullname و user_id نام فیلدهای پایگاه داده بوده است و الان نسبت به ازای هر رکوردی که از داخل حلقه رد میشود مقدار آن را نمایش میدهد و اگر سوالی بود بپرسید بازم

css-man
یک شنبه 06 مهر 1393, 18:50 عصر
فکر کنم سوالم رو بد مطرح کردم
دوستان من دو تا جدولدارم
یکی برای ذخیره کردن برندها و یکی برای دخیره محصولات
تو جدول محصولات فیلدی به نام brand_id دارم که مشخص میکنه هر محصول برای چه برندیه

حالا میخوام یه صفحه داشته محصلات و برند هارو جدا جدا نمایش بده
مثلا یه دیو داشته باشم مخصوص آدیداس و توش تمام محصولاتی که برند ادیداس دارم نشون بدم
پائینش یه دیو داشته باشم به اسم نایک و توش محصولات نایک رو نشون بدم
میخوام داینامیک هم باشه و با یک کوئری هم انجام بشه

mostafa272
یک شنبه 06 مهر 1393, 23:31 عصر
فکر کنم سوالم رو بد مطرح کردم
دوستان من دو تا جدولدارم
یکی برای ذخیره کردن برندها و یکی برای دخیره محصولات
تو جدول محصولات فیلدی به نام brand_id دارم که مشخص میکنه هر محصول برای چه برندیه

حالا میخوام یه صفحه داشته محصلات و برند هارو جدا جدا نمایش بده
مثلا یه دیو داشته باشم مخصوص آدیداس و توش تمام محصولاتی که برند ادیداس دارم نشون بدم
پائینش یه دیو داشته باشم به اسم نایک و توش محصولات نایک رو نشون بدم
میخوام داینامیک هم باشه و با یک کوئری هم انجام بشه
شما خودت داری جوری توضیح میدی که درخواستت نیاز به دو پرس وجو داره اونوقت چطور میخوای تو یک پرس و جو انجام بشه. اصلا چرا می خوای حتما تو یک کوئری باشه؟

css-man
دوشنبه 07 مهر 1393, 00:25 صبح
ایرادی نداره با یه کوئری هم نشد نشد کلا انجام بشه هر طوری شد مهم نیست

bagherok
دوشنبه 07 مهر 1393, 01:57 صبح
حالا اینکه این روش چقدرمیتونه درست باشه یا نه به کنار.

یه سلکت میزنید روی جدول برندها
و JOIN میکنید با جدول محصولات


SELECT `p`.id `p_id`,`b`.id `b_id` FORM barand
LEFT JOIN product `p` ON `b`.id=`p`.b_id

Array
(
[0] => Array
(
[b_id] => 111
[p_id] => 7901
)

[1] => Array
(
[b_id] => 111
[p_id] => 7902
)

[2] => Array
(
[b_id] => 111
[p_id] => 7903
)

[3] => Array
(
[b_id] => 113
[p_id] => 7904
)

)







حالا همه محصولاتی روکه تویه برند هستند رو تفکیک میکنیم.

foreach($results as $result)
$r[$result['b_id']][]=$result['p_id'];


Array
(
[111] => Array
(
[0] => 7901
[1] => 7902
[2] => 7903
)

[113] => Array
(
[0] => 7904
)

)