2012-12-17 3 views
0

첫 번째 (또는 이전) 드롭 다운 선택 양식에서 후속 처리 코드/파일로 제출 된 값을 계속 전달할 수있는 방법이 있습니까? 첫 번째 처리 파일 이후에?길 아래의 후속 페이지로 값 전달

다음은 내가하려는 일입니다. 신발 (크기, 유형, 스타일 테이블) 용 db를 만든 다음 스타일에 상대적으로 크기가있는 "syle_in_size"라는 조회 테이블을 만들었습니다. 이 표에서 쿼리를 시작하여 사용자가 검색을 시작할 때 선택하는 SIZE를 기반으로 모든 것이 이루어 지도록하는 것입니다. 거기에서 특정 신발 (크기, 스타일, 유형)이 결정됩니다.

그래서 하나의 드롭 다운/옵션 테이블에서 다른 페이지로 전달되는 코드가 떠올랐다. (나는 다른 페이지를 본다. *** 조언과 페이지를 모두 보았지만 나는 그것을하고 싶다. 승계 --- 부분적으로는 디자인 요소로서 그리고 몇 달 전에 프로그래밍으로 시작한 이래로 자바 스크립트를 모르기 때문에 (한 번에 한 언어 씩). 여기

내가 가진 무엇 :

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 | 
+--------+---------+ 

스타일 테이블

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

?> 

1 처리 페이지 : 사용자는 크기를 선택 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"; 

. 귀하의 도움과 의견을 크게 주시면 감사하겠습니다. 미리 감사드립니다.

+0

** 경고 ** 귀하의 코드에는 [SQL 주입 취약점] (http://en.wikipedia.org/wiki/SQL_injection)이 포함되어 있습니다. 원시 필터링되지 않은 유효성이 확인되지 않은 데이터를 SQL 문자열로 직접 전달합니다. [PDO로 전환] (http://php.net/book.pdo) 또는 [mysqli] (http://php.net/book.mysqli)에서 [준비된 문과 매개 변수화 된 쿼리 문]을 사용할 수 있도록하십시오 (http : //en.wikipedia.org/wiki/Prepared_statement). – Charles

+0

경고를 주셔서 감사합니다, Charles. 앞서 언급했듯이, 나는 새로운 프로그래밍이고, 나는 오래된 교훈을 얻은 것으로 보인다. – Jen

답변

0

여러 페이지에서이 작업을 수행하는 것이 가장 좋은 해결책은 세션 (see here)을 사용하는 것입니다.

당신이 얻을 때, 말, 크기는 세션이를 저장할 수 있습니다 : 나중에 페이지에서

$_SESSION['size'] = $size; 

당신이 검색 할 수 있습니다이 :

$sizeFromAPreviousPage = $_SESSION['size']; 

(참고 : session_start() 전화 확인 세션을 사용하는 페이지의 시작 부분).

또한 Charles가 언급 한대로 SQL 주입을 방지하는 조치를 취해야합니다. mysql_ *는 이제 더 이상 사용되지 않습니다.

+1

또는 세션이 사용하고자하는 것이 아니라면 그런 식으로 계속하면 모든 데이터가 다음 페이지로 전달됩니다. 세션 아이디어가 훨씬 더 좋지만 이것은 또 다른 아이디어 일뿐입니다. – Rob

+0

@Rob 그래도 그렇게 할 것입니다 :) – Jim

+0

고마워, 짐, 롭. 내가 집에 왔을 때 당신의 제안을 시험해보고 싶어진다. 물론, 저는 궁금합니다. 왜 $ _SESSIONS 아이디어가 Rob의 제안보다 나은가요? – Jen

관련 문제