PHP Session Array пустой, но имеет количество - PullRequest
0 голосов
/ 10 марта 2019

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

Вот мой код в виде HTML

Вверху:

<?php
if (!isset($_SESSION)) 
{
session_start();
}
?>

HTML:

<form method="post" action="page1.php">
 <table>
 <tr>
  <th></th>
  <th>Info</th>
  <th>Yes</th> 
  <th>No</th>
</tr>
<tr>
  <td>Name</td>
  <td> <input type="radio" name="Fullname" value="Full Name"></td> //yes
  <td> <input type="radio" name="Fullname" ></td>                 //no
</tr>
<tr>
  <td>Address</td>
  <td> <input type="radio" name="Address" value="Address"></td>  //yes
  <td> <input type="radio" name="Address"></td>                  //no
</tr>
<tr>
  <td>Age</td>
 <td> <input type="radio" name="Age" value="Age"></td>          //yes
 <td> <input type="radio" name="Age"></td>                      //no
</tr>
 </table>
</form>


<?php
if (isset($_POST['Fullname']) && ($_POST['Address']) && ($_POST['Age'])){
$Fullname = $_POST['Fullname'];
$Address = $_POST['Address'];
$Age = $_POST['Age'];    
}
$info = array($Fullname, $Address, $Age);
$_SESSION['Info'] = $info;

?>

и вот мой код для page2.php

выше html страницы2

if (!isset($_SESSION)) 
{
session_start();
}

внутри html

<?php
if (isset($_SESSION['Info']) && is_array($_SESSION['Info'])) {
foreach($_SESSION['Info'] as $key=>$value)
{
echo 'The value of $_SESSION['."'".$key."'".'] is '."'".$value."'".' <br />';
}
?>

Итак, что я действительно пытаюсь сделать, это когда пользователь выбирает переключатель «да»его значение будет помещено в массив.Например, пользователь выбирает «да» для имени и адреса, затем «нет» для возраста, а затем на странице2.php будут отображаться имя и адрес.Все, что пользователь выберет как да, будет отображаться через массив.Но каким-то образом с моим кодом отображается только счетчик, а не фактическое значение переключателя.

или есть альтернативная идея для этого?

заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 10 марта 2019

Попробуйте сократить код таким образом ниже.

Используйте отправку html формы, затем.

page1.php

<?php
session_start();
if (isset($_POST['Fullname'], $_POST['Address'], $_POST['Age'])){
    $_SESSION['Info'] = filter_input_array(INPUT_POST);
}
?>

insidehtml.php

<?php
session_start();
if (isset($_SESSION['Info']) && is_array($_SESSION['Info'])) {
    foreach($_SESSION['Info'] as $key => $value){
        echo 'The value of ['.$key.'] is ('.$value.') <br />';
    }
}
?>
0 голосов
/ 10 марта 2019

Мой ответ: возможно, вам не хватает html-кода в вашем фрагменте ... попробуйте мои изменения ... радиовходы должны иметь разные значения ... в вашем фрагменте назначьте значение Fullname, но на втором входном радио вы пропустите значение, то же самое, что вы сделали для Address и Age ... другая проблема ... вы сохраняете в SESSION без запуска session_start (); Я выяснил, что вы хотите получить из своего кода, и я переработал свой ответ, он более сложный, но работает нормально, как вы ожидали:

<?php if (session_status() == PHP_SESSION_NONE) { session_start(); } ?>
<form method="post" action="page1.php">
 <table>
 <tr>
  <th>Info</th>
  <th>Yes</th>
  <th>No</th>
</tr>
<tr>
  <td>Name</td>
  <td> <input type="radio" name="Fullname" value="yes">Yes</td>
  <td> <input type="radio" name="Fullname" value="no">No</td>
</tr>
<tr>
  <td>Address</td>
  <td> <input type="radio" name="Address" value="yes">Yes</td>
  <td> <input type="radio" name="Address" value="no">No</td>
</tr>
<tr>
  <td>Age</td>
 <td> <input type="radio" name="Age" value="yes">Yes</td>
 <td> <input type="radio" name="Age" value="no">No</td>
</tr>
 </table>
 <input type="submit" value="Send">
</form>
<?php
if (isset($_POST['Fullname']) && isset($_POST['Address']) && isset($_POST['Age'])) {
  if ($_POST['Fullname'] == "yes") {
    $Fullname = array("Fullname" => "Yes");
  } elseif ($_POST['Fullname'] == "no") {
    $Fullname = array("Fullname" => "No");
  }
  if ($_POST['Address'] == "yes") {
    $Address = array("Address" => "Yes");
  } elseif ($_POST['Address'] == "no") {
    $Address = array("Address" => "No");
  }
  if ($_POST['Age'] == "yes") {
    $Age = array("Age" => "Yes");
  } elseif ($_POST['Age'] == "no") {
    $Age = array("Age" => "No");
  }
} elseif (!isset($_POST['Fullname']) || !isset($_POST['Address']) || !isset($_POST['Age'])) {
  $Fullname = array("Fullname" => "Not Set");
  $Address = array("Address" => "Not Set");
  $Age = array("Age" => "Not Set");
}
$info = array($Fullname, $Address, $Age);
$_SESSION['Info'] = $info;
?>

insidehtml.php

<?php
if (session_status() == PHP_SESSION_NONE) {
  session_start();
}
if (isset($_SESSION['Info']) && is_array($_SESSION['Info'])) {
  foreach($_SESSION['Info'][0] as $key => $value) {
    echo 'The value of $_SESSION[' . "'" . $key . "'" . '] is ' . "'" . $value . "'" . ' <br />';
  }
  foreach($_SESSION['Info'][1] as $key => $value) {
    echo 'The value of $_SESSION[' . "'" . $key . "'" . '] is ' . "'" . $value . "'" . ' <br />';
  }
  foreach($_SESSION['Info'][2] as $key => $value) {
    echo 'The value of $_SESSION[' . "'" . $key . "'" . '] is ' . "'" . $value . "'" . ' <br />';
  }
}
?>

another example

Дайте мне знать, если это то, что вы ищете ...; -)

