表单提交返回'array'

时间:2016-10-24 16:42:24

标签: php html forms

我正在尝试通过POST将一些酒店的名称,代码和电子邮件地址发送到新页面,该页面将向已检查的酒店发送电子邮件。到目前为止,我真正想要做的是将数据发送到只有echo s的新php。到目前为止我所做的是:

<form action='chior.php' method='post'>
<?php
$i = 0;
foreach($counter as $obj => $nr_rez) {
    $nume_hotel = $hoteluri[$obj];
    $localitate = $localitati[$obj];       //all this arranges the data from a sql query
    $email       = $emailuri[$obj];
    $total_rez += $nr_rez;
    $cprest     = substr($cprest, 3, 10);
    $parametri  = "cp=$cprest&dstart=$data_start_af&dstop=$data_stop_af";
    $email      = str_replace(";", ";\n", $email);

    echo "<tr class='mainRow'> <td> $i </td> 
               <td><input type='text' name='hotelul[$i][]' value='".$cprest."' readonly/> </td> 
               <td><a href='link.php?$parametri' target='_blank'>$nume_hotel</a></td> 
               <td> $localitate </td> 
               <td> $nr_rez </td> 
               <td><input type='text' name='hotelul[$i][]' value='". $email ."'/></td>
               <td><input type='checkbox' id='$i' name='hotelul[$i][]'/></td>
          </tr>";
$i++;
}
?>
<input type='submit'/> </form>

为了简洁起见,有一些我没有发布的页面(各种标签和css元素使页面看起来很漂亮),但它可以在我的最后工作。唯一的问题是我点击提交后发送到的页面 - chior.php,看起来像这个<?php echo $_POST['hotelul'];?>,返回'Array'。我还尝试了<?php echo implode('/', $_POST['hotelul']);?><?php echo implode('-', implode('/', $_POST['hotelul']));?><?php echo $_POST['hotelul[][]'],这几乎是我能想到的全部内容,但仍然没有用。有没有人有任何想法为什么那样以及如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

您正在使用:

<td><input type='checkbox' id='$i' name='hotelul[$i][]'/></td>

这意味着hotelul包含一个列表(数组)。如果您想保存单个值,请移除[];

当您希望name[]成为列表时,使用$_POST['name'] sintaxis。像这样:

<input type="text" name="email[]" />
<input type="text" name="email[]" />
<input type="text" name="email[]" />

答案 1 :(得分:0)

更改

1)name='hotelul[$i][]'更改为name='hotelul[]'

2)所有input名称均为hotelul。更改为其他名称以避免歧义。

更新代码:

<form action='chior.php' method='POST'>
  <?php
  $i = 0;
  foreach($counter as $obj => $nr_rez) {
    $nume_hotel = $hoteluri[$obj];
    $localitate = $localitati[$obj];
    $total_rez += $nr_rez;
    $cprest     = substr($cprest, 3, 10);
    $parametri  = "cp=$cprest&dstart=$data_start_af&dstop=$data_stop_af";
    $email      = str_replace(";", ";\n", $emailuri[$obj]);

    echo "<tr class='mainRow'>
            <td> $i </td> 
            <td><input type='text' name='hotelul[]' value='".$cprest."' readonly/> </td> 
            <td><a href='link.php?$parametri' target='_blank'>$nume_hotel</a></td> 
            <td> $localitate </td> 
            <td> $nr_rez </td> 
            <td><input type='text' name='hotelul_email[]' value='". $email ."'/></td>
            <td><input type='checkbox' id='$i' name='hotelul_chkbox[]'/></td>
          </tr>";
    $i++;
  }
  ?>
  <input type='submit'/>
</form>

<强> chior.php

<?php
$checkedHotels = sizeof($_POST['hotelul_chkbox']);
for($i = 0 ; $i < $checkedHotels; $i++){
  $checked_hotel_email = $_POST['hotelul_email'][$i];

  //Write your mail function here to send mail to all checked hotels using `$checked_hotel_email`.

}?>