0

コードの何が問題になっていますか? 私の目的は、可変量の行を持つ html テーブルに行を入力するテーブルを作成することです。私のコードは警告を返します:

foreach() に無効な引数が指定されました

<?php
{
$user=$_SESSION['username'];
$pass=$_SESSION['password'];
}
$con = mysql_connect("localhost","****","*****");
var_dump($con);

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("****", $con);
$result = mysql_query("select * from `order` WHERE username='$user'");

while ($row = mysql_fetch_array($result))
{
$html_table = '<table border="1 cellspacing="0" cellpadding="2""><th>Company     Symbol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </th><th>Actual Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Old Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Cost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Profit/loss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><tr>';
foreach($result as $row) {
  $html_table .= '<tr><td>' .$row['company']. '</td><td>' .$row['amount'].         '</td><td>' .$row['stock']. '</td></tr>';
}


$html_table .= '</tr></table>'; 


$html_table = str_replace('<tr></tr>', '', $html_table);

echo $html_table;        


 } 

?>

どんな助けでも素晴らしいでしょう。

4

4 に答える 4

2

これも解決策になると思います:

echo '<table border="1" cellspacing="0" cellpadding="2">';
echo '<th>Company Symbol</th><th>Amount</th><th>Actual Stockprice</th><th>Old Stockprice</th><th>Cost</th><th>Profit loss</th><tr>';
while ($row = mysql_fetch_array($result)) {
    echo '<tr>';
    foreach($row as $value) {
        echo "<td>$value</td>";
    }
    echo '</tr>';
}
echo '</table'>;

また、mysql_は減価償却されており、安全ではないため、PDOまたはmysqli_の使用を検討します。

于 2012-10-26T20:29:59.133 に答える
0

foreach ループが壊れています。

foreach($row as $a_variable_name_that_is_not_result) {
  //stuff
}

また、可変数の<tr>の出力を計画している場合は、タグをforeachループの外に移動する必要があります。

于 2012-10-26T20:24:51.967 に答える
-1

これを試して

$html_table = '<table border="1" cellspacing="0" cellpadding="2"><th>Company     Symbol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </th><th>Actual Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Old Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Cost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Profit/loss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><tr>';
while ($row = mysql_fetch_array($result))
{
  $html_table .= '<tr><td>' .$row['company']. '</td><td>' .$row['amount'].         '</td><td>' .$row['stock']. '</td></tr>';
}

$html_table .= '</tr></table>'; 
于 2012-10-26T20:26:55.910 に答える
-1

まず、$reuslt は PHP リソースであり、

mysql_query("select * from `order` WHERE username='$user'");

http://php.net/manual/en/function.mysql-query.php

ここに $row への参照がすでにあります

while ($row = mysql_fetch_array($result))

したがって、foreach ループを取り除くだけです。その目的がまったくわかりません。

それとは別に、最終的なマークアップが「壊れている」/無効になるため、最終的なマークアップの生成方法にいくつかの変更を加える必要があります。

于 2012-10-26T20:27:29.537 に答える