2016-03-26 6 views
0

В моем модуле мне нужна функциональность, аналогичная автозавершению. Мне нужно создать таблицу всякий раз, когда я нахожу имя. Скажем, например, если я нахожу Джона, тогда таблица должна появиться, имея все «John's в базе данных» с их другими атрибутами, такими как идентификатор электронной почты, специализация, адрес и т. Д. Затем, когда я выбираю конкретный «john» (нажав на имя/чек box/любым другим способом), его информация должна быть заполнена в моей форме автоматически. Я могу извлечь детали всех «John's using json (я напечатал в окне предупреждения), но две проблемы, с которыми я столкнулся: 1.) Я не могу создать таблицу, соответствующую« Джону » 2.) Я не знаю, как передать данные в мою форму, когда пользователь запрашивает нужную строку.Создание динамической таблицы в cakephp

Также, когда я извлекаю данные, отображаются только данные для последней записи в таблице (т. Е. Последний '' john ''); т. е. сохраняется только последний «джон». Хотя цикл for показывает все «john».

Я вставляю свой контроллер и просматриваю код для справки.

Пожалуйста, предложите что-нибудь.

//Controller: 
public function getmasterdata($id=NULL) 
{ 
    $this->layout = 'ajax'; 
    $this->autoRender = false; 

    $q=$this->request->data['nns']; 
    $details=array(); 
    $this->loadModel('Approved_panel'); 
    $conditions = 'Approved_panel.name LIKE "%'.$q.'%"'; 

    $countt=$this->Approved_panel->find('count',array('conditions'=>$conditions)); 
    $masterdata=$this->Approved_panel->find('all',array('conditions'=>$conditions)); 
    //print_r ($masterdata); 

    foreach($masterdata as $m) 
    { 
     $details=$m['Approved_panel']; 
     print_r($details); 

    } 
    //print_r($details); 
    $data=''; 
    foreach($details as $key=>$value) 
    { 
     $data.=$key.'//'.$value.'&&&'; 
    } 
    print_r($data); 
    //echo json_encode($details); 
    exit; 
} 

`

//View: 
$("#name"+lastChar).on('keyup',function() 
{ 
     $('#master_details').show(); 
     var namess=$('#name'+lastChar).val(); 
     //alert(namess); 
     $.ajax({ 
     cache: false, 
     dataType: "html", 
     type: "POST", 
     evalScripts: true, 
     url: '<?php echo   Router::url(array('controller'=>'Panels','action'=>'getmasterdata'));?>', 
     data: ({nns:namess}), 
     success: function(result){ 
       alert(result); 
       $('#detailss').val(result); 
      } 
     }); 
    }); 

`

//This is the div in which data should be displayed. These are the headers. I don’t know how to get data into this. 

<div id="master_details"> 
<h2 align="center">Previous Panel Member's Details</h2> 
<table> 
<thead> 
<tr> 
    <th> Name</th> 
    <th> Designation</th> 
    <th> Specialization</th> 
    <th> University</th> 
    <th> College</th> 
    <th> Address</th> 
    <th> Phone</th> 
    <th> Email</th> 
    <th> Papercode</th> 
    <th> Action</th> 
    </tr> 
</thead> 
</table> 
</div> 

ответ

0

Пожалуйста, проверьте, если $ д возвращается ничего эхо $ Q;

или делать пр ($ this-> request-> данные) // чтобы получить печать массива данных

+0

Он возвращает данные. Данные печатаются в окне предупреждения. Проблема в том, что в массиве $ details есть только последние данные. – Nikita

0

Возможно, это путь написано ваше состояние заявление. Что говорит echo $ sql. Вы также можете запустить инструкцию в phpmyadmin. Попробуйте следующее:

$masterdata=$this->Approved_panel->find('all', ['conditions'=>[Approved_panel.name LIKE' => "%'.$q.'%"]]; 

 Смежные вопросы

  • Нет связанных вопросов^_^