جستجو چند گزینه ای...

ithelper

Member
سلام دوستان...من یک پست به نام جستجوی پیشرفته داشتم...که خیلی بچه ها اونجا به من کمک کردند...تا تونستم کدمو بنویسم...حالا یه مشکلی دارم توش یا یک اصلاحیه... میخوام قابلیت تیک خوردن چند تایی در یکی رو داشته باشه...این کد های من است :

PHP:
<form action="radioshow.php" method="post">
                        <fieldset>
              <center>
              <table width="900px">
              <tr>
              <td width="170">جستجوی پیشنهادی نام : </td>
              <td colspan="2"><input name="tag" type="text" id="tag" size="20"/> </td></tr>
             <tr bgcolor="#CCCCCC"> 
              <td>نمایش بر اساس نام محصول : </td>
              <td colspan="2"><input type="text" name="T1" size="20"> </td><td width="80">
            
            </td>
            </tr>
             <tr>
            <td>نمایش بر اساس نوع محصول : </td>
            <td width="50">
            <input type="radio" value="شعر" name="noe" id="noe" />شعر
            </td>
            <td width="100">
            <input type="radio" value="قصه" name="noe"  id="noe" />قصه
            </td>
            <td width="90">
            <input type="radio" value="موسیقی" name="noe" id="noe" />موسیقی
            </td>
            <td width="80">
            <input type="radio" value="غزل حافظ" name="noe" id="noe" />غزل حافظ
            </td>
            <td width="80">
            <input type="radio" value="ادعیه" name="noe" id="noe" />ادعیه
            </td>
            <td width="50">
            <input type="radio" value="طنز" name="noe" id="noe" />طنز
            </td>
            <td width="108">
            <input type="radio" value="نمایش رادیویی" name="noe" id="noe" />نمایش رادیویی
            </td>
            </tr>
            <tr bgcolor="#CCCCCC">
            <td>
            نمایش بر اساس مجری :</td>
            <td width="50">
            <input type="radio" value="مریم نشیبی ا" name="mojri"/>نشیبی ا
            </td>
            <td width="70">
            <input type="radio" value="علی معلم دامغانی" name="mojri"/>علی معلم
            </td>
            <td width="80">
            <input type="radio" value="سایر" name="mojri"/>سایر
            </td>
            
            </tr>
                        
            <tr><td>&nbsp;</td>
            <td><input type="submit" value="جستجو" /></td>
            
            </tr>
            </table>
            </center>
            </fieldset>
            </form>

که البته اینا با دکمه های رادیویی هست...میخوام به checkbox دکمه هام تغییر کنه و مثلا تو قسمت جستجو براساس نوع محصول هم شعر تیک بخورد هم قصه...
اینم کد جستجو :
PHP:
$query = "";
    if(!empty($_POST['tag']))
           $query.=($query?' and ':'')." `name` like '%".$_POST['tag']."%' ";
       if(!empty($_POST['T1']))
           $query.=($query?' and ':'')." `name` like '%".$_POST['T1']."%' ";
    
    if(!empty($_POST['noe']))
           $query.=($query?' and ':'')." `product` = '".mysql_real_escape_string(trim($_POST['noe']))."'";
       if(!empty($_POST['mojri']))
           $query.=($query?' and ':'')." `storyteller` = '".mysql_real_escape_string(trim($_POST['mojri']))."'";
    
       $result = mysql_query("SELECT * FROM radio WHERE ".$query) or die ('invalid query');
    
    $count = mysql_num_rows($result);
?>


ممنون میشم اگه در ادامه هم کمکم کنید....
 

Masoud1365

مدیر انجمن
سلام دوستان...من یک پست به نام جستجوی پیشرفته داشتم...که خیلی بچه ها اونجا به من کمک کردند...تا تونستم کدمو بنویسم...حالا یه مشکلی دارم توش یا یک اصلاحیه... میخوام قابلیت تیک خوردن چند تایی در یکی رو داشته باشه
نفهمیدم چی شد :دی
 

ithelper

Member
اینا با دکمه های رادیویی هست...میخوام به checkbox دکمه هام تغییر کنه و مثلا تو قسمت جستجو براساس نوع محصول هم شعر تیک بخورد هم قصه... بعد جستجو شود....
 

