استفاده از Select های تو در تو در php
با سلام ، یک select option داریم که محتویات آن از یک جدول خوانده می شود. حال می خواهیم محتویات select option دوم با توجه به عنصر انتخاب شده از select اول که با select دوم دارای فیلد مشترک id می باشد عناصر از جدول پر شود. مشکل اینجاست که چگونه می تونم id select option اولی را در query ایجاد شده در select دوم انتخاب کنم(در PHP)
کد های نوشته میشود به این صورت است:"
sql=select * from tbl2 where id1=id2
مقدار id2 خوانده شده را چجوری می تونم در php از قبل بخونم و در دستور فوق قرار بدم.
2 پاسخ
من با یه مثال مشابه کلیت کار رو توضیح می دم. البته کدنویسی کامل انجام نمیدم فقط کلی.
مثال مشابه با مورد سوال شما این هست که فرض کنیم یه select box داریم واسه فیلد استان و یه selectbox دیگه واسه فیلد شهر که لیست ظاهر شده در select box دوم بر اساس مورد انتخاب شده در select box اول تکمیل میشه.
پس دستور sql برای ایجاد لیست در select اولی به صورت زیر است:
select ostan_id, ostan_name from ostan_tbl
و دستور sql برای ایجاد لیست در seelect box دوم بر اساس مورد انتخاب شده در select box اول به صورت زیر است:
select shahr_id, shahr_name from shahr_tbl where ostan_id= id استان انتخاب شده
و برای ساخت select option ها بر اساس خروجی دستورات sql :
echo('<select id="select_ostan">'); while($row1=fetch(......)) { echo('<option value="'.$row1('ostan_id').'">'. $row1('ostan_name').' </option>'); } echo('</select>'); echo('<select id="select_shahr">'); while($row2=fetch(......)) { echo('<option value="'.$row2('shahr_id').'">'. $row2('shahr_name').' </option>'); } echo('</select>');
به نظرم دو نکته اساسی برای جواب سوال شما وجود داره:
1- مقدار value رو برای option ها برابر با id شیئی قرار بدین که نام اون برای کاربر از طریق قرار گرفتن در بین تگ های option نمایش داده میشه.
2- چون میخواین محتوای سلکت دوم بر اساس اولی پر بشه پس نیاز به عملیات ajax دارید تا id مقدار انتخاب شده در سلکت اول رو با ajax به سمت سرور بفرستید و محتوای سلکت دوم بر اساس مقدار فرستاده شده به سرور پردازش بشه (کوئری دوم دیتابیس) و بعد خروجی در سلکت دوم بنشینه.
سلام دوست عزیز شما میتونید از دستورات join استفاده کنید :-D این دستورات برای خواندن همزمان از دو جدول استفاده میشه. نحوه کار به این صورت است که از جدول اول اطلاعاتی خونده میشه و با توجه به اطلاعات جدول اول , از جدول دوم نیز اطلاعات همتا (مرتبط) خونده میشه! فرض کنید جدول اول شما tbl1 و جدول دوم شما tbl2 باشه.
select tbl1.id,tbl2.id from tbl1 left outer join tbl2 where tbl1.id=tbl2.id;
در مثال بالا جایی که ایدی درون جدول اول با ایدی درون جدول دوم یکسان باشه اطلاعات از جدول دوم هم گرفته میشه در غیر این صورت فقط اطلاعات جدول اول گرفته میشه.