如何在不同的表行中获取提交按钮以执行不同的SQL查询?

时间:2015-12-28 13:34:22

标签: php mysql

所以我遇到了一个问题,我现在已经尝试了很长一段时间,但我真的不知道怎么做。

我在表格中有多个提交按钮(每行一个)。如何让每个提交按钮执行不同的SQL任务?进一步解释......

所以我有一个看起来像这样的表(这是来自View Source的HTML代码,没有生成表内容的底层PHP代码):

<table class='table table-striped'>
<thead>
<tr>
    <th>Date/Time</th>
    <th>Exchange</th>
    <th>Amount</th>
    <th>Current reversed ex. rate</th>
    <th>Arbitrage opportunity</th>
    <th>Change</th>
</tr>
</thead>

<tbody>
<form action='arbitrage.php' method='post'>
<tr>
    <td> 2015-12-24 22:32:50 </td>
    <td>JPY to GBP</td>
    <td>&yen;18,000.00 --> &pound;100.80</td>
    <td>179.48 GBP / JPY</td>
    <td><font color='green'>&yen;<b>91.584</b> <b><u>PROFIT</u></b> on original &yen;18,000.00 if you exchange now. <br/> (Total after change: &yen;<b>18,091.584</b>).
    </font></td>
    <td><button type='submit'>Change</button></td>
</tr></form></tbody>

<tbody>
<form action='arbitrage.php' method='post'>
<tr>
    <td> 2015-12-24 22:33:07</td>
    <td>GBP to EUR</td>
    <td>&pound;15,000.00 --> &euro;20,359.50</td>
    <td>0.7365 EUR / GBP</td>
    <td><font color='red'>&pound;<b>5.228</b> <b><u>LOSS</u></b> on original &pound;15,000.00 if you exchange now. <br> (Total after change: &pound;<b>14,994.772</b>).
    </font></td>
    <td><button type='submit'>Change</button></td>
</tr></form></tbody>

为了更好地理解,这是表格的图像:

http://i.imgur.com/niyuT14.jpg

现在,当按下“更改”按钮时,我希望从名为“历史记录”的SQL表中删除FROM THAT SPECIFIC ROW中的信息。

目前,我尝试过以下内容:

$query = "DELETE FROM history WHERE currency = ?", $row["currency"];

//row["currency"] is the stuff below the 'Exchange' header in the table.

但是,当我按下“更改”按钮时,HTML表格的所有现有行都会从“历史记录”SQL表中删除。如何只删除一行(按下按钮的那一行),而其他行则保持原样?

请帮忙!

非常感谢你们!

4 个答案:

答案 0 :(得分:1)

您可以使用name =&#39; currency&#39;添加隐藏的输入对于每行或更多行,您可以使用ajax提交查询

答案 1 :(得分:0)

更改表单操作表单:

   <form action='arbitrage.php' method='post'>

   <form action='arbitrage.php?id=99' method='post'>

并将您的查询更新为:

$id = isset($_GET['id']) ? $_GET['id'] : ''; //This will give you--> id = 99;

$query = "DELETE FROM history WHERE currency = ?", $id;

值99当然是来自db table的动态。

答案 2 :(得分:0)

我看到值是硬编码的,对于按钮或表单,您使用的是相同的arbitrage.php操作页面。为每个表单或按钮使用不同的页面,并根据您的意愿编写您的mysql代码。如果它是动态的,那么你将不得不使用JS onClick事件。

答案 3 :(得分:0)

没有这么多表格,只有一个。然后在arbitrage.php中,删除提交的行并返回同一页面,可能是..

            <form action='arbitrage.php' name='changeForm' method='post'>
            <input type="hidden" name="currency">
    <table class='table table-striped'>
    <thead>
    <tr>
        <th>Date/Time</th>
        <th>Exchange</th>
        <th>Amount</th>
        <th>Current reversed ex. rate</th>
        <th>Arbitrage opportunity</th>
        <th>Change</th>
    </tr>
    </thead>

    <tbody>

    <tr>
        <td> 2015-12-24 22:32:50 </td>
        <td>JPY to GBP</td>
        <td>&yen;18,000.00 --> &pound;100.80</td>
        <td>179.48 GBP / JPY</td>
        <td><font color='green'>&yen;<b>91.584</b> <b><u>PROFIT</u></b> on original &yen;18,000.00 if you exchange now. <br/> (Total after change: &yen;<b>18,091.584</b>).
        </font></td>
        <td><button type='button' onclick="chg_currency('GBP / JPY');">Change</button></td>
    </tr></tbody>

    <tbody>

    <tr>
        <td> 2015-12-24 22:33:07</td>
        <td>GBP to EUR</td>
        <td>&pound;15,000.00 --> &euro;20,359.50</td>
        <td>0.7365 EUR / GBP</td>
        <td><font color='red'>&pound;<b>5.228</b> <b><u>LOSS</u></b> on original &pound;15,000.00 if you exchange now. <br> (Total after change: &pound;<b>14,994.772</b>).
        </font></td>
        <td><button type='button' onclick="chg_currency('EUR / GBP');">Change</button></td>
    </tr></tbody>
    </table>
            </form>

        <script>
        function chg_currency(c) {
            document.forms['changeForm'].currency.value = c;
            document.foms['changeForm'].submit();
        }

    </script>