将值传递给后续页面

时间:2012-12-17 23:00:30

标签: php mysql

有没有办法继续传递一个值,在第一个(或更早的)下拉选择表单中提交给后续处理代码/文件 - 在第一个处理文件之后?

这是我正在尝试做的事情:我已经为鞋类(大小,类型,样式表)创建了一个数据库,然后我创建了一个名为“syle_in_size”的查找表,其大小相对于样式。我们的想法是从这个表开始查询,以便所有内容都基于用户在搜索开始时选择的SIZE。从那里,将确定SPECIFIC鞋(尺寸,款式,类型)。

所以我提出了从一个下拉/选项表传递到另一个的代码(我知道,不同的页面***我已经看到建议和页面在一个页面中完成所有但我想连续进行---部分作为一个设计元素,也因为我不知道javascript,因为我几个月前才开始编程 - 一次只使用一种语言。

这就是我所拥有的:

SIZE表

+--------+------+
| sizeid | size |
+--------+------+
|    7.0 |  7.0 |
|    7.5 |  7.5 |
|    9.0 |  9.0 |
|    9.5 |  9.5 |
|   11.0 | 11.0 |
+--------+------+

TYPE表

+--------+---------+
| typeid | type    |
+--------+---------+
|      1 | Shoes   |
|      2 | Boots   |
|      3 | Sandals |
+--------+---------+

STYLE表

+---------+--------+------------+
| styleid | typeid | style      |
+---------+--------+------------+
|       1 |      1 | Athletic   |
|       2 |      1 | Lace-up    |
|       3 |      1 | Loafers    |
|       4 |      1 | Moccasins  |
|       5 |      2 | Combat     |
|       6 |      2 | Hiking     |
|       7 |      2 | Riding     |
|       8 |      3 | Flip Flops |
|       9 |      3 | Slide      |
+---------+--------+------------+

STYLE_IN_SIZE表

+---------------+--------+---------+
| sizeinstyleid | sizeid | styleid |
+---------------+--------+---------+
|             1 |    7.0 |       1 |
|             2 |    7.5 |       1 |
|             3 |   11.0 |       1 |
|             4 |    7.5 |       2 |
|             5 |    9.0 |       2 |
|             6 |    7.5 |       3 |
|             7 |   11.0 |       3 |
|             8 |    7.0 |       4 |
|             9 |    7.5 |       4 |
|            10 |    9.0 |       4 |
|            11 |   11.0 |       5 |
|            12 |    9.0 |       6 |
|            13 |   11.0 |       6 |
|            14 |    7.5 |       7 |
|            15 |    9.0 |       7 |
|            16 |   11.0 |       7 |
|            17 |    7.5 |       8 |
|            18 |    9.0 |       8 |
|            19 |   11.0 |       8 |
|            20 |    7.0 |       9 |
+---------------+--------+---------+

第一页:SELECT_SIZE.php

<?php

$con = mysql_connect("localhost", "xxxxx", "xxxxx") or die('Could not connect to server');
mysql_select_db("footwear", $con) or die('Could not connect to database');

echo "<form action=\"select_type.php\" method=\"get\">\n";

echo "<select name=\"size\">\n";

$query="SELECT sizeid,size FROM size WHERE sizeid";

$result=mysql_query($query);

      while($row=mysql_fetch_array($result,MYSQL_ASSOC))

      {
          $sizeid= $row['sizeid'];
          $size= $row['size'];
          echo "<option value=\"$sizeid\">$size</option>";

      }

      echo "</select>\n";
      echo "<input name=\"submit\" type=\"submit\" id=\"sizeid\" value=\"submit\" />\n";
      echo "</form> \n";

?>

第一个处理页面:SELECT_STYLE.php 在用户选择尺寸后,代码会查找仅适用于该尺寸的所有鞋类型。你会注意到9.5中没有 - 这是我的小测试。

<?php

$con = mysql_connect("localhost", "xxxxx", "xxxxx") or die('Could not connect to server');
mysql_select_db("footwear", $con) or die('Could not connect to database');

$sizeid= $_GET['sizeid'];
$size= $_GET['size'];

$query="SELECT sizeid,size FROM size WHERE sizeid=$size";

$result = mysql_query($query) or die(mysql_error());

$row = mysql_fetch_array($result, MYSQL_ASSOC) or die(mysql_error());

$sizeid= $row['sizeid'];
$size= $row['size'];

{
echo "<form action=\"select_style.php\" method=\"get\">\n";

echo "<select name=\"type\">\n";

$query="SELECT DISTINCT type.typeid, type, style_in_size.sizeid FROM style_in_size, type, style, size
WHERE style_in_size.sizeid=$sizeid
AND style_in_size.styleid = style.styleid
AND style.typeid= type.typeid
GROUP BY type";

      $result=mysql_query($query);

      while($row=mysql_fetch_array($result,MYSQL_ASSOC))

      {

          $sizeid = $row['sizeid'];
          $size= $row['size'];
          $typeid = $row['typeid'];
          $type=$row['type'];

          echo "<option value=\"$typeid\" \"$sizeid\">$type $sizeid</option>";
//I want only the "type" /$type to show in the dropdown but included SIZE for now to see if it would help pass the value to the next page
      }

      echo "</select>\n";
      echo "<input name=\"submit\" type=\"submit\" id=\"typeid\" value=\"submit\" />\n";

      echo "</form> \n";
}

?>

传递到我希望显示类型和大小的页面(现在,因为我想根据SIZE创建另一个样式下拉列表。但如果我无法在此页面上显示大小,那么我可以继续) SELECT_STYLE.php

<?php


$con = mysql_connect("localhost", "xxxxx", "xxxxx") or die('Could not connect to server');
mysql_select_db("footwear", $con) or die('Could not connect to database');

$sizeid = $_GET['sizeid'];
$size= $_GET['size'];
$typeid = $_GET['typeid'];
$type=$_GET['type'];


$query = "SELECT  type, style_in_size.sizeid FROM size, type, style, style_in_size
WHERE type.typeid=$type
AND style_in_size.styleid = style.styleid
AND style.typeid= type.typeid
AND style_in_size.sizeid = size.sizeid";

$result = mysql_query($query) or die(mysql_error());

$row = mysql_fetch_array($result, MYSQL_ASSOC) or die(mysql_error());

$sizeid = $row['sizeid'];
$size= $row['size'];
$typeid = $row['typeid'];
$type=$row['type'];

{
    echo "You've chosen $type in size $size ";
}

&GT;

如果我选择“凉鞋”,前面的代码只显示“你选择了凉鞋”;尺寸未显示/未通过。

我尝试过以下但没有任何作用:

$query = "SELECT  type.typeid, type, style_in_size.sizeid FROM size, type, style, style_in_size
WHERE type.typeid=$type
AND sizeid = $sizeid
AND size.sizeid = style_in_size.sizeid
AND style_in_size.styleid = style.styleid
AND style.typeid= type.typeid";

此外:

$query = "SELECT  type.typeid, type, style_in_size.sizeid FROM size, type, style, style_in_size
WHERE style_in_size.sizeid = $sizeid
AND size.sizeid = style_in_size.sizeid
AND style_in_size.styleid = style.styleid
AND style.typeid= type.typeid
AND typeid=$type"; 

我希望我以有道理的方式写下我的问题。 非常感谢您的帮助和意见。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

考虑到您在多个页面上执行此操作,最佳解决方案可能是使用会话(see here)。

当你得到,你可以在会话中存储它的大小:

$_SESSION['size'] = $size;

在以后的页面中,您可以检索此内容:

$sizeFromAPreviousPage = $_SESSION['size'];

(注意:请务必使用会话在页面开头调用session_start()

同样正如Charles所说,你应该采取措施来防止SQL注入。现在不推荐使用mysql_ *。