-1

私はこのコードを持っています:

<?php
$animals = array('cat', 'dog', 'mouse', 'elephant');
for($i=0, $n = count($animals); $i++){
    echo $animals[$i]. '<input type="submit" name="remove" value="remove"/><br/>';
    if(isset($_POST['remove'])){
        unset($animals[$i]);
    }
}
?>

削除ボタンをクリックしても何も起こりません。何か案が?

4

2 に答える 2

1

各ボタンの値として「削除」を提示する場合、最も簡単な方法は、name attribute. $_POSTが送信されると、配列を反復処理して、removeキーに基づいて何かを設定解除できます。

<?php
$animals = array('cat', 'dog', 'mouse', 'elephant');
if(isset($_POST['remove']) && is_array($_POST['remove'])){
    foreach($_POST['remove'] as $k=>$remove){
        unset($animals[$k]);
    }
}

echo '<form method="post" action="./">';
foreach($animals as $key=>$animal){
    echo $animal. '<input type="submit" name="remove['.$key.']" value="remove"><br/>';
}
echo '</form>';?>

注:探しているものを実現する方法はたくさんあります。これは一つの可能​​性です。

于 2012-12-08T20:20:17.237 に答える
1

これは、使用できる別のアプローチでもあります

$animals = array('cat', 'dog', 'mouse', 'elephant');
if(isset($_POST['remove'])) $animals=array_diff($animals, array($_POST['animal']));
foreach($animals as $pet)
{
    echo'<form method="post" action="">';
    echo $pet.'<input type="submit" name="remove" value="remove"/><br/>';
    echo '<input type="hidden" name="animal" value="'.$pet.'"/>';
    echo '</form>';
}

更新:(使用できるJavaScriptソリューションの場合)

$animals = array('cat', 'dog', 'mouse', 'elephant');
echo'<form name="animalForm" method="post" action="">'; // action should be your this file name, i.e. 'pets.php'
foreach($animals as $pet)
{
    echo '<label>'.$pet.'<input type="button" class="remove" value="remove"/></label><br/>';
}
echo '</form>';

そして、これは次のようなタグ間JavaScriptのタグで使用できるコードですheadscript

<script type="text/javascript">
    window.onload=function(){
        var btns=document.getElementsByClassName('remove');       
        for(i=0;i<btns.length;i++)
        {
            if(btns[i].type==='button' && btns[i].className==='remove')
                btns[i].onclick=remove;
        }
    };
    function remove(event){
        var e = event || window.event;
        var el = e.target || e.srcElement;
        document.animalForm.removeChild(el.parentNode);
    }
</script>

JSデモ

于 2012-12-08T20:43:12.360 に答える