2012-04-19 14 views
3

I以下のPHPコードを持っている:出力は、PHPの後に停止したwhileループ

echo "<div style='float:left;'>"; 
echo "<table>"; 
echo "<tr>"; 
echo "<th></th>"; 
echo "<th colspan='4'>Laks beholdt</th>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<th>Uke</th>"; 
echo "<th>&lt;3 kg</th>"; 
echo "<th>3-7 kg</th>"; 
echo "<th>&gt;7 kg</th>"; 
echo "<th>Totalt</th>"; 
echo "</tr>"; 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC) or die(mysql_error())) 
{ 
    echo "<tr>"; 
    echo "<td>" . $row['Uke'] . "</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumSmall'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumMedium'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumLarge'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumVekt'], 1, ",", 
     " ") . " kg</td>"; 
    echo "</tr>"; 
} 

echo "</table>"; 
echo "</div>"; 

私はwhileループから期待される出力を得るが、私のテーブルの終了タグとdivの-orそのことについては、他の出力を - 表示されません。エラーメッセージが表示されず、HTMLのエラーが表示されません。私は連想配列ではなく配列を参照しようとしましたが、同じ結果が得られます。

私はエラーなしで百同様のループを書いたが、私はここにアイデアの出だ:/

+0

私たちはそれをどこかに見直すことができますか? –

+1

whileループの直後に他の種類の出力を入れてみましたか?ちょうど "テスト"という言葉のように?それは現れますか? – Armatus

+1

あなたはループが終了すると思われるときにスクリプトの実行を瀕死にしています... – yoavmatchulsky

答えて

6

ループでdie()を使用しないでください。実行を停止する。 $row = mysql_fetch_array($result, MYSQL_ASSOC)がループを停止する必要がある場合は、代わりにdie()にヒットします。エラーがなかったので、何もすべての行が結果セットからフェッチされたときmysql_fetch_array()戻りfalse、したがって、while条件がfalse or die(mysql_error())なりますのでごwhile条件は、欠陥があるmysql_error()

echo "Before loop\n"; 

$x = 1; 
while($foo = bar($x) or die('Died')) { 
    echo $x++, "\n"; 
} 

echo "After loop\n"; 

function bar($x) { 
    if($x < 5) { 
     return $x; 
    } 
    return false; 
} 

//outputs: 
//Before loop 
//1 
//2 
//3 
//4 
//Died 

Codepad version

+0

私は同じことを考えていました。再現しようとしていました。 –

+0

もちろん!ありがとう、一束のjprofitt! :D – aanders77

2

or die()文はそれを引き起こしている

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $row['Uke'] . "</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumSmall'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumMedium'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumLarge'], 1, 
     ",", " ") . " kg</td>"; 
    echo "<td style='text-align:right; padding-right:10px;'>" . number_format($row['SumVekt'], 1, ",", 
     " ") . " kg</td>"; 
    echo "</tr>"; 
} 
1

から印刷されませんdie()を実行し、スクリプトを強制終了します。

このような画面にエラーを印刷しないでください。使用しないでください。

あなたが行っているエラーの種類は、生産中であるか開発中であるかによって異なりますが、エラーチェックは関係なく実行する必要があります。

、例外はmysqliまたはPHP frameworkのようなものを考えてみることをおすすめします。 mysql_*() APIを使用することはほとんど常に悪い考えです。

+0

'mysql'関数の設定に間違いはありません。単に廃止予定です。 PDO、mysqli、jqueryはすべての質問に対する答えではありません。 – Blake

0

これはdieステートメントです。ループでエラーが発生した場合は、エラーがあった場合にブール値を設定するカスタムエラーハンドラ関数を設定します。次に、あなたは何かをすることができます

while ($row = mysql_fetch_array($result, MYSQL_ASSOC) or !$error_hander) 
関連する問題