0

コードを機能させるには、コードをごまかす必要がありました。少しクリーンアップするために明らかなことを見逃したのか、それとも私のファッジが実際にこの問題を解決する正しい方法なのか疑問に思っています。

キーでセッション変数配列からアイテムを削除するためのボタンがページにあります。

ボタン値を生成するための PHP....

foreach($rows as $key => $row){
++$key;
$sql = 'SELECT ingredient_name FROM ' . INGREDIENTS_TABLE . ' WHERE ingredient_id = '.$row[0];
$result = $db->sql_query($sql);
$ingredient = $db->sql_fetchrow($result);
$template->assign_block_vars('ingr_list', array(
    'INGREDIENT'    => $ingredient['ingredient_name'],
    'QTY'       => $row[1],
    'REMOVE_KEY' => $key,
    ));

}

HTMLボタン....

<button type="submit" name="remove" id="remove" value="{ingr_list.REMOVE_KEY}" title="Remove {ingr_list.INGREDIENT} ?">x</button>

クリック時のPHP....

if($_POST['remove']){
$key=--$_POST['remove'];
if($key!==false) unset($_SESSION['ingredients'][$key]);
}

ご覧のとおり、$key 番号を取得し、すぐに 1 を追加しています。これは、$key の値が 0 の場合、ボタンの値も 0 になるためです。値 0 でボタンの値がクリックされると、if($_POST['remove']) 句は無視されます。if 句が渡されるとすぐに、実際のキーを特定するために、そこから 1 を減算します。

見てくれてありがとう:)

4

2 に答える 2

5

ポスト値が設定されているため失敗していますが、0に設定されています。if(0)と同じなif(false)ので合格しません。使用してみてください:

if(isset($_POST['remove']))

これにより、コードは有効な送信時にのみ入力されますが、必要に応じて 1 を加算/減算する必要なく、キーを 0 から開始することもできます。

于 2013-05-01T11:39:54.033 に答える
1

タイプ別でも比較する場合は 0 を使用できますif($_POST['remove'] !== false)

于 2013-05-01T11:40:52.983 に答える