امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
جستجو در دیتا بیس
#1
با سلام ...
من تازه کار بار کدایگنایتر رو شروع کردم قبلا php خام کار می کردم.

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


من این کارو کردم خطا میده که آرگومان تابع کنترلرم نیست!! :


html:

کد php:
<?php 
    
echo form_open('one/searchitem');?>
    <div class="form-group">
        <label for="name">جستجو</label>
        <input type="text" class="form-control" name="txt" placeholder="تایپ کنید">
    </div>
    <button type="submit" name="send" class="btn btn-default">Submit</button>
 <?php echo form_close();?>


control:
کد php:
public function searchitem ($txt){

 
   $this->load->model('Onemodel','',TRUE);

 
   if(isset($_POST ['txt']) && !empty($_POST['txt'])) {

 
       $txt$_POST'txt'];
 
       $this->load->model('Onemodel');
        
$result=$this->Onemodel->searchmodel($txt);

 
       if($result)
 
       {
         
  $data['result']=$result;
 
          $this->load->view('search',$data);

 
       }
 
       else
        
{
 
           redirect('normal');
 
       }
 
    



model:
کد php:
    public function searchmodel($txt)
{
 
   $condition = array('name' => $txt);
 
   $this->db->select('*');
 
   $this->db->from('fristtable');
 
   $this->db->where($condition);
 
   $query $this->db->get();
 
   return $result $query->result();





چه کار کنم؟ مشکل کجاست؟
پاسخ
#2
سلام
ابتدا ورودتون رو به انجمن کدایگناینتر فارسی تبریک و خوش آمد میگم.

برای گرفتن مقدار POST در کد ایگنایتر اون رو باید به صورت زیر دریافت کنید:
کد php:
public function searchitem (){

 
   $txt $this->input->post('txt'true);

 
   $this->load->model('Onemodel','',TRUE);

 
   if(isset($_POST ['txt']) && !empty($_POST['txt'])) {

 
       $txt$_POST'txt'];
 
       $this->load->model('Onemodel');
 
       $result=$this->Onemodel->searchmodel($txt);

 
       if($result)
 
       {
 
          $data['result']=$result;
 
          $this->load->view('search',$data);

 
       }
 
       else
        
{
 
           redirect('normal');
 
       }
 
    


در واقع مقدار فیلد txt به جای اینکه به صورت آرگومان به اکشن کنترلر ارسال بشه از طریق متود $this->input->post('txt', true) گرفته میشه.

بخش دوم سوالتون اینکه میخواهید نام و نام خانوادگی رو سرچ کنید کافیه داخل آرایه $condition از چند شرط داخیل آرایه استفاده کنید مثلا:
کد php:
public function searchmodel($txt$lastname)
{
 
   $condition = array('name' => $txt'last_name' => $last_name);
 
   $this->db->select('*');
 
   $this->db->from('fristtable');
 
   $this->db->where($condition);
 
   $query $this->db->get();
 
   return $result $query->result();



همچنین میتونید تکه کد مربوط به اکتیو رکورد رو به صورت خلاصه تر به صورت زیر بنویسید:
کد php:
public function searchmodel($txt$lastname)
{
 
   return $this->db->get_where('fristtable', array('name' => $txt'last_name' => $last_name))->result();

لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
 سپاس شده توسط farhadhp ، alirezax2
#3
(2017/05/30، 03:27 PM)admin نوشته است: سلام
ابتدا ورودتون رو به انجمن کدایگناینتر فارسی تبریک و خوش آمد میگم.

برای گرفتن مقدار POST در کد ایگنایتر اون رو باید به صورت زیر دریافت کنید:
کد php:
public function searchitem (){

 
   $txt $this->input->post('txt'true);

 
   $this->load->model('Onemodel','',TRUE);

 
   if(isset($_POST ['txt']) && !empty($_POST['txt'])) {

 
       $txt$_POST'txt'];
 
       $this->load->model('Onemodel');
 
       $result=$this->Onemodel->searchmodel($txt);

 
       if($result)
 
       {
 
          $data['result']=$result;
 
          $this->load->view('search',$data);

 
       }
 
       else
        
{
 
           redirect('normal');
 
       }
 
    


در واقع مقدار فیلد txt به جای اینکه به صورت آرگومان به اکشن کنترلر ارسال بشه از طریق متود $this->input->post('txt', true) گرفته میشه.

بخش دوم سوالتون اینکه میخواهید نام و نام خانوادگی رو سرچ کنید کافیه داخل آرایه $condition از چند شرط داخیل آرایه استفاده کنید مثلا:
کد php:
public function searchmodel($txt$lastname)
{
 
   $condition = array('name' => $txt'last_name' => $last_name);
 
   $this->db->select('*');
 
   $this->db->from('fristtable');
 
   $this->db->where($condition);
 
   $query $this->db->get();
 
   return $result $query->result();



همچنین میتونید تکه کد مربوط به اکتیو رکورد رو به صورت خلاصه تر به صورت زیر بنویسید:
کد php:
public function searchmodel($txt$lastname)
{
 
   return $this->db->get_where('fristtable', array('name' => $txt'last_name' => $last_name))->result();




ممنون از پاسخ جامتون .... جسارتا الان فقط یک صفحه سفید میاره و هیچ عکسالعملی نشون نمیده!!
پاسخ
#4
سلام
ارور لاگ رو فعال کنید تا بتونید همه خطاها رو ببنید.
فایل index.php اصلی کدایگنایتر رو باز کنید ببنید خط 21 باید این باشه:
کد php:
    define('ENVIRONMENT''development'); 
و یا اینکه داخل کنترلر این خط رو اضافه کنید:
کد php:
ini_set('display_errors''1'); 
همچنین می تونید از فایل php.ini ارور ریپورتینگ رو فعال کنید.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#5
(2017/06/03، 05:20 PM)admin نوشته است: سلام
ارور لاگ رو فعال کنید تا بتونید همه خطاها رو ببنید.
فایل index.php اصلی کدایگنایتر رو باز کنید ببنید خط 21 باید این باشه:
کد php:
    define('ENVIRONMENT''development'); 
و یا اینکه داخل کنترلر این خط رو اضافه کنید:
کد php:
ini_set('display_errors''1'); 
همچنین می تونید از فایل php.ini ارور ریپورتینگ رو فعال کنید.


ممنون ....
در ایندکس این کد هست:
کد php:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); 

فعالند همشون ولی خطایی نشون نمیده!!
پاسخ
#6
فایل زیر را باز کنید:
application/config/config.php
و مقدار زیر را پیدا و آن را به مقدار جدید تغییر بدید:
کد php:
$config['log_threshold'] = 4
بعد وارد پوشه زیر بشید:
application/logs
و بعد از اجرای کدتون باید یه فایل با آدرس امروز(به میلادی) ساخته شده باشه که داخلش تمام خطاها وجود خواهد داشت.
اون رو بررسی کنید و در صورت لزوم اینجا قرار بدید که بررسی بشه.
حتما یادتون باشه که حتما سایت رو یه بار باز کنید تا خطا در فایل ثبت بشه.

روی چه سیستم عاملی هستید ؟ از XAMPP استفاده می کنید یا نرم افزار دیگری؟
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#7
(2017/06/04، 07:27 AM)admin نوشته است: فایل زیر را باز کنید:
application/config/config.php
و مقدار زیر را پیدا و آن را به مقدار جدید تغییر بدید:
کد php:
$config['log_threshold'] = 4
بعد وارد پوشه زیر بشید:
application/logs
و بعد از اجرای کدتون باید یه فایل با آدرس امروز(به میلادی) ساخته شده باشه که داخلش تمام خطاها وجود خواهد داشت.
اون رو بررسی کنید و در صورت لزوم اینجا قرار بدید که بررسی بشه.
حتما یادتون باشه که حتما سایت رو یه بار باز کنید تا خطا در فایل ثبت بشه.

روی چه سیستم عاملی هستید ؟ از XAMPP استفاده می کنید یا نرم افزار دیگری؟

ممنون از رسیدگی و پاسخهاتون .... خوشحالم که همچین انجمن کدایگنایتری پیدا کردم ....

کار های انجام شده رو گفتید کردم اینم خروجی log :
کد php:
INFO 2017-06-05 17:42:09 --> Config Class Initialized
INFO 
2017-06-05 17:42:09 --> Hooks Class Initialized
DEBUG 
2017-06-05 17:42:09 --> UTF-8 Support Enabled
INFO 
2017-06-05 17:42:09 --> Utf8 Class Initialized
INFO 
2017-06-05 17:42:09 --> URI Class Initialized
INFO 
2017-06-05 17:42:09 --> Router Class Initialized
INFO 
2017-06-05 17:42:09 --> Output Class Initialized
INFO 
2017-06-05 17:42:09 --> Security Class Initialized
DEBUG 
2017-06-05 17:42:09 --> Global POSTGET and COOKIE data sanitized
INFO 
2017-06-05 17:42:09 --> Input Class Initialized
INFO 
2017-06-05 17:42:09 --> Language Class Initialized
INFO 
2017-06-05 17:42:09 --> Loader Class Initialized
INFO 
2017-06-05 17:42:09 --> Helper loadedurl_helper
INFO 
2017-06-05 17:42:09 --> Controller Class Initialized
INFO 
2017-06-05 17:42:09 --> Database Driver Class Initialized
INFO 
2017-06-05 17:42:09 --> Model Class Initialized
INFO 
2017-06-05 17:42:09 --> Final output sent to browser
DEBUG 
2017-06-05 17:42:09 --> Total execution time0.0617 

من از wampserver 3 استفاده می کنم.
پاسخ
#8
اینجا هیچ خطایی ثبت نشده است. حتما یه مرحله از کارو رو دارید اشتباه انجام میدید.
فایل کنترلر و اون متود رو به همراه model و اون متود اینجا قرار بدید تا تست بشه.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان