2016-12-27 73 views
-6

我有一個文本框。我輸入這個格式的值12 13 14. ,我期望這個結果12,13,14。但誤差顯示 警告:在E中的foreach()提供參數無效:\ XAMPP \ htdocs中\ prize_bond \管理員\上線的index.php 110如何用逗號分隔值,'

HTML代碼

<form action="index.php" method="post"> 
    <tr><td>Enter separated Values With out Comma ","</td> 
    <td><input name="imp" type="text" /></td></tr> 
</form> 

PHP代碼

<?php 
    $da=$_POST['imp']; 
    $ar = implode(',',$da); 
    foreach($ar as $k) die("not in the loop"); 
    { 
     $q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')"; 
     $rs=mysqli_query($conn, $q); 
     echo "$k"; 
    } 
    exit; 
?> 
+1

無效的HTML結構'TR/td'不能form'的'直接孩子。 –

+0

因此與HTML(也許是JavaScript)以外的其他東西沒有關係? – Strawberry

+1

[已閱讀](https://www.codeproject.com/Articles/775/HTML-For-Beginners) –

回答

1

如果你的表單字段請求沒有逗號的值,那麼你將受到空間需要explode POST數據。你現在正在做的是用逗號(它不能以字符串開始)破解,然後試圖將它傳遞給foreach循環。但是,foreach循環只會接受一個數組。

$ar = explode(' ',$da); 

這個簡單的改變應該爲你解決它。在你的foreach(無效的語法,並且不清楚你想要做什麼!)之後,你會希望擺脫特殊的die(),並且在循環之前驗證你的數據。默認情況下,如果你爆炸一個字符串並且沒有找到匹配的分隔符,結果將會是一個只有一個鍵的數組,你可以傳入一個沒有問題的循環。

0

您確定希望用戶輸入特定格式的數據嗎?我的意思是,如果用戶使用多個空格字符,或者用逗號分隔數字呢?或用分號?或者輸入字母而不是數字?無論如何..至少你可以改變所有的空格一個空格字符,然後進行爆炸()的建議:你的foreach之前

$da = trim(preg_replace('/\s+/', ' ', $_POST['imp'])); 
$ar = explode(' ', $da); 

()。

-1

使用explode而不是implode作爲

explode()函數將字符串分解爲數組。

implode()函數從數組的元素中返回一個字符串。

並且您不能對字符串執行foreach操作。

$da=$_POST['imp']; 
    $ar = explode(' ',$da); 
    foreach($ar as $k) 
    { 
     $q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')"; 
     $rs=mysqli_query($conn, $q); 
     echo $k.","; 
    } 

那麼你會得到這個輸出

o/p : 12,13,14,