画一个5页的图像库,每页上面有大约20个图像。每张图片都与2个复选框相关联,“网页分辨率”和“打印分辨率”,供客户订购图像的数字副本。
该页面是用PHP构建的。当客户完成在所有5个页面中选择图像后,她点击“提交订单”并进入确认页面,该页面将显示所选图像的缩略图并询问订单和预算信息。
在页面中选择保留哪些图像的最简单方法是什么?当这是一个单页画廊时,我使用的代码非常完美:
echo "<ul class=\"req-box nolist\">
<li>";
if (isset($_POST['photo-select']) && in_array($photoid . "-print", $_POST['photo-select'])) {
echo "<input type=\"checkbox\" checked=\"checked\" name=\"photo-select[]\" id=\"{$photoid}-print\" value=\"{$photoid}-print\" />\n";
} else {
echo "<input type=\"checkbox\" name=\"photo-select[]\" id=\"{$photoid}-print\" value=\"{$photoid}-print\" />\n";
}
echo "<label for=\"{$photoid}-print\">print use</label></li>\n
<li>";
if (isset($_POST['photo-select']) && in_array($photoid . "-web", $_POST['photo-select'])) {
echo "<input type=\"checkbox\" checked=\"checked\" name=\"photo-select[]\" id=\"{$photoid}-web\" value=\"{$photoid}-web\" />\n";
} else {
echo "<input type=\"checkbox\" name=\"photo-select[]\" id=\"{$photoid}-web\" value=\"{$photoid}-web\" />\n";
}
echo "<label for=\"{$photoid}-web\">web use</label></li>\n
</ul>\n";
但现在这显然不起作用,因为页面的链接是<a>
锚点,不会发布到$ _POST数组。我认为这可以使用jQuery AJAX POST事件来完成,但我不是百分百肯定,而且我不确定这是否是最好的方法。如果有人禁用了JS,表单根本不起作用,对吧?
如果这是唯一的方法,那很好,但我需要你们的一些建议。谢谢!
答案 0 :(得分:1)
Ajax请求可能是您最好的选择。
使用jQuery,当他们单击转到另一个页面时,您可以触发AJAX事件以将数据存储在会话中。或者,您可以在每次单击复选框时执行此操作,但这可能会有几个到多个请求。
如果您担心他们禁用了Javascript,您可以将页面链接默认指向ajax脚本。然后当你进行Ajax调用时,传递一个变量,如'ajax = 1',然后,如果ajax变量为false,则自动将用户重定向到下一页。通过这种方式,启用JavaScript的人将获得AJAX请求,而不会执行AJAX请求的人将转到脚本,然后快速重定向。然后,在完成订单时,只需更改流程订单代码以检查$ _SESSION而不是$ _POST。
答案 1 :(得分:1)
你不必使用AJAX。
使您的上一个和下一个按钮形成按钮(如果它们尚未存在)。这样做可以将前四页的表单方法更改为GET。在最后一页上使用POST转到另一页。 (虽然因为你实际上并没有改变你服务器上的任何东西,你可能还是想坚持使用GET)
上一页和下一页按钮是表单按钮,您的选择将在网址中传递。
第1页可能有1-20的选择,用户选择3和5.点击下一步将转到网址:
http://original/url/?sel[]=3&sel[]=5&page=2
第2页有选择21 - 40,用户选择27和32.现在下一个按钮转到网址:
http://original/url/?sel[]=3&sel[]=5&sel[]=27&sel[]=32&page=3
等等。
如果您通常有用户选择所有100张图片,您的网址可能会有点长,但如前所述,您可以使用会话。你不需要ajax用于会话。
键: sel = 照片选择