0 голосов
/ 10 марта 2019

Есть несколько способов сделать это. Если вы придерживаетесь своего подхода, тогда начните сессию в page1.php тоже сверху,

 <?php
    if (!isset($_SESSION)) 
    {
       session_start();
    } ?>
<form method="post" action="page1.php">
 <table>
 <tr>
  <th></th>
  <th>Info</th>
  <th>Yes</th> 
  <th>No</th>
</tr>
<tr>
  <td>Name</td>
  <td> <input type="radio" name="Fullname" value="Full Name"></td> //yes
  <td> <input type="radio" name="Fullname" ></td>                 //no
</tr>
<tr>
  <td>Address</td>
  <td> <input type="radio" name="Address" value="Address"></td>  //yes
  <td> <input type="radio" name="Address"></td>                  //no
</tr>
<tr>
  <td>Age</td>
 <td> <input type="radio" name="Age" value="Age"></td>          //yes
 <td> <input type="radio" name="Age"></td>                      //no
</tr>
 </table>
</form>


<?php
if (isset($_POST['Fullname']) && ($_POST['Address']) && ($_POST['Age'])){
$Fullname = $_POST['Fullname'];
$Address = $_POST['Address'];
$Age = $_POST['Age'];    
}
$info = array($Fullname, $Address, $Age);
$_SESSION['Info'] = $info;

?>

Сохраняйте все то же самое, когда ваша форма будет отправлена ​​на саму страницу page1.php, она сохранит данные сеанса в массиве $ _SESSION ['Info']. Перейдите на страницу page2.php и перезагрузите страницу. Вы увидите ваши результаты так:

The value of $_SESSION['0'] is 'Full Name' 
The value of $_SESSION['1'] is 'Address' 
The value of $_SESSION['2'] is 'Age' 

Кроме того, вы можете использовать page2.php в форме действия и сохранять сеанс также. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...