-1

コード形式の問題のために、私の問題をjpgファイルに添付しました:::

問題は、「tbl_featured_table」にデータが保存されていないことです。

コントローラ

public function save_featured_product() {
$data = array();

if ($this->input->post()) {
$data['featured_id'] = $this->input->post('featured_id', true);
$data['product_id'] = $this->input->post('product_id', true);
$data['product_name'] = $this->input->post('product_name', true);

$data['featured_product_name'] = $this->input->post('featured_product_name', true);
$data['featured_product_price'] = $this->input->post('featured_product_price', true);
$data['featured_product_quantity'] = $this->input->post('featured_product_quantity', true);
$data['featured_product_sku'] = $this->input->post('featured_product_sku', true);
$data['featured_product_short_description'] = $this->input->post('featured_product_short_description', true);
$data['featured_product_long_description'] = $this->input->post('featured_product_long_description', true);
$data['featured_product_status'] = $this->input->post('featured_product_status', true);
$data['featured_product_image'] = $this->input->post('featured_product_image', true);

$this->sa_model->save_featured_product_info($data);
}

モデル

function save_featured_product_info($data){
if (isset($data['product_id']) && is_array($data['product_id'])) {
foreach ($data['product_id'] as $key => $each) {
$temp[] = array(
'featured_id' => $data['featured_id'][$key],
'product_id' => $data['product_id'][$key],
'product_name' => $data['product_name'][$key],
'featured_product_name' => $data['featured_product_name'][$key],
'featured_product_price' => $data['featured_product_price'][$key],
'featured_product_quantity' => $data['featured_product_quantity'][$key],
'featured_product_sku' => $data['featured_product_sku'][$key],
'featured_product_short_description' => $data['featured_product_short_description'][$key],
'featured_product_long_description' => $data['featured_product_long_description'][$key],
'featured_product_status' => $data['featured_product_status'][$key],
'featured_product_image' => $data['featured_product_image'][$key],
);
}
if (isset($temp)) {
$this->db->insert_batch('tbl_featured_products', $temp);
}

見る

        Product Name:
    <select name="product_id[]">
    <?php foreach ($all_product as $values) { ?>
    <option value="<?php echo $values->product_name; ?>"><?php echo $values->product_name; ?></option>
    <?php } ?>
    </select>
    <?php foreach ($all_product as $values) { ?>
    <input type="checkbox" name="featured_product_name[]" value="<?php echo $values->product_name; ?>" /> 
    <?php echo $values->product_name; ?> <br>
    <input hidden="hidden" name="featured_id[]" value="<?php echo $values->product_id; ?>" />
    <input type="hidden" name="product_name[]" value="<?php echo $values->product_name; ?>" >
    <input name="featured_product_price[]" value="<?php echo $values->product_price;?>" /> 
    <input name="featured_product_quantity[]" value="<?php echo $values->product_quantity; ?>" /> 
    <input name="featured_product_sku[]" value="<?php echo $values->product_sku; ?>" /> 
    <input name="featured_product_short_description[]" value="<?php echo $values->product_short_description; ?>" /> 
    <input name="featured_product_long_description[]" value="<?php echo $values->product_long_description; ?>" /> 
    <input name="featured_product_status[]" value="<?php echo $values->product_status; ?>" /> 
    <input name="featured_product_image[]" value="<?php echo $values->product_image; ?>" /> 
    <?php } ?>

注意 ::: 製品名または製品 ID ごとに複数のデータを保存したいと考えています。それもうまくいきません。私の問題を解決するためにあなたの助けが必要です。

専門的に私を助けてください。私を否定的に評価しないでください。

4

2 に答える 2

1

私はあなたにいくつかの一般的なヒントを与えるつもりです。$this->input->post に xss clean TRUE を含めたことに対する称賛

このようなプロジェクトは、常に 1 つまたは 2 つの値で開始してください。それを機能させます。次に、残りのフィールドを追加します。私はこれを「健全性チェック」と呼んでいます。なぜなら、これほど多くのフィールドを処理しようとすると、気が狂ってしまうからです :-)

コントローラーのコードを見てください。次に、モデルのコードを見てください。まったく同じ値に対して、大量のコードがあることがわかりますか? コントローラーは薄くて派手であるべきです。コントローラーの上司は次のように言っています: このフォームは Validate true または false? false の場合 - ビューを再度表示します。true の場合: データベース テーブルに値を追加しましたか? はいまたはいいえ? はいの場合 - 成功ページを表示します。

モデルは、データの重い作業を行います。モデルはフォーム データを検証します。モデルは、データベースに必要なデータ配列を作成します。これだけのデータがあるものについては、データ配列を作成するだけの別のメソッドを作成してください。次に、次のような単純なデータベース呼び出しがあります

function _insertProduct( $product ) {
    $this->db->insert( 'tbl_featured_products', $product );
    if ( $this->db->affected_rows() == '1' ) {return TRUE;}
    else {return FALSE;}

} 

そのシンプルで美しいコードを見てください。挿入が機能したかどうかがわかります。

モデルdbメソッドからこれを見てください

if (isset($data['product_id']) && is_array($data['product_id'])) {

ダメダメダメ!いいえ!データベース呼び出しにデータ構造を渡すと、最初にそれをきれいにして磨き、ワックスをかけました。あなたはそれが完璧で有効であることを知っているので、このセットは何ですか?

最後に、何も名前を付けることはありません: temp は何を意味するのでしょうか? 答え: 意味はありません。そしてそれは問題です。私が怒鳴っている間は、それを $data と呼ばないでください。ビューに渡す値に対してのみ $data という名前を予約します。(一般的な意見ではないかもしれませんが、コーディングが容易になることをお約束します)。メソッド名と変数名は非常に重要です。これらはコードの旅の道しるべです:-)

于 2013-10-03T22:57:20.787 に答える