如何使用按钮将项目删除到数组中

时间:2014-04-22 09:44:43

标签: php arrays

我有一个带有数组的代码,每次按下按钮都会保存我需要的东西,所以这些项目保存到我稍后用擦除按钮显示的数组中,但我不知道如何删除它,所以代码的一部分显示了我的意思:

echo "<table border=1>";
    echo "<tr class='tabPreciosTitles'>";
      echo "<td>Nom Activitat</td>
            <td>Nom Tipus Activitat</td>
            <td>Tipus Tarifa</td>
            <td>Temps/km</td>
            <td>Preu</td>";
    echo "</tr>";
for ($x=0;$x<count($savedArray[4]);$x++){
  echo "<tr>";
  echo "  <td>".$savedArray[0][$x]."</td>";
  echo "  <td>".$savedArray[1][$x]."</td>";
  echo "  <td>".$savedArray[2][$x]."</td>";
  echo "  <td>".$savedArray[3][$x]."</td>";
  echo "  <td>".$savedArray[4][$x]."</td>";
  echo "  <td><input type='submit' onclick='eliminar(".$savedArray[0][$x].",".$savedArray[1][$x].",".$savedArray[2][$x].",".$savedArray[3][$x].",".$savedArray[4][$x].")' class='carritoElim' value='elim'></td>";
  echo "</tr>";
}

所有表格的照片:

enter image description here

显示阵列上项目的另一张图片:

enter image description here

任何人都知道如何使用删除按钮删除引用数组上项目的选定行?感谢

2 个答案:

答案 0 :(得分:0)

在客户端,以下代码可以正常工作。

for ($x=0;$x<count($savedArray[4]);$x++){
  echo '<tr id="line' . $x . '">';
  echo "  <td>".$savedArray[0][$x]."</td>";
  echo "  <td>".$savedArray[1][$x]."</td>";
  echo "  <td>".$savedArray[2][$x]."</td>";
  echo "  <td>".$savedArray[3][$x]."</td>";
  echo "  <td>".$savedArray[4][$x]."</td>";
  echo "  <td><input type='submit' onclick='eliminar('line" . $x . "')' class='carritoElim' value='elim'></td>";
 echo "</tr>";
}

function eliminar($id) {
  var elem = document.getElementById($id);
  elem.parentNode.removeChild(elem);
}

但是,如果您还要删除服务器端的列,则应添加ajax代码。

答案 1 :(得分:0)

php是一种服务器端语言,这意味着一旦你的响应被发送到客户端(浏览器),大多数情况下你的所有&#34;已保存&#34;数据/变量将丢失。

我不喜欢你的选择语言,但这是一种解决方法。

技巧是在用户单击“消除”按钮时扫描整个数据表,然后将所有数据发送回服务器并重新创建阵列,并取出所选行。然后将整个数组打印回html格式并再次发送给用户。

此方法的关键部分是您需要在每个响应中打印您希望保留的所有内容,以便您可以将它们全部扫描回服务器端程序。

我提供了一些示例代码供您参考,但是当我编写这些代码时我并没有太多关注,所以期待错误和不正确的语法,这只是为了向您展示这个想法。 / p>

用于打印您已显示的表格的示例代码:

echo "<form action='".$_PHP_SELF."' method='post'>";
echo "<input type='hidden' name='type' value='yourarrayname'/>";
echo "<table border=1>";
echo "<tr class='tabPreciosTitles'>";
  echo "<td>Nom Activitat</td>
        <td>Nom Tipus Activitat</td>
        <td>Tipus Tarifa</td>
        <td>Temps/km</td>
        <td>Preu</td>";
echo "</tr>";
for ($x=0;$x<count($savedArray[4]);$x++){
  if(strcasecmp($savedArray[0][$x],"-999")!=0){
  echo "<tr>";
  echo "<td><input type='text' name='0_".$x."' value='".$savedArray[0][$x]."'/></td>";
  echo "<td><input type='text' name='1_".$x."' value='".$savedArray[1][$x]."'/></td>";
  echo "<td><input type='text' name='2_".$x."' value='".$savedArray[2][$x]."'/></td>";
  echo "<td><input type='text' name='3_".$x."' value='".$savedArray[3][$x]."'/></td>";
  echo "<td><input type='text' name='4_".$x."' value='".$savedArray[4][$x]."'/></td>";
  echo "<td><button name='elim' value='e".$x."' type='submit'>elim</button></td>";
  echo "</tr>";
  }
}
echo "</table>";
echo "</form>";

以及处理传入数据的示例代码,在创建数组之后但在打印代码之前将其放入:

if($_POST!=null){       
    if(strcasecmp($_POST['type'],"yourarrayname")==0){
        for ($x=0;$x<count($savedArray[4]);$x++){
            if(strcasecmp($_POST['elim'],"e".$x)!=0){
                $savedArray[0][$x] = $_POST['0_'.$x];
                $savedArray[1][$x] = $_POST['1_'.$x];
                $savedArray[2][$x] = $_POST['2_'.$x];
                $savedArray[3][$x] = $_POST['3_'.$x];
                $savedArray[4][$x] = $_POST['4_'.$x];
            }
            if(strcasecmp($_POST['elim'],"e".$x)==0){
                $savedArray[0][$x] = "-999";
                $savedArray[1][$x] = "-999";
                $savedArray[2][$x] = "-999";
                $savedArray[3][$x] = "-999";
                $savedArray[4][$x] = "-999";
            }
        }
    }
}