2013-06-24 5 views
1

Мой вопрос в том, что когда я копирую элементы массива между разными скриптами PHP с использованием переменных сеанса, ничего не распечатывается. Ниже приведены мои два файла PHP.Обмен переменной сеанса между несколькими сценариями php

file1.php

<?PHP 
    session_start(); 
     $SQL = "SELECT * FROM tblquestions"; 

     if ($db_found) { 
      $result = mysql_query($SQL); 
      $numRows = mysql_num_rows($result); //return number of rows in the table 

      echo '<FORM NAME ="form1" METHOD ="POST" ACTION ="file2.php">'; 
      for ($i = 1; $i <= 2; $i++) 
      { 
       $db_field = mysql_fetch_assoc($result); 
       $qID[$i] = $db_field['QID']; 
       $question[$i] = $db_field['Question']; 
       $A[$i] = $db_field['qA']; 
       $B[$i] = $db_field['qB']; 
       $C[$i] = $db_field['qC']; 
       echo '<P>'; 
       print $question[$i]; 
       echo '<P>'; 
       echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'A'>"; 
       print $A[$i]; 
       echo '<P>'; 
       echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'B'>"; 
       print $B[$i]; 
       echo '<P>'; 
       echo "<INPUT TYPE = 'Radio' Name = '".$qNum."' value= 'C'>"; 
       print $C[$i]; 
       //if (isset($_POST[$name_Value])) 
       $survey_Answers[$i-1] = $_POST[$qNum]; 
       print '</BR>'.$survey_Answers[$i-1]."</BR>"; 
       $question_Number = ltrim($qNum,'q'); 
       $question_Number++; 
       $qNum ='q'.$question_Number; 
      } 

      echo '<p>'; 
      $_SESSION['answers'] = $survey_Answers; 
      echo '<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Click here to vote">'; 

      echo '</form>'; 
?> 

On my Second file (file2.php), I have the following: 



<?PHP 
    session_start(); 
    if (isset($_POST['Submit1'])) { 
      $results = $_SESSION['answers']; 
      print $results[0]; 
} 
?> 

Однако, на мой file2.php я получаю следующее сообщение об ошибке: Undefined смещение: 0 и ничто не распечатаны.

+0

** Если условие ** не закрыто во втором файле – ejo

+0

Вы попадаете внутрь этого блока? – exussum

+0

Отсутствие фигурной скобки - это тип, которого у меня нет в моем исходном коде. –

ответ

1
echo '<p>'; 
session_start(); 

, который не может работать, session_start необходимо вызывать перед выходом! , если вы положили session_start() в начале вашего файла, с вами все будет в порядке.

+0

Я сделал это в обоих файлах, но он не работает. –

+0

вы поставили его перед любым выходом в обоих файлах? не должно быть никаких эхо/print/var_dump или чистого html или пустой строки перед тегом открытия php перед вызовом – luk2302

+1

да, это то, что у меня есть. –

1

To use cookie-based sessions, session_start() must be called before outputing anything to the browser.

Источник: http://php.net/manual/en/function.session-start.php

Вам нужно позвонить session_start(), прежде чем вы выводите что-нибудь. Лучше всего разместить его в начале вашего скрипта, прежде чем выводить что-либо.

+0

Я переместил session_start() в file1.php на верх, но он тоже не работает. –

+0

Вместо этого я получаю следующую ошибку: Неопределенное смещение: 0 в файле2.php –

+0

Я не уверен, что вам сказать. Я предполагаю, что первый файл не выполняется до того, как вы просмотрите второй файл. Это может быть что-то еще. В коде, который вы предоставили, есть много чего, что может пойти не так. – user729928

0

в file1.php session_start(); должен быть первой строкой коды же, как и в file2.php

+1

это то, что у меня есть. –

+0

Если не работает, тогда проверьте значение $ db_found, я думаю 'if ($ db_found) {' code block не работает, поэтому $ survey_Answers также не устанавливается. –

+1

У меня нет проблем с подключением к базе данных. Это условие работает нормально. На самом деле, если вместо этого я изменил действие на file1.php, я могу прочитать эту переменную сеанса на странице 1, но не на стр. 2. –

0

Пожалуйста, добавьте ниже код для каждой страницы, которую вы хотите использовать сеанс data.Other мудро он возвращает ошибку.

<?php 
session_start(); 
?> 
+1

это то, что у меня есть –

+0

Проверить файл находится в том же домене. –

+0

Уважаемый Все, я изменил свой код, чтобы отразить изменения, о которых вы говорили ранее. Любые другие мысли? –

0

Существует комментарий на странице PHP вручную для session_start(), который звучит очень похоже на вашу проблему. http://php.net/manual/en/function.session-start.php#65944

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

Измените свой код, чтобы использовать строки в качестве ключей.

Смежные вопросы