2012-03-12 10 views
0

これは、ユーザーがリストに追加するアイテムを検索し、そのリストに以前に追加されたアイテムが検索結果に表示される場合に機能するWebアプリケーションです。"定義されていない" URIセグメントcodeigniter;最初の関数はuriのヌルセグメントを探してから別の関数を使用しようとします

ただし、検索結果で以前にユーザーのリストに追加されていない項目が見つかった場合、ユーザーはこの新しい項目をリストに追加することができます。

これは、以前にユーザーのリストにあったアイテムを追加するための最初の機能です。 (ここでは「user_item_idを設定しなければならない第二の機能があります...これは

function addItem() { 
    $user_item_id = $this->uri->segment(3); 
    $master_item_id = $this->uri->segment(4); 
    $store = $this->uri->segment(5, ''); 
    $user_id = $this->main_model->getMasterUser($this->user_id); 

    if ($user_item_id == 'null') $user_item_id = $this->main_model->addToUserItems($master_item_id, $user_id); 
    $quantity = $this->main_model->addToShoppingList($user_item_id, $store, $user_id); 

    $message = ($quantity == '1') ? 'Added to list.' : 'On shopping list ' . $quantity . ' times.'; 
    $message .= '&nbsp; &nbsp; <span class="undo_button" params="unadd/' . $user_item_id . '">Undo?</span>'; 

    $return = array(
     'message'  => $message, 
     'user_item_id' => $user_item_id, 
     ); 
    echo json_encode($return); 
    } 

)「addToUserItems」と呼ばれる第二の機能を呼び出すべきである「($ user_item_id == 『NULL』であれば...」ラインに注意してください「どうやらではありません。

function addToUserItems($master_item_id, $user_id) { 
    $query = $this->db->query(" 
     INSERT INTO user_item (master_item_id, user_id, custom_category, custom_name, custom_store, expires_after, on_hand) 
     SELECT id, " . $user_id . ", original_category, original_name, '', default_expiration, 0 
     FROM master_item 
     WHERE id = '" . $master_item_id . "' 
     ;"); 
    return $this->db->insert_id(); 
    } 

私たちが見ている理由を任意のアイデア 『user_item_id』未定義の私の推測では、テストの仮定の時間後に、何らかの形で第二の機能は$ user_item_idに値を設定していないことである

?。

答えて

0

ありがとうございました。 user_item_idフィールドに値がない場合、user_item_id変数が設定されていないことが分かります。 $ result ['user_item_id'] = 'null'を含むように修正された他のファイルのコード。さらに、上記のaddItem関数はuser_item_id変数の値を 'null'にしていましたが、私の元の質問では触れられていないjavascriptファイルはuser_item_id変数をnullにしていました。だから、私たちはnullとnullの間で一貫して見える必要があった他のファイルに設定し、コード化する必要のある変数を持っていました。

0

バグが原因である可能性があります。http://bugs.mysql.com/bug.php?id=9481あなたは... master_item_idに基づいてデータを選択する余裕がある場合、クエリhttp://bugs.mysql.com/bug.php?id=27033

てみ分割までは、そのを取り、別のinsertクエリで、user_itemテーブルに挿入します。最後にlast_insert_id()を実行します。

$masterItem = $this->db->query('SELECT * FROM master_item WHERE master_item_id = $master_item_id'); 
$userItem = array();//add master item and user_id stuff 
$this->db->insert('user_item',$userItem); 
return $this->db->insert_id(); 
+0

ありがとう、insert into ... select文はアプリケーションの他の領域で正常に動作しているので、何か他のものが起きているはずです...アプリケーションボタンをクリックすると返されるURIセグメント... main/addItem/undefined/"master_item_id"。 master_item_idの値は正しいです。それは、user_itemテーブルへの新しく追加されたエントリのIDの数値を3のURIセグメントで評価するということだけです。代わりに、 "undefined"と表示されています... – user1263003

+0

OK、変数の削除を開始するには、 'addToUserItems()'から '1'を返し、URLが' main/addItem/1/"master_item_id" 'であるかどうかを確認してください。もしそうなら、クエリに問題があります... '$ this-> db-> last_query()'はクエリが何であるかを教えてくれます。あなたはaddToUserItemsからそれを返してそれを出力することができます。 – stormdrain

+0

ありがとうstormdrain ...いくつかのPHPスキルで少し苦労しています。 「master itemとuser_id stuffを追加する」という意味のwhayを明確にすることはできますか?私はあまりにも多くの配列を扱っていません。 – user1263003

関連する問題