0

本当に簡単な答えだと思うので、この質問をして申し訳ありませんが、私は本当にphpをまったく知りません。ネットワーク監視用に bandwidthd をインストールしたいのですが、ゲートウェイで bandwidthd デーモンを実行できるようにするオプションが必要で、すべての情報は別のマシンの postgres データベースにエクスポートされます。また、そのマシンで、帯域幅の webapp を表示するための apache サーバーをセットアップしたデータベースを備えたマシン。Web アップは、まったく機能していないように見える php ファイルの集まりなので、それらを修正するのに時間を費やしています。私はいくつかの権利を得ることができましたが、今は立ち往生しています。次のコードがあります。

<td><SELECT name="sensor_name">

<OPTION value="none">--Select A Sensor--
<?php
$dbh = pg_pconnect("host=localhost dbname=BandwidthD user=postgres");
$sql = "SELECT sensor_name from sensors order by sensor_name;";
$result = pg_query($dbh, $sql);
while ($r = pg_fetch_array($result))
    echo "<option value=\"".$r[0]."\" ".($sensor_name==$r[0]?"SELECTED":"").">".$r[0]."\n";
?>

そして、ページが実行されると、sensor_name が未定義であると表示されますが、私が見たところ、その行で変数を初期化する必要があるように見えます。何か提案があれば教えてください。しかし、私は php をまったく知らないことを覚えておいてください。それはプログラミング言語であり、論理的であるはずなので、推測を試みているだけです。

$sensor_name は、次のコードも持っているため、その平和なコードで初期化されると考えていました。

 <td><SELECT name="limit">
 <OPTION value="none">--How Many Results--
 <OPTION value=20 <?php=$limit==20?"SELECTED":""?>>20
 <OPTION value=50 <?php=$limit==50?"SELECTED":""?>>50
 <OPTION value=100 <?php=$limit==100?"SELECTED":""?>>100
 <OPTION value=all <?php=$limit=="all"?"SELECTED":""?>>All
 </select>

limit は他の場所では宣言されておらず、エラーは発生しません。

4

2 に答える 2

2

$sensor_name が存在しないようです。データベースから $results をフェッチします。これは、'sensor_name' のインデックスを持つデータベース結果の列挙です。

したがって、この行を置き換える必要があると思います (テストされていません)。

echo "<option value=\"".$r[0]."\" ".($sensor_name==$r[0]?"SELECTED":"").">".$r[0]."\n";

これとともに

echo "<option value=\"".$r[0]."\" ".($result['sensor_name']==$r[0]?"SELECTED":"").">".$r[0]."\n";
于 2012-10-05T09:08:40.660 に答える
0

このコードは$sensor_name == $r[0]、 に値を割り当てませんが、$sensor_nameと等しいかどうかを比較し$r[0]ます。

このコード$sensor_name==$r[0]?"SELECTED":""は、が(行の sensor_name フィールド)$sensor_nameと等しい場合、操作を に評価し、そうでない場合は に評価することを意味します。$r[0]SELECTED''

$sensor_nameコードのどこにも定義されていないため、通知が表示されます。

于 2012-10-05T09:12:33.723 に答える