0

現在、このプログラムには 2 つの異なるセクションがあります。前半は Web ページからユーザー入力を取得し、それを PHP 側に転送して MySQL にアクセスし、要求された情報を表示します。

例: ID に AX12 を入力すると、実際に存在するその ID の情報が表示されますが、(存在しない) AX13 を入力すると、空白の情報が表示されるので、誰かが方法を教えてくれませんか?情報が PHP 側に転送されると、これを検証できます。したがって、送信した情報が存在しないことが検出された場合は、「ID DOES NOT EXIST」またはその行に沿ったメッセージを表示するだけです。

詳細が必要な場合は、PHP 側のコードを次に示します。

<?php

$part_number = $_GET['txtInput'];
$part_description;
$units_on_hand;
$item_class;
$warehouse_number;
$unit_price;

$query;
$result_set;
$connection;
$record;

echo "<html>";
echo "<head>";
echo "<title>SQL Application</title>";
echo "<style type = 'text/css'>body{text-align: center; background-color: #CC3333; color: #660000; font-size: 30;}</style>";
echo "</head>";
echo "<body>";

echo "<center><h1>SQL Application</h1></center>";

echo "<br />";
echo "<br />";
echo "<br />";

$connection = @mysql_connect("localhost","m_stanicic","")
        or die ("\n\n PROBLEM CONNECTING TO DATABASE! \n" . mysql_error() . "\n\n");

mysql_select_db("m_stanicicdb");

$query = "select * from part where part_number = '" . $part_number . "'";

$result_set = mysql_query($query)
        or die ("\n\n PROBLEM WITH QUERY! . \n" . mysql_error() . "\n\n");

$record = mysql_fetch_assoc($result_set);

if($part_number == "")
{
        //
}
else
{
        $part_description = $record['part_description'];
        $units_on_hand = $record['units_on_hand'];
        $item_class = $record['item_class'];
        $warehouse_number = $record['warehouse_number'];
        $unit_price = $record['unit_price'];

        echo "<center>";
        echo "<table border='1' width=400 style ='table-layout:fixed' cellpadding='5' cellspacing='0'>";
        echo "<col width = 200>";
        echo "<col width = 200>";
        echo "<tr>";
        echo "<th colspan='2'>DETAILS OF THE PART YOU REQUESTED</th>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>part_description</td>";
        echo "<td>" . $part_description . "</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>units_on_hand</td>";
        echo "<td>" . $units_on_hand . "</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>item_class</td>";
        echo "<td>" . $item_class . "</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>warehouse_number</td>";
        echo "<td>" . $warehouse_number . "</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>unit_price</td>";
        echo "<td>$" . $unit_price . "</td>";
        echo "</tr>";
        echo "</table>";
        echo "</center>";

        mysql_close($connection);
}

echo "<br />";
echo "<br />";
echo "<br />";

echo "<input type = 'button' value = 'RETURN' style = 'width: 75px; height: 75px;' onclick = \"javascript:window.location.href = 'jdpset1_4.html'\">";

echo "</body>";
echo "</html>";
4

3 に答える 3

1

結果がデータをまったく返さなかったことをどこでも検証していません。を呼び出した直後にmysql_query()、 を使用mysql_num_rows()して、クエリによって返された行数を確認する必要mysql_num_rows($result_set)があります。 がゼロの場合、クエリはデータを返しませんでした。

、またはこれらの関数のいずれ$part_numberによっても変更されないことに注意してください。そのため、そのように開始しない限り、空になることはありません(現在のものがほとんど役に立たなくなります)。mysql_query()mysql_fetch_array()if

于 2013-03-01T10:44:31.527 に答える
1

クエリの出力を確認できます$record...

 if (count($record)==0) {
    echo "the ID you entered does not exist! Try again...";
 } else {   
    // code to output the part's details...
 }

if (count......の代わりにその部分を置きます

 if($part_number == "")
于 2013-03-01T10:46:17.253 に答える
0

あなたのコードから私は2つのことに気づきます

$query = "select * from part where part_number = '" . $part_number . "'"; 

LIKE部品番号は文字列なので、使用しないことをお勧めします=

$query = "select * from part where part_number LIKE '" . $part_number . "'";

もう1つは、レコードが次のような多次元配列で返されていることを検査することです

 $record = Array([0]=>array('part_description'=>A123...)).

次に、そのように割り当てる必要があります

$part_description = $record[0]['part_description'];

お役に立てば幸いです

于 2013-03-01T11:00:30.450 に答える