0

私はPHPがまったく初めてなので、この質問はばかげているかもしれません。何時間も検索しても答えが見つかりませんでした。

foreach ループを使用してクエリを作成しましたが、作成したテーブルに正しく表示されません。foreach の一部は、最後の国の隣のフィールドにすべて表示されます。

他のあらゆる場所に配置しようとしましたが、結果は同じままで、右側の列には表示されません。

$query = "SELECT COUNT(landofbirth) as c, landofbirth FROM dog WHERE landofbirth IS NOT NULL GROUP BY landofbirth ORDER BY c desc LIMIT 1000"; 
$result = mysql_query($query) ;
$values = array();
$pct = array();
$total = 0;

while ($line = mysql_fetch_array($result)) {
    echo "<tr><td>";
    $values[$line[1]] = $line[0];
    $total += $line[0];
    echo "$line[1]</td><td> ";

    echo "$line[0] </td><td>"; }

    foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);
    echo "$count %"; }
    echo "</td></tr>";
4

1 に答える 1

4

おそらくコードを何度も移動したため、コードが少し文字化けしています。

表示項目を 1 つずつ分離し、コードを編集するときにビジュアルを向上させるために、表示項目を個別の行に配置し、「計算」コードから離すと、常に役立つと思います。

これがあなたが探しているものかどうかは正確にはわかりませんが、この表示に近い (および/または簡単に変更できる) と思います。

while ($line = mysql_fetch_array($result)) {
    $values[$line[1]] = $line[0];
    $total += $line[0];
}

foreach($values as $key => $value) {
    $pct[$key] = $value/$total ; 
    $count2 = $pct[$key] * 100;
    $count = number_format($count2, 2);

    echo '<tr>';
        echo '<td>' . $key . '</td>';
        echo '<td>' . $value . '</td>';
        echo '<td>' . $count . '%</td>';
    echo '</tr>';
}

補足事項(具体的な回答ではありません) PHP
で非推奨の拡張機能を使用して開発しないことをお勧めします。mysql代わりに、alternative および MaintainedmysqliまたはPDOextensions を使用する必要があります。どちらもはるかに安全に使用でき、準備されたステートメントなどの有益な機能を提供します!

于 2013-06-04T04:09:00.713 に答える