2011-05-02 71 views
0

您好我的PHP是好的,但我从来没有得到的一件事是数组,但我知道他们是多么方便,这就是为什么我要使用它们。 这里是我的问题:发布PHP数组到文件

我的形式是这样的:

while($row = mysql_fetch_array($result)){ 
echo "<INPUT TYPE=CHECKBOX"." "."name"."="."\"to[]\""." "."value=\""."0".$row['cnumber']."\" >".$row['cname']."<br>"."<br>"; 
} ?> 

首先是该行不行?是“以[]”正确的方式来做到这一点?

好吧,那么它被张贴到另一页:

$to = $_POST['to'][]; 

现在的问题是,当我检查:

if (empty($to) { 
header ("Location: /sms_error.php"); 
} 

它说,它空的,去sms_error.php

终于如果你有兴趣这是我所做的与阵列:

foreach ($to as $to) { 
/* code */ 
} 

这可以吗?

由于提前, 尼尔

回答

1

更换

$to = $_POST['to'][]; 

$to = $_POST['to']; 
+0

我已经试过了同样的事情之前... – Niall 2011-05-02 16:25:00

+0

试试这个行后做的var_dump($到)。 – 2011-05-02 16:31:21

+0

如果没有任何复选框返回的数组将会是空的 – 2011-05-02 17:06:09

0

除了改变$to = $_POST['to'][];$to = $_POST['to'];,如果改变对(empty($to) {if (empty($to)) {

+0

是的没有看到有其他变量已经检查那里和()围绕所有 – Niall 2011-05-02 16:32:46

+0

你确定其他变量导致重定向到sms_error ? – 2011-05-02 18:44:33

0

你可能在php 5或更新版本...

由于PHP 5,空不会给你正确的结果。相反,你必须使用isset()。

例如:isset($ to)

+0

是啊,我可能就是这样..但我用过空吗? – Niall 2011-05-02 16:32:09

+0

就像我说的,从版本5开始,你应该使用isset。看看这个:(http://php.net/manual/en/function.empty.php) – itsols 2011-05-02 16:34:08

+0

它说你必须使用'isset'而不是'empty'作为数组?文档清楚地说*下面的东西被认为是空的:(...)array()(一个空数组)*。 – 2011-05-02 17:40:44

0

您可能有许多具有不同名称的输入元素?

如果是这样,您可以在外部设置$ i = 0,然后在您的while循环中,您可以将“\”设置为$ i \“”。在循环结束时,不要忘记$ i ++。

然后$ to = $ _POST; 的foreach($为$值){ /*码* /}

1

PHP提供了一个相当不错的documentation of arraysVariables From External Sources也许值得一读。


我们您的问题,一步一步:

创建HTML的方式是非常不清楚。有太多不必要的字符串连接。最好是不echo HTML,但在HTML中嵌入PHP:

<?php while(($row = mysql_fetch_array($result))): ?> 
    <input type="checkbox" name="to[]" value="0<?php echo $row['cnumber']; ?>"> 
    <?php echo $row['cname']; ?> 
    <br> 
    <br> 
<?php endwhile; ?> 

它很可能是你让关于你的原码的报价有些错误。


如果您正确创建了HTML,那么$_POST['to']将包含一组值。你可以用empty($_POST['to'])来检查数组是否为空。

如果你想数组赋值给一个变量,然后执行:

$to = $_POST['to']; 

你在你的foreach循环,这意味着在接下来的迭代,$to不点覆盖$to不再是数组,而是数组的第一个入口。您的foreach循环将在循环完成后覆盖数组。然后$to将指向数组的最后一个元素。这会让你的代码非常混乱。这是更好地使用另一个变量名:

foreach($to as $value) { 

} 
+0

我回应HTML的原因是,没有设置数量的输入复选框..这取决于有多少'联系人'用户 – Niall 2011-05-05 19:54:34

+0

我改变了名称谢谢,代码现在运行到最后(我知道,因为它然后重定向)但上面的代码不会执行,它不会返回并使用下一个值..任何想法为什么? – Niall 2011-05-05 19:58:21