0

現在、my はデータベースから結果を生成し、すべての結果を 1 つの HTML テーブルに挿入します。

返された結果ごとに個別の HTML テーブルを作成できるようにする方法はありますか (すべての結果が 1 つの HTML テーブルに入るのとは対照的です)。

私のコード:

<table class=\"board\" width='100%' border='0' align='center' cellpadding='1' cellspacing='1'> 
");
            $type = $_GET["type"];
            if ($type == "" || $type == "request") {
                $get = mysql_query("SELECT * FROM request WHERE type='Request' AND deleted != 'yes' ORDER BY id DESC");
            } else {
                if ($type == "shoutout") {
                    $get = mysql_query("SELECT * FROM request WHERE type='Shoutout' AND deleted != 'yes' ORDER BY id DESC");
                } else {
                    if ($type == "competition") {
                        $get = mysql_query("SELECT * FROM request WHERE type='Competition' AND deleted != 'yes' ORDER BY id DESC");
                    } else {
                        if($type == "all") {
                            $get = mysql_query("SELECT * FROM request WHERE deleted != 'yes' ORDER BY id DESC");                            
                        }
                    }
                }
            }
            $num = @mysql_num_rows($get);
            if ($num == 0) {
                echo ("<div class=\"board\"><center><font color=\"red\">There aren't any requests in this category!<br />
Why not ask listeners to send in their requests?</font></center></div>");
            } else {
                while ($r = mysql_fetch_array($get)) {
                    echo " 
 <tr>
    <td><font face=\"verdana\" size=\"1\"><b>User</b></td>
    <td><font face=\"verdana\" size=\"1\"><b>$r[habboname]</b></td>
  </tr>
  <tr>
    <td><font face=\"verdana\" size=\"1\"><b>Date</b></td>
    <td><font face=\"verdana\" size=\"1\">$r[date]</td>
  </tr>
  <tr>
    <td><font face=\"verdana\" size=\"1\"><b>IP</b></td>
    <td><font face=\"verdana\" size=\"1\">$r[ip]</td>
  </tr>
  <tr>
    <td><font face=\"verdana\" size=\"1\"><b>Message</b></td>
    <td><font face=\"verdana\" size=\"1\">$r[message]</td>
  </tr>
   <tr>
    <td><font face=\"verdana\" size=\"1\"><b>Type</b></td>
    <td><font face=\"verdana\" size=\"1\">$r[type]</td>
  </tr>
  <tr>
  <!--  <td><font face=\"verdana\" size=\"1\"><b>Refferer</b></td>
    <td><font face=\"verdana\" size=\"1\">"; 
    if($r[refferer] == 1){ echo "Site.com</td>"; } else { echo "Site1.com</td>"; } 

echo "--></tr>
  <tr>
    <td><font face=\"verdana\" size=\"1\"><b>Commands</b></td>
    <td><a href=\"vrequest.php?id=$r[id]\"><font face=\"verdana\" size=\"1\">Delete</a> - <a href=\"mode.php?ban=1&id=$r[id]&ip=$r[ip]&message=$r[message]\">Ban</a> - <!--<a href=\"site_alert.php?type=user&ip=" . $r["ip"] . "\">Alert</a>--><a href=\"lotw.php\">Nominate LoTW</a></font></td>
  </tr>
  <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  </tr>
";
                    $id = htmlspecialchars($_GET['id']);
                    $delete = mysql_query("UPDATE request SET deleted = 'yes' WHERE id = '$id'");
                }
                echo ("</table></div>");
            }
            break;
        case 'delete':
4

2 に答える 2

1

返される行と同じ数のテーブルを作成する場合は、開始<table>whileの先頭に配置し、終了</table>を の最後に配置しwhileます。しかし、なぜこれが望まれるのか理解できません。1 行だけで多くのテーブルを本当に作成しますか? それはテーブルの目的に反するものです。代わりに、リストを作成するか、またはspanテーブル以外のものを使用してください。

while ($r = mysql_fetch_array($get)) {
echo "<table class=\"board\">
<tr>
  <td><b>User</b></td>
  <td><b>$r[habboname]</b></td>
</tr>
<tr>
  <td><b>Date</b></td>
  <td>$r[date]</td>
</tr>
  <tr>
  <td><b>IP</b></td>
  <td>$r[ip]</td>
</tr>
  <tr>
  <td><b>Message</b></td>
  <td>$r[message]</td>
</tr>
<tr>
  <td><b>Type</b></td>
  <td>$r[type]</td>
</tr>
<tr>
  <!--  <td><b>Refferer</b></td>
  <td>"; 

if($r[refferer] == 1){ echo "Site.com</td>"; } else { echo "Site1.com</td>"; } 

echo "--></tr>
<tr>
  <td><b>Commands</b></td>
  <td><a href=\"vrequest.php?id=$r[id]\">Delete</a> - <a href=\"mode.php?ban=1&id=$r[id]&ip=$r[ip]&message=$r[message]\">Ban</a> - <!--<a href=\"site_alert.php?type=user&ip=" . $r["ip"] . "\">Alert</a>--><a href=\"lotw.php\">Nominate LoTW</a></font></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
</table>";

$id = htmlspecialchars($_GET['id']);
$delete = mysql_query("UPDATE request SET deleted = 'yes' WHERE id = '$id'");
}

echo "</div>"; //remove () after echo

アップデート。もう一つ。インライン スタイルは使用しないでください。table class="board"CSS の威力については既にご存じでしょう。

二度目の更新。<font ...>タグを外しました。たとえば、次のように CSS を使用します。

table.board{
  width:100%;
  border:0;
  align:center;
  cellpadding:1;
  cellspacing:1;
}

table.board td{
  font-family: Verdana, Geneva, Arial, sans-serif;
  font-size: 1em;
}

スタイリングを変更したい場合、CSS は多くの手間を省きます。そして、私を信じてください、あなたがそれを変更したい時が来るでしょう(またはあなたの上司がサイトをキラキラさせたいと思っています...)。

于 2012-04-21T20:43:58.240 に答える
0

ZZ-bb は完全に正しいです。ヒントとして、mysql に if/else 構造を入れてみてください。次のように、より速く移動するか、php で最適化します。

$get = mysql_query("SELECT * FROM request WHERE " . ($type == 'all' ? 'type = 1' : 'type = ucfirst($type)' ) . " AND deleted != 'yes' ORDER BY id DESC");
于 2012-04-21T21:17:03.043 に答える