0

テーブルを選択するためのドロップダウンメニューを作成し、次に、選択したテーブルの1つの列からのデータが入力される別のドロップダウンメニューを作成しました。現在、最初にページをロードすると、ドロップダウンで何も選択されていないため、インデックスfreqtypeが未定義であるため、エラーメッセージが表示されます。何かを選択すると、ドロップボックスに選択が保持されないことを除いて、すべてがうまく機能します。1つのスクリプト内でこれを実現する方法はPHP内にありますか?最初のフォームにifステートメントを使用して、上部が選択されるまで下部のドロップダウンが表示されないようにすることを考えましたが、コードを機能させることができません。どんな助けでも大歓迎です。

<html>
<head>
<title>Frequency Chart Update</title>
</head>

<body text="#FFFFFF" bgcolor="#000000">

<font size="4">Please Select the Frequency You Wish To Edit.
</font>
<br>
<br>
<?php

echo '<form ENCTYPE=multipart/form-data action=editfreq.php method=post>';
echo '<select name=freqtype onChange=this.form.submit()>';
echo '<option value="empty"> </option>';
echo '<option value="rptfreq">Repeater (Base) Frequencies</option>';
echo '<option value="pltfreq">Pilot Frequencies (VDV Leaky Feeder)</option>';
echo "</select>";

//define variables to be used
$table = $_POST['freqtype'];

//Connect to database
include 'connect.php';

$sql = "SELECT channel FROM $table";
$result = mysql_query($sql);


echo '<form ENCTYPE=multipart/form-data action=editrptfreq.php method=post>';
echo 'Channel  ';
echo '<select name=channel>';
while ($row = mysql_fetch_array($result)) {
echo "<option value='" . $row['channel'] . "'>" . $row['channel'] . "</option>";
}
echo "</select>";
echo "<button type=submit>Select</button>
";
echo "</form>";



?>

</body>
</html>
4

2 に答える 2

2
<option value="rptfreq"<?php if(@$_POST['freqtype'] == 'rptfreq') echo ' selected="selected"'; ?>>Repeater (Base) Frequencies</option>
<option value="pltfreq"<?php if(@$_POST['freqtype'] == 'pltfreq') echo ' selected="selected"'; ?>>Pilot Frequencies (VDV Leaky Feeder)</option>
于 2012-07-20T22:09:08.700 に答える
0

$_POST['freqtype']PHP の関数を使用して が設定されているかどうかを確認isset()し、残りのコードを実行しないようにすることができます。

<?php
$table = isset($_POST['freqtype'])?$_POST['freqtype']:false;
echo '<form ENCTYPE=multipart/form-data action=editfreq.php method=post>';
echo '<select name=freqtype onChange=this.form.submit()>';
echo '<option value="empty"> </option>';
echo '<option value="rptfreq" '.($table=='rptfreq'?'selected="selected"':''.).'>Repeater (Base) Frequencies</option>';
echo '<option value="pltfreq" '.($table=='pltfreq'?'selected="selected"':''.).'>Pilot Frequencies (VDV Leaky Feeder)</option>';
echo "</select>";

if($table){
    //Connect to database
    include 'connect.php';

    $sql = "SELECT channel FROM $table";
    $result = mysql_query($sql);
    echo '<form ENCTYPE=multipart/form-data action=editrptfreq.php method=post>';
    echo 'Channel  ';
    echo '<select name=channel>';
    while ($row = mysql_fetch_array($result)) {
        echo "<option value='" . $row['channel'] . "'>" . $row['channel'] . "</option>";
    }
    echo "</select>";
}
echo "<button type=submit>Select</button>";
echo "</form>";
?>

余談ですが、ドロップダウン ボックスにオプションを指定しているという理由だけで、決定した値以外の値が送信される可能性があります。これは、入力をサニタイズしないと、SQL エクスペリエンスが非常に悪くなる可能性があることを意味します。

別の注意として、非常に古いmysql関数を使用する代わりに、PDO を調べる必要があります。

于 2012-07-20T22:12:45.250 に答える