2012-05-10 3 views
0

私はフルタイムのPHPプログラマーではありませんが、これを行う最も効率的な方法は何でしょうか?私はフェッチを実行して、ページに表示したいデータを取得しています。照会結果には通常複数の行があります。else文をエコーするためにcounterをwhileループで使用するにはどうすればよいですか?

以下は、noneを表示するための最後のelseステートメントを除いて素晴らしいです。この部分は機能しません。基本的には、私の行のデータを表示したいのですが、何も存在しない場合は、 "none"というメッセージを投げます。

私はいくつかの読書をしましたが、whileループ+複数の結果セットのように見えますが、単に標準のelse ...を使用することはできません。

誰かがカウンターを言っていましたか?これを達成するための最良の方法でしょうか。私はおそらく今後このようなデータを追加し、正しい方法でそれをやりたいと思っているので、どんな提案もありません。

ありがとうございます!

while($myvariable = oci_fetch_assoc($stmt)) 
{ 
if(!empty($myvariable)) 
    { 
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>"; 

    } 
    else 
    { 
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>"; 
    } 
} 

答えて

1

phpマニュアルでoci_fetch_assocをご覧ください。この関数は通常、FALSEを返すまでループ内で呼び出され、それ以上行が存在しないことを示します。だから、他のifやelseループが必要ない。

0

ループの前で最初の行をフェッチし、それが偽でないかどうかをチェックします。そうでない場合は、ループにフィードし、ループの最後に次の行をフェッチします。これは「ループのプライミング」と呼ばれ、珍しいことではありません。

if(!($myvariable = oci_fetch_assoc($stmt))) { 
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>"; 
} else { 
    while($myvariable) { 
     echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>"; 
     $myvariable = oci_fetch_assoc($stmt)); 
    } 
} 
0

あなたのwhile文はあなたの「$のMYVARIABLE」で何かを得る場合にのみ実行し、したがって、あなたの文が冗長である場合としますあなたのこの場合、それ以外は無関係です。あなたが思っている行に沿って何かを実行したい場合は、 "oci_fetch_all()"を実行してから、ループしてif/elseを実行できます。

関連する問題