2011-11-24 5 views
1

이것은 할당이므로 완벽하게 안전하고 보안이 보장되지 않는 작업을 찾고 있습니다. SQL 데이터베이스에 테이블이 있습니다. 모든 레코드를 인쇄하고 모든 레코드에는 데이터베이스의 각 행에 대해 고유 한 참조 번호가 있습니다. 그 행의 ref의 값을 가진 checkbox를 주었다. 번호, 나는 "POST"모든 것이 작동하고 밖으로 인쇄하여이를 제출할 때 :배열을 세션에 넣는 방법은 무엇입니까?

if (!$_POST['checkbox']) { 
    echo "Your basket is empty."; 
} else { 
    echo "<table border='0' id='games_table' cellspacing='1'>"; 
    echo "<tr id='basket_table_row'>"; 
    echo "<td colspan='3'>" . "Logged: " . $_SESSION['user'] . "</td>"; 
    echo "<td colspan ='2'>" . "OS used on this machine: " . "<script type='text/javascript'>document.write(yourOS())</script><noscript>Computers</noscript>" . "</td>"; 
    echo "</tr>"; 
    echo "<tr id='basket_table_row'>"; 
    echo "<td colspan='5'>" . "You put into the basket these games: " . "</td>"; 
    echo "</tr>"; 
    foreach ($_POST['checkbox'] as $value) { 
     $_SESSION['basket']=array($value); 

     $res=pg_query($conn,"select * from CSGames where refnumber='$value'"); 
     while ($a = pg_fetch_array ($res)) { 
      echo "<tr id='games_table_row'>"; 
      echo "<td>" . $a["refnumber"] . "</td>"; 
      echo "<td>" . $a["title"] . "</td>"; 
      echo "<td>" . $a["platform"] . "</td>"; 
      echo "<td>" . $a["description"] . "</td>"; 
      echo "<td>" . $a["price"] . "</td>"; 
      echo "</tr>"; 
     } 
    } 
    echo "</table>\n"; 
} 

을 만 $ _SESSION을에 기록 된 상태를 유지하는 생각 [ '바구니'] 마지막 체크 박스의 값입니다 그러나 나는 그들 모두를 필요 (60 또는 70). 무엇이 잘못 되었나요?

+0

더 표시해야합니다. 귀하의 요청은 실제로 의미가 없습니다. –

답변

2

루프의 반복마다 $ _SESSION [ 'basket']의 값을 덮어 쓰고 있습니다.

마지막 값만 저장됩니다.

$_SESSION['basket'][] = $value; 
1

현재, 당신은 당신이 모든 값을 저장하고자하는 경우, 당신은 다음과 같이 추가한다, 마지막 값을 저장하는 _SESSION [ 'basket'], 따라서 마지막 체크 박스 값만 보입니다.

+0

많은 도움을 주셔서 대단히 감사합니다 !!!! –

0
foreach($_POST['checkbox'] as $value){ 

    $_SESSION['basket']=array($value); 

} 

를 루프의 모든 반복이 $의 값을 덮어 쓰기됩니다 :

0

foreach의 모든 단계에서 $value의 현재 값 하나만 가진 $_SESSION['basket']에 새 배열을 만듭니다. 다음과 같이 수정한다 : $_POST['checkbox']의 데이터 배열 어쨌든이기 때문에 직접이

$_SESSION['basket'] = $_POST['checkbox'];

처럼 할 수

// ... 
$_SESSION['basket'] = array(); 
foreach ($_POST['checkbox'] as $value) { 
    $_SESSION['basket'][] = $value; 
    // ... 
} 
// ... 
0

. $_POST['checkbox']을 루핑하고 각 데이터를 배열로 저장하여 세션에 저장하는 중입니다.

$_SESSION['basket'] = $_POST['checkbox'];

foreach ($_POST['checkbox'] as $value) { 
     $_SESSION['basket'][]=$value; 
} 

은 동일한 값을 가질 것이다.

오른쪽 값은 $_POST['checkbox']의 마지막 값만을 저장합니다.

관련 문제