2014-01-23 3 views
0

Эта страница, на которой я работаю, содержит список ссылок, которые я не хочу добавлять URL-переменные (.html? Id = 12345), поэтому я подумал, что это может стоить выстрел, чтобы попробовать сеансы в первый раз.Создать сеанс, установить переменную и перенести переменную на следующую страницу

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

Я думаю, что это проблема размещения кода (переупорядочения), но мне не повезло, но я получил правильную передачу правильной переменной на следующую страницу.

<?php 
    session_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<?php 
$tourQuery = mysql_query("SELECT * table WHERE ID = '".$page['main_id']."' AND DateTime >= CurDate() ORDER BY DateTime ASC"); 
$tourcount = mysql_num_rows($tourQuery); 
while($tour = mysql_fetch_array($tourQuery)) 
    { 
     $_SESSION['sessionname'] = $tour['EventID']; 
    ?> 
      <div class="schedule-row vevent" style="overflow:auto;"> 
       <div class="schedule-button"> 
        <a class="schedlink url" href="<?=$pg['request']?>.html"> 
         View 
        </a> 
       </div> 
       <br clear="all" /> 
      </div> 
<?php  
} 

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

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

так, пожалуйста, помогите мне.

+0

Это не то, как работают сессии. '$ _SESSION' - это массив, который разделяется между запросами. Вы можете поместить в него что-нибудь, в том числе пары 'key => value'. Но вам нужно как-то связать ссылки с элементами сеанса. Вы делаете это с использованием данных GET или POST. Значение '$ _SESSION' здесь избыточно. Stick с '? EventID = $ tour ['EventID']'. –

+0

, если вы не хотите идти с 'GET', то определенно вам нужно выбрать метод POST, потому что с помощью сеанса вы не можете однозначно идентифицировать идентификаторы для отображения значений. –

ответ

3

Если вы не хотите добавлять переменные в url, и нет никакой связи между страницей $pg['request'] и значением $tour['EventID'] в цикле, единственный способ отправить пользователя на следующую страницу с соответствующим значением, использовать форму, разместить ее и добавить $tour['EventID'] в качестве (скрытого) поля формы.

Что-то вроде:

<form action="<?php echo $pg['request']; ?>" method="post"> 
    <input type="hidden" name="id" value="<?php echo $tour['EventID']; ?>"> 
    <input type="submit" value="View"> 
</form> 

(возможно, потребуется для кодирования/отливать переменные, чтобы иметь возможность echo их без проблем)

+0

Мне нравится эта идея ... Я собираюсь попробовать. – NotJay

+0

Так можно ли это сделать, сохранив текстовую ссылку? Я бы предпочел не иметь кнопку отправки. – NotJay

+0

@NotJay Вы можете использовать '

0

Вместо этого:

$_SESSION['sessionname'] = $tour['EventID']; 

Используйте это:

$_SESSION['EventID'][$tour['EventID']] = $tour['EventID']; 

или

$_SESSION['Events'][$tour['EventID']] = $tour; 

Вам не нужно имя сеанса, если вам не удается печенье.

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