SamadhanGaikwad Ответов: 2

Выполнить запрос с параметром по умолчанию из PHP select query


Я создал выпадающий из столбцов в MySQL. Когда пользователь нажимает кнопку, он запускает php-код с другой страницы с помощью метода get. У меня хранятся 2 переменные в сессии. Но когда страница загружается в IE в первый раз, я получаю ошибку:
Notice: Undefined index: id 


Но если я нажму кнопку, запрос будет успешным и повторит значение в таблице. Существует опция по умолчанию, установленная в выпадающем списке, но, опять же, я должен нажать, чтобы запросить результат успешно в IE и Mozilla. Нет проблем с загрузкой страниц в Chrome.
Я пытался нажать кнопку только один раз с помощью javascript, но она нажимается несколько раз, что приводит к непрерывной загрузке страницы.

Что я уже пробовал:

главная страница:
<pre>$array_id = $_SESSION['id'];
//print_r($array_id);

//Get version id
$version_id = $array_id[array_keys($array_id)[0]];
//echo $version_id;

// Find send version number
$print_version = $conn->query("SELECT nx_version FROM workflow1 WHERE id='$version_id';"); 
$print_version1 = Array();
while($result_step2 = $print_version->fetch_assoc()){
    $print_version1[] = $result_step2['nx_version'];
}

//echo $print_version1[array_keys($print_version1)[0]];
    $result = $conn->query("SELECT DISTINCT nx_version FROM workflow1 ORDER BY id DESC");
    echo "<form action='http://localhost/w_5aug/process.php' id='frm1' method='get'>";
    echo "<html>";
    echo "<body>";
	echo "<p></p>";
	echo "<center>";
	echo " Select Base Verison To Compare With : ";
    echo "<select name='nx_version' id='nx_version'>";
while ($row = $result->fetch_assoc()) {
         $nx_version = $row['nx_version']; 
         if($print_version1[array_keys($print_version1)[0]] == $nx_version){
          echo '<option selected="selected">'.$nx_version.'</option>';
        }else{
          echo '<option>'.$nx_version.'</option>';
        }

 }
    echo "</select>";
    echo " <button type='submit' id='myButton'>Add Base Verison</button>";	
	echo "</center>";
    echo "</body>";
    echo "</html>";
	echo "<p></p>";	
	
	$array_select = $_SESSION['data'];
	print_r($array_select);

	echo "<form>";


Process.php:
$query = $conn->query("SELECT step1, step2 FROM workflow1 WHERE nx_version='$nx_version' LIMIT 1");
if ($query) {
    $array_select = mysqli_fetch_row($query);
    print_r($array_select);
}

//$array_select = Array();
// Find send version number
$id = $conn->query("SELECT id FROM workflow1 WHERE nx_version='$nx_version' LIMIT 1");
$array_id = Array();
while($result1 = $id->fetch_assoc()){
    $array_id[] = $result1['id'];
}

$_SESSION['id'] = $array_id;
$_SESSION['data'] = $array_select;

2 Ответов

Рейтинг:
2

Patrice T

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.

$print_version = $conn->query("SELECT nx_version FROM workflow1 WHERE id='$version_id';");

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]


Рейтинг:
0

Aneel Shrestha

Когда вы запускаете свой код в первый раз, нет сеанса с именем $_SESSION['id'], поэтому он возвращает неопределенную переменную.
Попробуй вот так

if($_SESSION['id']){
$array_id = $_SESSION['id'];
}else{
$array_id = 0;
}


SamadhanGaikwad

Теперь я получаю предупреждение: array_keys () ожидает, что параметр 1 будет массивом, целым числом, заданным в C:\xampp\htdocs\w_5Aug\chart.php в строке 222 и обратите внимание: неопределенный индекс: данные в C:\xampp\htdocs\w_5Aug\chart.php на линии 258
Пожалуйста, взгляните на обновленный код, о котором идет речь.

Aneel Shrestha

Нельзя вставить массив в сессии, сессия должна быть также различными
$_SESSION ['id'] = массив();
$_SESSION ['id'][] = $array_id;