Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每次我发送表单时,表单都会清除数组_Php_Html_Mysql - Fatal编程技术网

Php 每次我发送表单时,表单都会清除数组

Php 每次我发送表单时,表单都会清除数组,php,html,mysql,Php,Html,Mysql,我有一个带有2个选择项的表单,当您发送第一个选择项时,第二个选择项使用查询对在我的oracle bd上调用的值进行收费,然后当我发送第二个选择项时,它生成一个带有复选框的表: if(isset($idTActi)){ $stallTableTarifas=oci_parse($conn, "SELECT TARIFAS.ID, TARIFAS.ID_TIPO_ACTIVIDAD, TARIFAS.TIPO, TIPO_ACTIVIDAD.TEMPS_KM, TARIFAS.PRECIO

我有一个带有2个选择项的表单,当您发送第一个选择项时,第二个选择项使用查询对在我的oracle bd上调用的值进行收费,然后当我发送第二个选择项时,它生成一个带有复选框的表:

if(isset($idTActi)){
  $stallTableTarifas=oci_parse($conn, "SELECT TARIFAS.ID, TARIFAS.ID_TIPO_ACTIVIDAD, TARIFAS.TIPO, TIPO_ACTIVIDAD.TEMPS_KM, TARIFAS.PRECIO 
                                       FROM TARIFAS, TIPO_ACTIVIDAD         
                                       WHERE TARIFAS.ID_TIPO_ACTIVIDAD = TIPO_ACTIVIDAD.ID 
                                       AND TARIFAS.ID_TIPO_ACTIVIDAD = $idTActi");
  oci_execute($stallTableTarifas);
  echo "<div class='divPrecios'>";
    echo "<table>";
      echo "<tr class='tabPreciosTitles'>";
        echo "<td>Tipus Tarifa</td>
              <td>Temps/Km</td>
              <td>Preu</td>
              <td><input type='submit' class='carrito' value=''></td>";
      echo "</tr>";
      while (($row=oci_fetch_array($stallTableTarifas,OCI_BOTH))!=false){
        echo "<tr>";
          echo "<td>".$row['TIPO']."</td>";
          echo "<td>".$row['TEMPS_KM']."</td>";
          echo "<td>".$row['PRECIO']."</td>";
          echo "<td><input type='checkbox' name='checkbox[]' value='".$row['ID']."'/></td>";
        echo "</tr>";
      }
    echo "</table>";
  echo "</div>";
}
echo "</form>";
if(isset($IDTACI)){
$stallTableTarifas=oci_parse($conn,“选择TARIFAS.ID、TARIFAS.ID、TIPO_ACTIVIDAD、TARIFAS.TIPO、TIPO_ACTIVIDAD.TEMPS_KM、TARIFAS.PRECIO
来自TIPO_ACTIVIDAD的TARIFAS
其中TARIFAS.ID\u TIPO\u ACTIVIDAD=TIPO\u ACTIVIDAD.ID
和TARIFAS.ID_TIPO_ACTIVIDAD=$idtaci”);
oci_execute($stallTableTarifas);
回声“;
回声“;
回声“;
echo“Tipus Tarifa”
Temps/Km
普雷乌
";
回声“;
while($row=oci\u fetch\u数组($stallTableTarifas,oci\u两者))!=false){
回声“;
回显“$row['TIPO']”;
回声“$row['TEMPS_KM'”;
回显“$row['PRECIO']”;
回声“;
回声“;
}
回声“;
回声“;
}
回声“;
变量$IDTACI是我从第二次选择返回的id,因此当我单击复选框并在名为class='carrito'的按钮上发送它时,这是我在css上生成的精灵,我在底部看到另一个表,其中包含我在上一个表中选择的信息:

echo "<div class='divPrecios'>";
echo "<table>";
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>";
foreach($_POST['checkbox'] as $item){
  $stallTableCarrito=oci_parse($conn, "SELECT ACTIVIDAD.NOM AS NOM_ACTIVIDAD, TIPO_ACTIVIDAD.NOM AS NOM_TACTIVIDAD, TARIFAS.TIPO, TIPO_ACTIVIDAD.TEMPS_KM, TARIFAS.PRECIO
                                       FROM TARIFAS, ACTIVIDAD, TIPO_ACTIVIDAD
                                       WHERE TARIFAS.ID = $item
                                       AND TARIFAS.ID_TIPO_ACTIVIDAD = TIPO_ACTIVIDAD.ID
                                       AND TIPO_ACTIVIDAD.ID_ACTIVIDAD = ACTIVIDAD.ID");
  oci_execute($stallTableCarrito);

  $array=array(
    0=>array(),
    1=>array(),
    2=>array(),
    3=>array(),
    4=>array()
  );

  while (($row=oci_fetch_array($stallTableCarrito,OCI_BOTH))!=false){
      array_push($array[0],$row['NOM_ACTIVIDAD']);
      array_push($array[1],$row['NOM_TACTIVIDAD']);
      array_push($array[2],$row['TIPO']);
      array_push($array[3],$row['TEMPS_KM']);
      array_push($array[4],$row['PRECIO']);
  }

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

echo "</table>";
echo "</div>";
echo”“;
回声“;
回声“;
echo“Nom Activitat”
名为Tipus Activitat
塔里法提布斯酒店
Temps/km
Preu”;
回声“;
foreach($_POST['checkbox']作为$item){
$stallTableCarrito=oci_parse($conn,“选择ACTIVIDAD.NOM作为NOM_ACTIVIDAD,选择TIPO_ACTIVIDAD.NOM作为NOM_TACTIVIDAD,选择TARIFAS.TIPO,选择TIPO_ACTIVIDAD.TEMPS_KM,选择TARIFAS.PRECIO
来自塔里法斯、阿维迪达、蒂波乌阿维迪达
其中TARIFAS.ID=$item
和TARIFAS.ID_TIPO_ACTIVIDAD=TIPO_ACTIVIDAD.ID
和TIPO_ACTIVIDAD.ID_ACTIVIDAD=ACTIVIDAD.ID“;
保监处执行($stallTableCarrito);
$array=array(
0=>array(),
1=>array(),
2=>array(),
3=>array(),
4=>array()
);
while(($row=oci\u fetch\u数组($stallTableCarrito,oci\u两者))!=false){
数组推送($array[0],$row['NOM_ACTIVIDAD']);
数组推送($array[1],$row['NOM_TACTIVIDAD']);
数组推送($array[2],$row['TIPO']);
数组推送($array[3],$row['TEMPS_KM');
数组推送($array[4],$row['PRECIO']);
}

对于($x=0;$x在代码的第一部分中,表单标记是否打开?(我想如果这个有效的话,它是打开的)


在第二部分中,您的
标记是否在表单中? 因为如果不是这样,你会过得很不愉快;-)


也许在最后一个表单中,您应该使用与第一个表单相同的名称和相同的值生成隐藏输入

如果您不这样做,我想您的变量$idtaci将不再被设置,并且它将不会成功进行第一次测试
If(isset($idtaci))
。这可能是您获得清除页面的原因


如果在同一个php页面中有一个多步骤表单,对于此类html代码:

<form method=POST url="myURL">
  <select name="select1">[...]</select>
  <select name="select2">[...]</select>
  <!-- VARIOUS PART : may not be displayed -->
  <div id="checkboxes">
    <input type="hidden" name="boxStep" value="1"/>
    <input type="checkbox" name="cb1" value="1"/>
    [...]
  </div>
  <!-- END OF VARIOUS PART -->
</form>

Apolo

Apolo,首先感谢您的回复,在第二部分,输入尚未实现:),只显示精灵,我稍后生成代码,第二个带有复选框的表没有清除,只有带有数组的变量我很难理解代码的工作方式。您有两个选择,以相同的形式,b提交操作的行为应该根据第二个选择的内容而改变?对,第二个选择根据所选内容返回一个id,然后我使用返回的id执行查询,打印第一个带有复选框的表单,最后一个表单打印复选框上所选选项引用的所有信息:Dsorry for answer太晚了,但是当你发表评论时,我被解雇了,谢谢,谢谢,我以后会实施它,当一切都完成或者可能有另一个错误时,我会告诉你一些事情,谢谢:D
// if post request
if (isset($_POST)) {
    if (isset($_POST['boxStep'])) {
        // behavior when checkboxes values are sent
    } else {
        if (isset($_POST['select2'])) {
            // behavior when second select is filled
            // display "VARIOUS PART"
        } else {
            // behavior when only first select is filled
            // Do not display "VARIOUS PART"
        }
    }
} else {
    // default behavior (no select filled)
    // Do not display "VARIOUS PART"
}