0

最初の (またはそれ以前の) ドロップダウン選択フォームで送信された値を、後続の処理コード/ファイルに渡し続ける方法はありますか? 最初の処理ファイルの後?

私がやろうとしていることは次のとおりです。履物用のデータベース (サイズ、タイプ、スタイル テーブル) を作成し、スタイルに関連するサイズを持つ「syle_in_size」というルックアップ テーブルを作成しました。ユーザーが検索の開始時に選択した SIZE にすべてが基づいているように、このテーブルからクエリを開始するという考え方です。そこから、具体的なフットウェア (サイズ、スタイル、タイプ) が決定されます。

そこで、あるドロップダウン/オプションテーブルから別のドロップダウン/オプションテーブルに渡されるコードを思いつきました(知っています、異なるページ*** 1つのページですべてを実行するアドバイスとページを見てきましたが、連続して実行したい---一部は設計要素として、また、数か月前にプログラミングを始めたばかりで、一度に 1 つの言語だけだったので、JavaScript を知らないためです)。

ここに私が持っているものがあります:

サイズ表

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

タイプ表

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

スタイルテーブル

+---------+--------+------------+
| 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";
}

?>

タイプとサイズを表示したいこのページに進みます (現時点では、サイズに基づくスタイルの別のドロップダウンを作成したいためです。しかし、このページにサイズを表示できない場合は先に進みません) ) 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 ";
}

?>

「サンダル」を選択すると、前のコードは「サンダルを選択しました」のみを表示します。サイズが表示されない/渡されませんでした。

次のことを試しましたが、何も機能しません。

$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"; 

意味のある方法で質問を書いたことを願っています。皆様のご協力とご意見をお待ちしております。前もって感謝します。

4

1 に答える 1

0

複数のページでこれを行っていることを考えると、最善の解決策はおそらくセッションを使用することです (こちらを参照)。

たとえば、これをセッションに保存できるサイズを取得すると、次のようになります。

$_SESSION['size'] = $size;

後のページでは、これを取得できます。

$sizeFromAPreviousPage = $_SESSION['size'];

session_start()(注:セッションを使用してページの開始時に呼び出すようにしてください)。

また、チャールズが述べたように、SQL インジェクションを防ぐための措置を講じる必要があります。mysql_* は非推奨になりました。

于 2012-12-17T23:15:44.933 に答える