0

この Web サイトを使用するのはこれが初めてです。最近、Web ページに 2 つのテーブルを表示するプロジェクトに取り組み始めました。テーブルの 1 つは、SQL データベースからすべての情報を収集し、それらをテーブルに配置します。各行の横にあるボタンをクリックすると、そのレコードを別のテーブルに挿入できます。これまでのところ、これは私が書いたコードです:

//Include the Following Files
include 'connect.php';

//Select All Price Plans
$query = "SELECT * FROM pricing";
$result = mysql_query($query);

//Print all Plans in Table 
while ($pricing = mysql_fetch_array($result)) 
{
    echo "<table border=1>";
    echo "<tr>";
    echo "<td>" .$pricing['planID'].  "</td>";
    echo "<td>" .$pricing['planTitle']. "</td>";
    echo "<td>" .$pricing['planDescription']. "</td>";
    echo "<td>" .$pricing['planPricing']. "</td>";
    echo "<td>" . **<a href="'. $link .'">BUTTON HERE</a>** . "</td>";
    echo "</tr>";
    echo "<table>";
}  


//Assign $link to Case     
$link = '?run=planA'; 

//Pre-defined Functions
function planA()
{ 
$query = "INSERT into restaurant_plan (`planID`, `planTitle`, `planDescription`, `planPricing`) SELECT * FROM pricing WHERE planID='2' ";
$result = mysql_query($query);
} 

//Setting Case to Run Each Functions
if (isset($_GET['run'])) $linkchoice=$_GET['run']; 
else $linkchoice=''; 

switch($linkchoice)
{       
    case 'planA': 
    planA(); 
    break; 

    case 'planB': 
    planB(); 
    break;              
}     

各行に関数を割り当てる方法を誰かがガイドや例を提案できますか? どうもありがとう!

4

3 に答える 3

1

あなたのコードはテーブル "pricing" のレコードごとに 1 つのテーブルを出力します。代わりに次のコードを使用してください。

//Select All Price Plans
$mysqli = new mysqli("hostname", "username", "pass", "dbname");

$query = "SELECT * FROM pricing";

$result = $mysqli->query($query);

//Print all Plans in Table    

echo "Available Price Plans";          
echo "<table border=1>";
while ( $pricing = $result->fetch_assoc() ) {
    echo "<tr>";
    echo "<td>" .$pricing['planID'].  "</td>";
    echo "<td>" .$pricing['planTitle']. "</td>";
    echo "<td>" .$pricing['planDescription']. "</td>";
    echo "<td>" .$pricing['planPricing']. "</td>";
    echo "<td>" .'<a href="'. $link .'"><img style="border:none;" src="'. $icon .'" /></a>'. "</td>";
    //print a button as you mentioned
    echo "<td>"."<form action='#' method='get'><input type='hidden' name='id' value='".$pricing['planID']."'/><input type='submit' value='copy'/></form></td>";
    echo "</tr>";
}
echo "</table>";

そしてあなたの機能:

function planA()
{ 
    // get selected plan info
    $query = "SELECT * FROM pricing";
    $result = $mysqli->query($query);
    $row = $res->fetch_assoc();

    //copy info to table 'restaurant_plan'
    $query = "INSERT into restaurant_plan (".$_GET["id"].", ".$row["planTitle"].", ".$row["planDescription"].", ".$row["planPricing"].")";
    $result = $mysqli->query($query);

}

于 2012-08-20T14:35:51.843 に答える
0

答えではありませんが、コードをよりクリーンで読みやすく/保守しやすくしたい場合は、PHP 経由で HTML をエコーするのではなく、PHP を挿入した HTML を使用する必要があります。

<?php
//Select All Price Plans
$query = "SELECT * FROM pricing";
$result = mysql_query($query);

//Print all Plans in Table     
?>
Available Price Plans
<?php while ($pricing = mysql_fetch_array($result)) : ?>
    <table border=1>
        <tr>
            <td><?= $pricing['planID'] ?></td>
            <td><?= $pricing['planTitle'] ?></td>
            <td><?= $pricing['planDescription'] ?></td>
            <td><?= $pricing['planPricing'] ?></td>
            <td><a href="<?= $link ?>"><img style="border:none;" src="<?= $icon ?>" /></a></td>
        </tr>
    <table>
<?php endforeach; ?>

また、上記のコメントで述べたように、mysql_*関数の使用を停止する必要があります。それらは廃止されています。代わりにPDO (PHP 5.1 以降でサポート) またはmysqli (PHP 4.1 以降でサポート) を使用してください。どちらを使用すればよいかわからない場合は、この記事をお読みください

于 2012-08-20T14:27:21.357 に答える
0

テーブル出力を次のように変更します。

<table border="1">
<?php
while ($pricing = mysql_fetch_array($result)) { 
?>
       <tr>
       <td><?php echo $pricing['planID']; ?></td>
       <td><?php echo $pricing['planTitle']; ?></td>
       <td><?php echo $pricing['planDescription']; ?></td>
       <td><?php echo $pricing['planPricing']; ?></td>
       <td><a href='<?php echo $link; ?>'><img style="border:none;" src='<?php echo $icon; ?>' /></a></td> 
       </tr>
   <?php     
   }  
   ?>
<table>

データベース接続も再確認して、データを取得できることを確認してください。

于 2012-08-20T14:41:28.517 に答える