2013-07-04 16 views
1

我有一个简单的表单,它到达下面的代码进行处理。PHP表单返回通知:数组到字符串转换

include("connect.php"); 

$items = array_key_exists('equipment', $_POST) ? $_POST['equipment'] : ''; 

if(!empty($items)) 
{ 
    if ($_POST["equipment"] == "computer") { 
     echo "checked computer!"; 
    } else if($_POST["equipment"] == "projector") 
    { 
     echo "checked projector!"; 

     $sql = "SELECT room_name, day_avail, from_time, to_time, equip_name 
     FROM rooms 
     JOIN equipment ON (equipment.room_id = rooms.room_id) 
     JOIN room_availability ON (room_availability.room_id = rooms.room_id) 
     WHERE equip_name='Projector' 
     GROUP BY day_avail"; 

     $myData = mysql_query($sql, $conn) or die(mysql_error()); 

     $row = mysql_fetch_array($myData); 
     echo $row; 
     // echo mysql_num_rows($myData); 

    } else if($_POST["equipment"] == "whiteboard") 
    { 
     echo "checked whiteboard!"; 
    } else if($_POST["equipment"] == "visualiser") 
    { 
     echo "checked visualiser!"; 
    } else if($_POST["equipment"] == "desk") 
    { 
     echo "checked desk!"; 
    } 
} else { 
    echo "> Sorry, You have not made a selection."; 
} 

表单会通过jQuery的AJAX调用被称为像这样:

<script> 
    $('form').submit(function(){ 
     var str = $(this).serialize(); 
     $.ajax({ 
     url: "userLogic.php", 
     type: "post", 
     data: str, 
     cache: false 
     }).done(function(html) { 
     $("#rooms_wrap").append(html); 
     }); 
    }); 
</script> 

projector复选框被选中,并且表单提交,我希望从一开始的房间列表出来数据库,以便我可以通过PHP foreach循环打印出来。相反,我得到的错误说:

注意:数组字符串转换

我怎样才能获得房的名单,并打印出来在foreach循环?我知道有5行数据被返回,因为mysql_num_rows在我回显时有效。

任何帮助将不胜感激。

回答

6

echo以字符串作为参数,但mysql_fetch_array返回数组 - 您收到的消息表示数组转换为字符串以便打印echo。尝试使用var_dump打印出数组:

var_dump($row); 

要打印出来的查询中使用这样的事返回的所有行:

while($row = mysql_fetch_array($myData)) { 
    echo $row["room_name"]; // for example 
} 
+0

谢谢,并打印出数组,但我怎么才能在页面上的foreach循环中使用它? – Ciwan

+0

我刚刚更新了我的答案。 –

2

您会收到错误消息:

注意:数组到字符串转换

因为y你这样做:

$row = mysql_fetch_array($myData); 
    echo $row; 

projector被检查。

这样的一个echo使用数组进行的调用会为您提供通知消息。

尝试做这样的事情(例如):

while ($row = mysql_fetch_array($myData)) { 
    var_dump($row); 
    // or: 
    // print_r($row); 
} 
0

你也只是数组转换为字符串,像这样:

$arr = $_POST; 
    echo implode(', ', $arr);