0

私はここでかなり単純なことをしています。基本的なクエリですが、さらに一歩先に進むことにしたとき、私は自分自身にカーブを投げました。

基本的には次のようになります。

  • ユーザーがフォームに値を入力したかどうかを確認します
  • そうでない場合は、キックアウトして基本的なエラーを表示します
  • もしそうなら、データベースに対してその値をチェックして、それが有効/存在することを確認します
  • 有効/存在する場合は、セッション変数を設定して注文フォームに移動します
  • そうでない場合は、キックアウトして基本的なエラーを表示します

私が今やりたいことは、そこに別のチェックを追加することです.ユーザーIDが存在する場合は、注文ステータスを確認する必要があります.すでに注文している場合は、キックアウトして、すでに注文していることを知らせる簡単なメッセージを表示します.注文し、処理中です。まだ注文していない場合は、上記の注文フォームに進みたいと思います。

データベースには「注文済み」というフィールドがあり、注文した場合は 1、まだ注文していない場合は 0 になります。

これが機能している私のコードです。いくつかのことを試しましたが、爆発し続けます。

    <?php
    session_start();
    $db_host = 'localhost';
    $db_username = 'xxxxxx';
    $db_password = 'xxxxxxxx';
    $db_name = 'xxxxxxxx';

    mysql_connect( $db_host, $db_username, $db_password) or die(mysql_error());
    mysql_select_db($db_name); 

    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        /** Check whether the user has filled in the text field "employee_id" */
        if ($_POST['employee_id'] == "") {
            $IdIsEmpty = true;
        }else{ 
            $employee_id = $_POST['employee_id'];  
            if(mysql_num_rows(mysql_query("SELECT employee_id FROM TABLE_2         WHERE         employee_id = '$employee_id'"))){
                // if userid exists
                $_SESSION['emp_id'] = $employee_id;
                header('Location: orderform.php');
            exit;
            }
            $IdNotFound = true;
        }
    }?>

    <head>
    </head>
    <body>
    <b>Please enter your Employee ID: </b><br><br>
    <form class="" action="index.php" method="post" enctype=
    "multipart/form-data" name="test_form" id="test" accept-charset=
    "utf-8"><input type="text" name="employee_id">
        <?php
        /** Display error messages if "employee_id" field is empty or if ID does not         exist */
        if ($IdIsEmpty) {
            echo ("<br>");
            echo ("<b>Enter your employee ID, please!</b>");
            echo ("<br>");
        }?>
        <?php
        /** Display error messages if "employee_id" field is empty or if ID does not exist */
        if ($IdNotFound) {
            echo ("<br>");
            echo ("<b>Your employee ID not found!</b>");
            echo ("<br>");
        }?>

        <input type="submit" value="Submit">
    </form>
</body>
</html>
4

1 に答える 1

0

mysql_シヴァンが提案したように関数を交換する以外mysqli_に、これを行う必要があります。

  • 入力をエスケープします -ユーザーから提供されたデータを信頼すること はできません 。入力を使用するときはいつでもこれを覚えておいてください。
    $employee_id = mysql_real_escape_string($_POST['employee_id']);

    $employee_id = intval($_POST['employee_id']);

  • 今あなたの問題のために:

ordered同じクエリでフィールドを選択するだけです。

$order_qry = mysql_query("
    SELECT employee_id, ordered 
    FROM TABLE_2 WHERE employee_id = '$employee_id'
");
if(mysql_num_rows($order_qry)) {
    $order = mysql_fetch_object($order_qry);
    if( ! $order->ordered) { // If not ordered
        // ... do something
    } else { // If already ordered
    // ... tell the client
    }
} else {
// No record found ... error message here
}
于 2013-04-24T02:27:54.973 に答える