Табличный ввод
Табличный ввод
как создать таблицу с полями ввода, а потом все это сохранить?
Re: Табличный ввод
Я в легком ступоре...
Re: Табличный ввод
Он наверное имеет ввиду GridView c editableColumn. ТС выражайтесь яснее :)
Re: Табличный ввод
des1roer писал(а):как создать таблицу с полями ввода, а потом все это сохранить?
Код: Выделить всё
save(new CreateTable());
Re: Табличный ввод
да читаю. гридвью наверно не то. думаю создать таблицу с textField
изюминка в том, что у меня не таблица, а выборка из нескольких.
ну координаты каждого поля я определить могу
это ид горизонта и ид элемента.
что мне нужно сделать чтобы передать ид1, ид2 и значение?
создать форму, в ней текстфилды, при клике посылать запрос к контролеру (не крейт), ну и там уж на основании пост запроса сохранять.
как сделать пост запрос к контролеру? аяксбаттон?
изюминка в том, что у меня не таблица, а выборка из нескольких.
ну координаты каждого поля я определить могу
это ид горизонта и ид элемента.
что мне нужно сделать чтобы передать ид1, ид2 и значение?
создать форму, в ней текстфилды, при клике посылать запрос к контролеру (не крейт), ну и там уж на основании пост запроса сохранять.
как сделать пост запрос к контролеру? аяксбаттон?
Re: Табличный ввод
в примитивном виде пока так
Код: Выделить всё
<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id' => 'plan-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation' => false,
// 'htmlOptions'=>array('enctype'=>'multipart/form-data'),
));
?>
<table align="center" width="98%" height="90%" border="1">
<?php
$cols = Plan::templateElem(49);
echo '<tr><th>Горизонт</th>';
for($i = 1, $cnt = count($cols); $i < $cnt; $i++)
{
echo '<th>';
echo $id = $cols[$i]['name'];
echo '</th>';
}
echo '</tr>';
$rows = Department::onlyChild(5);
for($y = 0, $cnt = count($rows); $y < $cnt; $y++)
{
echo '<tr>';
for($x = 0, $cnt = count($cols); $x < $cnt; $x++)
{
echo '<td>';
echo $cols[$x]['id'] . ' ' . $rows[$y]['id'];
echo '</td>';
}
echo '</tr>';
}
?>
</table>
<?php
$this->widget(
'bootstrap.widgets.TbButton', array(
'label' => 'Сохранить',
'url' => 'mysave',
)
);
?>
<?php $this->endWidget(); ?>
Re: Табличный ввод
вот примерно такое получается
view
controller
view
Код: Выделить всё
<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id' => 'plan-form',
'enableAjaxValidation' => false,
));
?>
<table align="center" width="98%" height="90%" border="1">
<?php
$cols = Plan::templateElem(49);
echo '<tr><th>Горизонт</th>';
for($i = 1, $cnt = count($cols); $i < $cnt; $i++)
{
echo '<th>';
echo $id = $cols[$i]['name'];
echo '</th>';
}
echo '</tr>';
$rows = Department::onlyChild(5);
for($y = 0, $cnt = count($rows); $y < $cnt; $y++)
{
echo '<tr>';
for($x = 0, $cnt = count($cols); $x < $cnt; $x++)
{
$id_elem = $cols[$x]['id'];
$id_lvl = $rows[$y]['id'];
echo '<td>';
//echo $cols[$x]['id'] . ' ' . $rows[$y]['id'];
echo CHtml::textField("elem[$id_lvl][$id_elem]",null, array('class' => 'span1'));
echo '</td>';
}
echo '</tr>';
}
?>
</table>
<?php
$this->widget('bootstrap.widgets.TbButton', array(
'buttonType' => 'submit',
'icon' => 'ok',
'type' => 'success',
'label' => 'Сохранить',
));
?>
<?php $this->endWidget(); ?>
Код: Выделить всё
public function actionPlan()
{
$model = new AnalizCreate;
if (isset($_POST['elem']))
{
$transaction = Yii::app()->db->beginTransaction();
try
{
$command = Yii::app()->db->createCommand();
$Ids = $_POST['elem'];
$cnt = max(array_keys($Ids));
$min = min(array_keys($Ids));
for($i = $min; $i <= $cnt; $i++)
{
$lvl = $Ids[$i];
if (isset($lvl))
{
$max_x = max(array_keys($lvl));
$min_x = min(array_keys($lvl));
for($i = $min_x; $i <= $max_x; $i++)
{
$command->insert('a_analiz_data', array(
'value' => $lvl[$i],
'elem_id' => $i,
'user_id' => Yii::app()->user->id,
));
}
}
}
$transaction->commit();
Yii::app()->user->setFlash($messageType, $message);
//$this->redirect(array('admin'));
}
catch (Exception $e)
{
$transaction->rollBack();
Yii::app()->user->setFlash('error', "{$e->getMessage()}");
//$this->refresh();
}
}
$this->render('plan');
}
Re: Табличный ввод
Так а где input с elem в таблице? Что же форма отправляет то и не понятно решили вы вопрос или рассказываете просто :)
Re: Табличный ввод
как где
в контролере проверяем не пустые ли элементы. если не пустые то сохраняем
Код: Выделить всё
echo CHtml::textField("elem[$id_lvl][$id_elem]",null, array('class' => 'span1'));