Как вставить динамические данные в Codeigniter?

в python ..... intendation имеет значение, например:

if a==1:
    print("hey")

if a==2:
   print("bye")

print("all the best")

В этом случае «все лучшее» будет напечатано, если выполнено одно из двух условий, но если бы это было например

if a==2:
   print("bye")
   print("all the best")

, тогда «все лучшее» будет напечатано, только если a == 2

0
задан pradeep 13 July 2018 в 10:11
поделиться

5 ответов

Надеюсь, это поможет вам

Ваш контроллер Act_AddProducts должен выглядеть следующим образом:

function Act_AddProducts() 
{
   $prodnames = $this->input->post( 'prodname' );
   $prodrates = $this->input->post( 'rate' );
    if ( ! empty($prodnames) && ! empty($prodrates) ) 
    {
        foreach ($prodnames as $key => $value ) 
        {
            $data['product_name'] = $value;
            /* make sure product_rate columns is correct i just guess it*/
            $data['product_rate'] = $prodrates[$key];
            $this->ProductModel->add_products($data);
        }

    } 
}

Ваша модель add_products должен выглядеть следующим образом:

function add_products($data)
{
   if ( ! empty($data))
   {
      $this->db->insert('tbl_product_master', $data);
   }
}
1
ответ дан pradeep 17 August 2018 в 13:31
поделиться
  • 1
    убедитесь, что имя столбца product_rate равно product_rate, иначе измените его на контроллер, так как u не выдаст имя столбца – pradeep 13 July 2018 в 07:16
  • 2
    Вы имеете в виду функцию add_products ($ data) в модели? – Sudhi Sr 13 July 2018 в 08:06
  • 3
    Я пробовал ваш код, но только первое значение вставляется в db. – Sudhi Sr 13 July 2018 в 08:15
  • 4
    что такое имя столбца для цены продукта? У вас возникли какие-либо ошибки? – pradeep 13 July 2018 в 08:20
  • 5
    Имена столбцов в порядке, и я не получаю никаких ошибок. – Sudhi Sr 13 July 2018 в 08:56

Это только для вашей справки .... Простой пример кода для динамической вставки.

defined('BASEPATH') OR exit('No direct script access allowed');
class Checking extends CI_Controller {
public function index()
{ 
echo "<form method='post' action='". base_url("Checking/save") ."'>";
    for($i=0;$i<=5;$i++)
    {
            echo "<input type='text' name='input_text[]'>";
    }
    echo "<button type='submit'>Submit</button></form>";
}

public function save(){
    foreach($this->input->post("input_text") as $Row){
        $this->db->insert("checking",array("input_text"=>$Row['input_text']));
    }
}
}

создать контроллер как Checking.php и запустить его .. вы получите идею

Для базы данных

CREATE TABLE `checking` (
`ch` int(11) NOT NULL AUTO_INCREMENT,
`input_text` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ch`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
0
ответ дан Bergin 17 August 2018 в 13:31
поделиться
  • 1
    Хорошо я попробую. Также вы можете показать, как вставить Rate ? – Sudhi Sr 13 July 2018 в 06:53
  • 2
    Нет, он не работает. Вводится только первое входное значение. – Sudhi Sr 13 July 2018 в 06:58
  • 3
    не используйте обратную вставку foreach в модели ... даже после удаления модели, только одна информация вставляет ... Я могу предоставить пример кода ... Но в этом коде вместо модели я сделал все в контроллере ... просто пройти через это – Bergin 13 July 2018 в 07:47
  • 4
    Для немедленной цели я сделал все, что в контроллере, просто возьмите это как образец, чтобы получить представление о том, как вы свежее. Сделайте раздел вставки внутри модели – Bergin 13 July 2018 в 07:51

Если вы хотите загрузить большую запись, используйте insert_batch вместо простой вставки вашего контроллера.

function Act_AddProducts() 
{
$product_rate = $_POST['prodrate'];
$product_name = $_POST['prodname'];

if(!empty($product_rate) && !empty($product_rate)){
$data_array = array();
  foreach ($product_rate as $key => $value ) 
        { 
            $tmp_array = array();
            $tmp_array['product_name'] = $value;
            $tmp_array['product_rate'] = $product_rate[$key];
      $data_array[] = $tmp_array;
        }
   $this->ProductModel->add_products($data_array);
}

модель должна быть

function add_products($data)
  {


      if($this->db->insert_batch('tbl_product_master', $data))
      {
        return true;
      }
      else
      {
        return false;
      }
  }
0
ответ дан Rahul kalal 17 August 2018 в 13:31
поделиться
  • 1
    Где вы набираете модель в контроллере в своем ответе? – Sudhi Sr 13 July 2018 в 09:04
  • 2
    Извините по ошибке, я забыл вызвать модель только что отредактированного кода. – Rahul kalal 13 July 2018 в 09:11
  • 3
    Только первая строка вставляет .... – Sudhi Sr 13 July 2018 в 09:18
  • 4
    просто отредактированный код можно попробовать один раз – Rahul kalal 13 July 2018 в 09:37
  • 5
    Нет, это не проблема с именем переменной. Его не лопнуть внутри foreach или не получить как массив из формы. Как вы думаете, я что-то пропустил в View? – Sudhi Sr 13 July 2018 в 09:40

TRY THIS

controller

function Act_AddProducts() {
$product_rate = $data = array();

$product_rate = $this->input->post( 'prodrate' );
$product_name = $this->input->post( 'prodname' )
        if ( !empty($this->input->post( 'prodname' ))&&!empty($this->input->post( 'prodrate' ))) {
            foreach ( $product_name as $key => $value ) {
            $data['product_name'] = $value;
            $data['product_rate'] = $product_rate[$key];
                $this->ProductModel->add_products($data);
            }

        }

model

      function add_products($data)
  {
        $product_name = $data['product_name'];
        $product_rate = $data['product_rate'];
      if($this->db->insert('tbl_product_master', array('product_name' => $product_name,'product_rate' => $product_rate)))
      {
        return true;
      }
      else
      {
        return false;
      }
  }
0
ответ дан vijay 17 August 2018 в 13:31
поделиться
0
ответ дан Bergin 6 September 2018 в 09:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: