Php 选择另一个多选中的选项时选择多个选项
我正在导入一个CSV文件,并将其添加到我的数据库表中。在下一页中,我想向刚刚插入到表中的数据添加信息。此数据将插入Php 选择另一个多选中的选项时选择多个选项,php,jquery,ajax,cakephp,Php,Jquery,Ajax,Cakephp,我正在导入一个CSV文件,并将其添加到我的数据库表中。在下一页中,我想向刚刚插入到表中的数据添加信息。此数据将插入import\u map表中 当选择Table1模型选项时,它将根据map\u表,使用Ajax在Table2模型选择框中选择选项。我不能只在map\u表中创建id字段,然后将其插入import\u map表中,因为用户可以在Table2Model选择框中选择与table1无关的选项 我的想法是用add()方法中的选定值构建一个数组。但问题是它似乎没有击中add()方法的if($thi
import\u map
表中
当选择Table1模型选项时,它将根据map\u表
,使用Ajax在Table2模型选择框中选择选项。我不能只在map\u表中创建id
字段,然后将其插入import\u map
表中,因为用户可以在Table2Model选择框中选择与table1
无关的选项
我的想法是用add()
方法中的选定值构建一个数组。但问题是它似乎没有击中add()
方法的if($this->request->is('ajax'))
部分。至少,当一个选项被选中时,它不会做任何事情
映射表
+-------------+-------------+
| `table1_id` | `table2_id` |
+-------------+-------------+
| 1 | 1 |
+-------------+-------------+
| 1 | 2 |
+-------------+-------------+
| 2 | 1 |
+-------------+-------------+
表1
+------------------+
| `id` | `name` |
+------+-----------+
| 1 | Table_1_1 |
+------+-----------+
| 2 | Table_1_2 |
+------+-----------+
表2
+------------------+--------------+
| `id` | `name` | `url` |
+------+-----------+--------------+
| 1 | Table_2_1 | example.com |
+------+-----------+--------------+
| 2 | Table_2_2 | example2.com |
+------+-----------+--------------+
进口
+------------------+---------+--------+------------+
| `id` | `country` | `month` | `year` | `imported` |
+------+-----------+---------+--------+------------+
| 1 | USA | 05 | 2016 | 0 |
+------+-----------+---------+--------+------------+
| 2 | CAN | 08 | 2015 | 0 |
+------+-----------+---------+--------+------------+
导入地图
+-------------+---------+
| `id` | int(11) |
| `table1_id` | int(5) |
| `table2_id` | int(5) |
| `import_id` | int(7) |
+-------------+---------+
导入控制器
<?php
App::uses('AdminController', 'Controller');
/**
* Class ImportController
*/
class ImportController extends AdminController
{
public $components = array('RequestHandler');
public function add()
{
$importedIds = $this->Session->read('importedIds');
if(!isset($importedIds))
{
$this->redirect(array('action' => 'index'));
}
if($this->request->is('post'))
{
# Save logic here
}
$this->loadModel('Table1Model');
$table1 = $this->Table1Model->find('list', array(
'fields' => array(
'id',
'name'
),
'order' => 'name ASC'
));
$this->set('table1', $table1);
$this->loadModel('Table2Model');
$table2 = $this->Table2Model->find('list', array(
'fields' => array(
'id',
'name'
),
'order' => 'name ASC'
));
$selectedTable2Ids = array();
if($this->request->is('ajax'))
{
# Build what options to select.
foreach($this->request['data']['Table1Model']['table1_ids'] as $table1)
{
$selectedTable2Ids = '';
}
}
$this->set('table2', $table2);
$this->set('selectedTable2Ids', $selectedTable2Ids);
$this->render('add');
}
}
#在这里加载jQuery
$(文档).ready(函数(){
$(“#表1”)。在('click',function()上{
var id=$(this.val();
如果(ID){
$.ajax({
url:“”,
数据:{table1_id:ids},
cache:false,
键入:“POST”,
数据类型:“JSON”,
成功:功能(数据){
$('#表2').html(数据);
}
});
}
});
});
我称之为链式下拉列表,您可以找到一个示例。源代码也可用。我称之为链式下拉列表,您可以找到一个示例。还提供了源代码。
<?php
App::uses('AppModel', 'Model');
/**
* Class Import
*/
class Import extends AppModel
{
public $useTable = 'import';
public $hasMany = array(
'ImportMap' => array(
'class' => 'ImportMap',
'foreign_key' => 'import_id'
)
);
}
<?php
App::uses('AppModel', 'Model');
/**
* Class ImportMap
*/
class ImportMap extends AppModel
{
public $belongsTo = array(
'Import' => array(
'class' => 'Import',
'foreign_key' => 'id'
),
'Table1',
'Table1'
);
}
<?php
App::uses('AppModel', 'Model');
/**
* Class Table1
*/
class Table1 extends AppModel
{
public $useTable = 'table1';
public $hasMany = array(
'MapTable',
'ImportMap'
);
}
<?php
App::uses('AppModel', 'Model');
/**
* Class Table2
*/
class Table2 extends AppModel
{
public $useTable = 'table2';
public $hasMany = array(
'MapTable',
'ImportMap'
);
<?php echo $this->Form->create('MapTableModel'); ?>
<div>
<div class="form-group">
<div class="input-group">
<?php
echo $this->Form->input('Table1Model.table1_id', array(
'id' => 'table1',
'required' => false,
'multiple' => 'multiple',
'type' => 'select',
'class' => 'form-control',
'label' => false,
'options' => $table1
));
?>
</div>
</div>
</div>
<div>
<div class="input-group">
<?php
echo $this->Form->input('Table2Model.table2_id', array(
'class' => 'form-control',
'required' => false,
'type' => 'select',
'multiple' => 'multiple',
'id' => 'table2',
'label' => false,
'options' => $table2,
'default' => $selectedTable2Ids
));
?>
</div>
</div>
<?php echo $this->Form->end('Add'); ?>
# Loading jQuery here
<script type="text/javascript">
$(document).ready(function() {
$("#table1").on('click', function() {
var ids = $(this).val();
if (ids) {
$.ajax({
url: '<?php echo Router::url(array("controller" => "import", "action" => "add"), true); ?>',
data: {table1_ids: ids},
cache: false,
type: 'POST',
dataType: 'JSON',
success: function (data) {
$('#table2').html(data);
}
});
}
});
});
</script>