Arhn - архитектура программирования

Неопределенный индекс переменной php при отправке isset()

Извините, если это глупый вопрос, но я застрял на этом несколько часов, самый близкий ответ, который я получил, был от это сообщение, но проблема не решена.

Я получаю данные из флажков из простой формы. Действие формы переводит пользователя на следующую страницу, я получаю значения из флажков, используя

$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

Недопустимый аргумент для цикла for

Любая идея, что я делаю неправильно здесь Пожалуйста, дайте мне знать, если вам нужна дополнительная информация

обновить запрошенный код 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
22.04.2015

  • извините опечатка.....должен читать идентификатор 22.04.2015
  • Вы должны добавить больше кодов. 22.04.2015
  • где это isset? 22.04.2015
  • @yergo смотрите обновленное 22.04.2015
  • @Marile: где в обновленном коде часть с $event? Есть две разные части кода. 22.04.2015
  • Пожалуйста, включите также форму 22.04.2015
  • Если я правильно понимаю, вы используете двухэтапное суммирование. По второму запросу никакие переменные из первого не будут доступны, они не связаны с серверной точки зрения. 22.04.2015
  • @Epodax, пожалуйста, смотрите обновленный полный код формы 22.04.2015
  • В вашей форме нет флажков... 22.04.2015
  • Флажки @jeroen находятся на предыдущей странице, значения извлекаются на этой странице. 22.04.2015
  • @Cthulhu Я использую двухэтапную отправку, пожалуйста, не могли бы вы уточнить 22.04.2015
  • Вы должны принять решение, переключаясь между id и matchId, вы просто тратите время всех впустую. 22.04.2015
  • @jeroen Я просто делал код таким же, как у меня на стороне 22.04.2015

Ответы:


1

Ошибка в этой части -

$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.

22.04.2015

2

Если флажок не установлен, $_POST['id'] не будет установлен, что приведет к этому предупреждению.

Также обратите внимание, что вы не можете полагаться на значение $key, если вы явно не установили это значение ключа в атрибуте имени вашего элемента ввода. Изображение вашего var_dump() говорит о том, что вы этого не делаете.

У вас также есть проблема с SQL-инъекцией. Вы должны переключиться на PDO или mysqli и использовать подготовленный оператор со связанными переменными.

22.04.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..