2016-05-24 4 views
1

私は軽いバックオフィス注文管理システムでウェブサイトを構築しています。私はまだPHPの学習プロセスにいるので、技術的な問題に遭遇しています。 私は、異なるスクリプトを起動するPHPメニューを持っており、この1つ(waiting_orders.php)は、待っている注文をhtmlテーブルに表示します。ボタンに格納されている注文主キーをクリックすると、order_detail.php(顧客テーブルへの参加など)で注文詳細を参照できるようになります。 2つのスクリプトは正常に実行されますが、order_detail.phpは期待される結果を表示しません。htmlテーブルのselect *から選択された行にアクセスするphp/pdo/mysql

waiting_orders.php

<?php 
session_start(); 
if(isset($_POST['detail'])) 
    { header('Location: order_detail.php'); } 
?> 
<!DOCTYPE html> 
all html stuff 
    <?php // all db connexion stuff 
     $status = "waiting"; 
     $select = $connexion -> prepare("SELECT orderID,order_date,order_qty,order_amount 
     FROM Orders WHERE status = '$status'" 
     ); 
     $select->execute(); 
     $result = $select->fetchall(); 
     echo '<table cellpadding="0" cellspacing="0" class="db-table">'; 
     echo '<tr><th>Order no</th><th>Date</th><th>Quantity</th><th>Amount</th></tr>'; 

     foreach($result as $row) 
     { 
      $_SESSION['order_key'] = $row['orderID']; // orderID is the primary key 

      echo '<tr>'; 
      echo '<form method="post" action=""><td><button class="btn btn-danger bold" type="submit" name="detail" value="'.$_SESSION['order_key'].'">'.$row['cmdID'].'</button></td></form>'; 
      echo '<td>',$row['order_date'],'</td>'; 
      echo '<td>',$row['order_qty'],'</td>'; 
      echo '<td>',$row['order_amount'],'</td>'; 
      echo '</tr>'; 
     }       
     echo '</table>'; 
?> 

order_detail.php

<?php 
session_start(); 
$select_key = $_SESSION['order_key'] ; 
?> 
<!DOCTYPE html> 
all html stuff 
<?php // all db connexion stuff 
$select = $connexion -> prepare(
"SELECT * FROM Orders WHERE orderID = '$select_key'" 
); 

あなたが推測しているよう、order_detail.php常に最後の行ではなく、ユーザが選択した現在のorderIDを表示します。私は配列を使ってみましたが、成功することはありませんでした。なぜなら、それをどう扱うかは本当に分かりません。ありがとう。

+0

[ 'orderID'];最後のorderIDがセッションに保存されます。 –

+0

order_detail.phpをデバッグするにはSELECT * FROM Orders WHERE orderID = '$ select_key' "'を試して、データベースに行われている実際のクエリを確認してからphpMyAdminにコピーして貼り付けますそれがあなたに期待される結果を与えるか、エラーメッセージを与えるかどうかを確認してください。 – grateful

+0

正しいDr.Stitchこれが配列にorderIDキーを格納しようとした理由です。$ keys = array(); $ keys [] = $ row ['orderID'];と$ _SESSION ['order_key'] = $ keys;すべてのorderIDキーがありますが、ユーザーがクリックしたキーはまだわかりません。 – devoteur

答えて

0

コードでは、orderIDを$_SESSION['order_key']に格納してから、$_SESSION変数を使用してフォームのorderIDを出力しています。

これを試してください。

waiting_orders.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
all html stuff 
    <?php // all db connexion stuff 
     $status = "waiting"; 
     $select = $connexion -> prepare("SELECT orderID,order_date,order_qty,order_amount 
     FROM Orders WHERE status = '$status'" 
     ); 
     $select->execute(); 
     $result = $select->fetchall(); 
     echo '<table cellpadding="0" cellspacing="0" class="db-table">'; 
     echo '<tr><th>Order no</th><th>Date</th><th>Quantity</th><th>Amount</th></tr>'; 

     foreach($result as $row) 
     { 
      $_SESSION['order_key'] = $row['orderID']; // orderID is the primary key 

      echo '<tr>'; 
      echo '<form method="post" action="order_detail.php'"><td><button class="btn btn-danger bold" type="submit" name="detail" value="'.$row['orderID'].'">'.$row['cmdID'].'</button></td></form>'; 
      echo '<td>',$row['order_date'],'</td>'; 
      echo '<td>',$row['order_qty'],'</td>'; 
      echo '<td>',$row['order_amount'],'</td>'; 
      echo '</tr>'; 
     }       
     echo '</table>'; 
?> 

あなたがループ=> $ _SESSION [ 'ORDER_KEY'] = $行でこれをやっているorder_detail.php

<?php 
session_start(); 
$select_key = $_POST['detail']; 
/* 
    You can also set the $_SESSION variable here if it is needed elsewhere 
*/ 
// $_SESSION['order_key'] = $_POST['detail']; 
?> 
<!DOCTYPE html> 
all html stuff 
<?php // all db connexion stuff 
$select = $connexion -> prepare(
"SELECT * FROM Orders WHERE orderID = '$select_key'" 
); 
+0

ありがとうございますが、waiting_orders.phpは間違った$ select_keyを渡しています。私はmysql/pdoを使用しているので、oracleに慣れていません。 – devoteur

+0

申し訳ありませんが、それは私の悪いです。私はpdo_mysql&pdo_ociのラッパークラスを作成し、間違ったものからコピーしているに違いありません。私は1つのことを見ました...私は私の答えを更新します。 – guyver4mk

+0

あなたのお時間をいただきありがとうございます。あなたの答えは私の問題を解決しました。私のユーザーは今すぐ注文を準備することができます:) – devoteur

関連する問題