0

3 つのドロップダウンリストを含む PHP ページがあります。「onchange」イベントを使用するたびに、javascript docs は選択された値を取得し、それを php 関数に転送します。そこで、それらを mysql データベースに転送し、それらから結果を取得できます。これは完璧に機能しますが、ロジックを適用してどの関数を呼び出す必要があるかを定義するときはそうではありません

私のphpページには効果的なロジックが含まれており(コードボックスを参照)、その下にはアクションを含む2つの機能が必要です。関数は機能しますが、問題はこれです。if-else 構造では、関数が 2 つの異なる瞬間に呼び出される可能性があります。最初の if-else 構築では、両方の呼び出しが成功し、結果は本来あるべきものですが、2 回目の瞬間は $result パラメータが空であるように見えますか?

$result = mysql_query($sql) or die("Query failed with error: ".mysql_error());

$aantal = mysql_num_rows($result);
if($amount == 0){


echo "<p>This combination does not exist</p>";
    }
    else {
        // lists are empty
        if($soort == 'Empty' && $land == 'Empty' && $jaar == 'Empty'){
        }
        else {
            if ($aantal > 2){
                maketable($aantal, $result); // -> **succesfull call**
            }
            else if($aantal == 1){
                makedetails($result); // -> **succesfull call**
            }
            else {
                $first = mysql_result($result, 0);
                $second = mysql_result($result, 1);
                if (($second - $first) == 1){
                    makedetails($result); //  -> **does not work**
                }
                else {
                    maketable($aantal, $result); //  -> **does not work**
                }
            }
        }
    }

function maketable($aantal, $result) { … }
function makedetails($result){ … }

挨拶

4

3 に答える 3

0

配列をもう一度ループできるようにするために、結果をもう一度フェッチする必要がありました。

$first = mysql_result($result, 0);
$second = mysql_result($result, 1);
$result = mysql_query($sql) or die("Query failed with error: ".mysql_error());

しかし、助けてくれてありがとう!

挨拶

于 2012-08-04T17:03:16.733 に答える
0

クエリが表示されないため、何が起こっているのかわかりません。ただし、使用するフィールドを明示的に指定しない場合、mysql_result はデフォルトで指定された行の FIRST フィールドを返します。

SELECT somenumber FROM yourtable ...

次に、あなたの mysql_result は、誰が何を知っているかを取得します。2 つの異なる行のデフォルトの「最初の」値も比較していることに注意してください。クエリが実際に 2 行以上のデータを返していることは確かですか?

于 2012-07-29T18:12:25.330 に答える
0

$aantal は、クエリによって影響を受ける行の数です。影響を受ける行がないときにクエリ結果を使用しようとしているため、ロジックは機能しません。

あなたの論理:

$result = mysql_query($sql);
$number_of_rows = mysql_num_rows($result);
if ($number_of_rows > 2)
{
   //do something
}
else if ( $number_of_rows == 1)
{
   //Do something else
}
else if( $number_of_rows == 2 OR $number_of_rows == 0)
{
   // Do something else (the part which fails)
}

その部分に到達し、失敗しない唯一の方法は、影響を受ける行が正確に 2 である場合です。それらが 0 の場合、クエリは何も返さず、空の結果セットにアクセスしようとしています。

于 2012-07-29T18:21:39.393 に答える