Masoud1365

مدیر انجمن
خب الان مشکل کجاست ؟
به جای دکمه های رادیویی چک باکس بزارید ! بعد مقادیرش رو با or در کوئریتون اعمال کنید !
 

ithelper

Member
بله باید به checkbox تغییر بدم...کجا رو باید OR بزارم؟
مشکلش اینجاست که اگه تنها به checkbox تغییر پیدا کنه...نتیجه جستجو یا فقط شعره یا فقط قصه...
دوست عزیز لطف راه حل اتونو یکم دقیق تر بگو ممنونم.
 

Masoud1365

مدیر انجمن
شما زحمت بکشید یه سرچ ساده در رابطه با نحوه استفاده OR در کوئری بزنید !
مثال :
PHP:
<?php $query = "SELECT * FROM `table` WHERE `col1` = ".$_POST['Checkbox1']." OR `col1` = ".$_POST['Checkbox2']." OR ..."; ?>
 

ithelper

Member
دوست عزیز...اگه میخواستم همچین کاری کنم که چرا کدمو گذاشتم؟ کدمو گذاشتم با توجه به این کمکم کنید.این تئوری هارو که منم یاد دارم.
 

Masoud1365

مدیر انجمن
شما قوانین سایت رو مطالعه کردید ؟
کدمو گذاشتم با توجه به این کمکم کنید.این تئوری هارو که منم یاد دارم.
این که نمیشه کمک ! میشه به جای شما کد نوشتن !
معمولا توی این انجمن برای کسی کد نمینویسند فقط راهنمایی میکنن تا شما خودتون بتونید کد دلخواهتون رو بنویسید !
 

plague

Member
فکر کنم منظور ایشون اینه که چطوری وقتی چک باکس میزارن بشه و چند تا تیک میخوره نتیجه همه تیک خورده ها منتقل بشه نه یکیشون

شما چک باکس بزار جای رادیو ها و اسم چک باکس هارو همنام بزار با یدونه [] در انتهاشون
کد:
name="noe[]"

این روش مقادیر چک باکس هایی رو که تیک خوردن تبدیل میکنه به یه آرایه
اونور توی کوئری میتونی حالا به هر روشی که دوست داری آرایه رو توی دیتابیس چک کنی

یچیزی شبیهبه این

PHP:
`product` IN  '".implode(',' , $_POST['noe']))."'";

در ضمن هر المنتی توی صفحه باید ID یکتایی داشته باشه خیلی مهم نیست حالا چون HTML زبون بی خیالیه ! ولی شما نباید به همه رادییو هات یه ID بدی اگه مجبوری و میخای یچیز همنام باشه از کلاس استفاده کن وگرنه هیچی !
 

ithelper

Member
خیلی ممنونم از شما دوست عزیز plague ، بله دقیقا منظورم همین بود، که بقیه ....
الان کد من به این شکل، ببینید

PHP:
<input type="checkbox" value="مریم نشیبی ا" name="mojri[]"/>نشیبی ا
            <input type="checkbox" value="علی معلم دامغانی" name="mojri[]"/>علی معلم
            <input type="checkbox" value="سایر" name="mojri[]"/>سایر

این مثلا قسمت کد اچ تی ام ال، و حالا کد جستجو ، اینو از من ایراد میگیره، آیا اشتباس؟ دقیقا همینی که گفتید هست

PHP:
if(!empty($_POST['mojri']))
    $query.=($query?' and ':'')." `storyteller` IN  '".implode(',' , $_POST['mojri']) ."' ";
اما میگه invalid query . آیا باید از unserialize و serialize استفاده کنم؟ ممنون میشم.
 
آخرین ویرایش:

plague

Member
مقادیر شرط IN رو توی پرانتز بزار
کد:
storyteller` IN (".implode(',' , $_POST['mojri']) .")
اگه بازم مشکل داشتی قبل از این خط
کد:
       $result = mysql_query("SELECT * FROM radio WHERE ".$query) or die ('invalid query');

بنویس
کد:
[COLOR=#000000][COLOR=#007700][/COLOR][/COLOR]echo $sql;
exit;

تا کوئریت رو کامل چاپ کنه بعد بزارش اینجا
 

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

بالا