[英]php variable undefined index on isset() submit
很抱歉,如果這是一個愚蠢的問題,但是我被這個問題困擾了幾個小時,我得到的最接近的答案是來自這篇文章,但問題尚未解決。
我從一個簡單的表單中的復選框獲取數據。 表單操作將用戶帶到下一頁,我使用以下方法從復選框中獲取值
$event = $_Post['matchId'];
var_dump($event) confirms values has been received correctly(see image)
$ event的值是一個數組,因此我正在執行以下操作
foreach($event as $key => $eventId)
//some code
所有人都在forloop中工作,但是,一旦我單擊提交,isset()函數就會被觸發,但會出現錯誤:
未定義索引:matchId
forloop的參數無效
任何想法我在這里做錯了,如果您需要更多信息,請告訴我
更新請求的isset代碼
$event= $_POST['matchId'];
var_dump($event);
foreach($event as $key => $eventId){
$sql = "Select * FROM events WHERE event_id = $eventId";
$result = mysql_query($sql);
$i=0;//counter
while($row=mysql_fetch_array($result)){
$team1 = $row['team1'];
$team2 = $row['team2'];
$id[$i]= $row['event_id'];
echo'<h3>'.$team1.' VS '.$team2.'</h3>';
echo'<select name="id[]">';
echo'<option value="'.$row['team1'].'">'.$team1.'</option>';
echo'<option value="'.$row['team2'].'">'.$team2.'</option>';
echo'</select>';
echo'By <select name="score[]">';
echo'<option value="1">1</option>';
echo'<option value="2">2</option>';
echo'<option value="3">3</option>';
echo'<option value="4">4</option>';
echo'<option value="5">5</option>';
echo'<option value="6">6</option>';
echo'<option value="7">7</option>';
echo'<option value="8">8</option>';
echo'<option value="9">9</option>';
echo'<option value="10">10</option>';
echo'<option value="11">11</option>';
echo'<option value="12">12</option>';
echo'<option value="13">13</option>';
echo'<option value="14">14</option>';
echo'<option value="15">15</option>';
echo'<option value="16">16</option>';
echo'<option value="17">17</option>';
echo'<option value="18">18</option>';
echo'<option value="19">19</option>';
echo'<option value="20">20</option>';
echo'</select>';
$i++;
}//while
}//for
echo'</legend></fieldset>';
echo'<input type="submit" class="buttono" value="Submit" name="submit" />';
echo'</form>';
echo'</div><!--news-->';
if(isset($_POST['submit'])){
$x=0;
foreach($_POST['id'] as $key => $winner){
$score = $_POST['score'][$key];
var_dump($score);
$winnerb = $id[$key];
echo($winner."-".$winnerb);
$sql="INSERT INTO picks(member_nr,event_id,pick,score)
VALUES('$userId','$winnerb','$winner','$score')";
mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);
}//for
}//end isset
如果未設置任何復選框,則不會設置$_POST['id']
,從而導致該警告。
還要注意,除非您在輸入元素的name屬性中顯式設置$key
值,否則您不能依賴$key
值。 var_dump()
的圖像表明您沒有這樣做。
您也有一個SQL注入問題。 您應該切換到PDO或mysqli並使用帶有綁定變量的准備好的語句。
錯誤在這部分上-
$event= $_POST['matchId'];
var_dump($event);
foreach($event as $key => $eventId){
$sql = "Select * FROM events WHERE event_id = '$event'";
$result = mysql_query($sql);
.....
$_POST['matchId']
不存在。 您應該為此添加支票-
if (!empty($_POST['matchId'])) { //fetch & display data }
else { //display some error or something like this }
$event
事件為空,因為缺少$_POST['matchId']
。 因此,它給出了關於foreach
的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.