PHP更改不同链接的会话数据

时间:2016-02-26 20:06:05

标签: php html session

我遇到了一个有趣的问题。我在一个页面上有6个不同的商品待售,而不是为每个项目的详细视图制作6个不同的页面我希望使用PHP将所有6个项目链接从第一页重定向到单个详细视图页面,只需更新详细视图页面的图片,说明和标题,具体取决于点击的项目链接

所以代码

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
      $_SESSION['merchandise'] = $merchandiseData; ?>

<button onClick="window.location='item.html';" class="button"type="button">Add to Cart</button>

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2');
      $_SESSION['merchandise'] = $merchandiseData; ?>

<button onClick="window.location='item.html';" class="button">Add to Cart</button>

所以基本上这个代码对6个不同的链接进行了6次,第二页只是从$ _SESSION [&#39;商品&#39;]中获取数据;并回复文件

<p class="item-name"><?php echo $_SESSION['merchandise'][0] ?></p>
<div class="picture" style="background-image: url(<?php echo $_SESSION['merchandise'][2] ?>)"></div>
<p class="description"><?php echo $_SESSION['merchandise'][1]; session_destroy(); ?></p>

所以我的问题是当我点击链接时$ merchandiseData将正常工作,但我点击的6个链接中的每一个总是会导致相同的图像链接,标题和描述,以及它的最后一个数据数组我传递到页面上的会话。所以在我上面给出的例子中,即使我点击第一个按钮,它仍会输出第二个按钮的数据,我不知道为什么?

任何帮助将不胜感激!或者,如果有一个更简单的方法来使用jquery或javascript id喜欢知道!

2 个答案:

答案 0 :(得分:0)

这是因为您的PHP代码编译了一次。 如果您在文件中写例如;

$_SESSION['test'] = 1;
$_SESSION['test'] = 2;

并尝试获取$_SESSION['test'],您将获得2.因为您将重写您的会话。我认为你需要这个帮助PHP脚本,或通过Ajax。

答案 1 :(得分:0)

您遇到此问题的原因是您将商品值存储在同一个会话变量中,因此您将覆盖初始值并仅存储最后一个值。如果你不介意试试这个:

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
      $_SESSION['m1'] = $merchandiseData; ?>

<button onClick="window.location='item.html?id=m1';" class="button"type="button">Add to Cart</button>

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2');
      $_SESSION['m2'] = $merchandiseData; ?>

<button onClick="window.location='item.html?id=m2';" class="button">Add to Cart</button>

然后在第二页上执行以下操作:

<?php   $id = $_GET['id']; ?>
<p class="item-name"><?php echo $_SESSION[$id][0] ?></p>
<div class="picture" style="background-image: url(<?php echo $_SESSION[$id][2] ?>)"></div>
<p class="description"><?php echo $_SESSION[$id][1]; session_destroy(); ?></p>