如何定义特定列来自哪个表?

时间:2015-09-28 13:23:32

标签: php mysql sql mysqli

我制作了一个页面,其中可以编辑每个网店所拥有的每篇文章的价格。它已经具有的价格在文本字段中,可以根据用户的需要进行更改。然后用户点击编辑(Wijzigen是荷兰语编辑)按钮,它应该在按下之前更改为文本字段中的任何内容。 但是我对UPDATE查询遇到了一些麻烦,因为我需要给它一些ID来选择正确的ID。并且,正如您在源中看到的那样,在启动while()循环之后,我无法从右表中指定正确的ID。 如果你能帮我解决我需要改变,添加或删除的问题,我将不胜感激。

<?php

include 'inc/inc.php';

$artikel = mysqli_query($mysql, "SELECT a.Artikel_ID, a.Productnaam, aw.Artikel_ID, aw.Webshop_ID, aw.Prijs, w.Webshop_ID, w.Shopnaam FROM artikel a, artikel_webshop aw, webshops w WHERE a.Artikel_ID = aw.Artikel_ID AND aw.Webshop_ID = w.Webshop_ID GROUP BY aw.Webshop_ID, aw.Artikel_ID");

echo '<table id="specialtable"><tr style="background-color:#F8F8F8;"><td>Productnaam</td><td>Webshop</td><td>Prijs</td><td>Wijzigen</td></tr>';

$i = 0;
$j = 1;

while($artikelR = mysqli_fetch_assoc($artikel)) {
    $artikel_id = $artikelR['Artikel_ID'];
    $webshop_id = $artikelR['Webshop_ID'];
    echo '<form method="post">';

    if($i == 0){
        echo '<tr style="background-color:#DDD;">';
        $i = $i + 1;
    }else{
        echo '<tr style="background-color:#F8F8F8;">';
        $i = $i - 1;
    }

    echo '<td>' . $artikelR['Productnaam']. '</td><td>' . $artikelR['Shopnaam'] . '</td><td>&euro; <input type="text" name="' . $j . '" value="' . $artikelR['Prijs']. '"></td>';
    echo '<td><input type="submit" name="' . $j . '" value="Wijzigen"></td></tr></form>';
    $jNew = $_POST['' . $j . ''];
    $j++;
    $test = $_POST['' . $j . ''];

    if(isset($test)) {
        $sql = mysqli_query($mysql, "
        UPDATE artikel_webshop
        SET Prijs = '" . $jNew . "'
        WHERE Artikel_ID = '$artikel_id'
        AND Webshop_ID = '$webshop_id'");
        echo 'U heeft succesvol de prijs van het artikel ' . $artikelR['Productnaam'] . ' van de webshop ' . $artikelR['Shopnaam'] . ' gewijzigd.<br><br>';
        $url = 'prijsWij.php';
        echo '<meta http-equiv="refresh" content="4;URL=' . $url . '">';
    }
}

echo '</table></form>';

?>

修改

我终于开始工作了。我在解释时非常糟糕,所以我只是添加新代码:

<?php

include 'inc/inc.php';

$artikel = mysqli_query($mysql, "
SELECT a.Artikel_ID, a.Productnaam, aw.Artikel_ID as awa_id, aw.Webshop_ID as aww_id, aw.Prijs, w.Webshop_ID, w.Shopnaam
FROM artikel a, artikel_webshop aw, webshops w
WHERE a.Artikel_ID = aw.Artikel_ID
AND aw.Webshop_ID = w.Webshop_ID");
echo '<table id="specialtable"><tr style="background-color:#F8F8F8;"><td>Productnaam</td><td>Webshop</td><td>Prijs</td><td>Wijzigen</td></tr>';
$i = 0;
$j = 1;
while($artikelR = mysqli_fetch_assoc($artikel)){
    $artikel_id = $artikelR['awa_id'];
    $webshop_id = $artikelR['aww_id'];
    echo '<form method="post">';
    if($i == 0){
        echo '<tr style="background-color:#DDD;">';
        $i = $i + 1;
    }else{
        echo '<tr style="background-color:#F8F8F8;">';
        $i = $i - 1;
    }
    echo '<td>' . $artikelR['Productnaam']. '</td><td>' . $artikelR['Shopnaam'] . '</td>';
    echo '<td>&euro; <input type="text" name="prijsTest" value="' . $artikelR['Prijs']. '"></td>';
    echo '<td><input type="submit" name="' . $j . '" value="Wijzigen"></td></tr></form>';
    $kNew = $_POST['prijsTest'];
    $test = $_POST['' . $j . ''];
    $j = $j + 1;
    if(isset($test)){
        $sql = mysqli_query($mysql, "
            UPDATE artikel_webshop
            SET Prijs = " . $kNew . "
            WHERE Artikel_ID = '$artikel_id'
            AND Webshop_ID = '$webshop_id'");
        echo 'U heeft succesvol de prijs van het artikel ' . $artikelR['Productnaam'] . ' van de webshop ' . $artikelR['Shopnaam'] . ' gewijzigd.<br><br>';
        $url = 'prijsWij.php';
        echo '<meta http-equiv="refresh" content="4;URL=' . $url . '">';
    }
}

echo '</table></form>';

?>

2 个答案:

答案 0 :(得分:0)

SELECT a.Artikel_ID as a_id, a.Productnaam, aw.Artikel_ID as aw_id ...

答案 1 :(得分:0)

为了知道哪些文章已更新,您需要在表单中跟踪它,以便在提交表单时,您将能够更新正确的文章。

似乎每篇文章都有一个表单。在这种情况下,这很容易。生成表单时,添加包含文章ID的隐藏输入:

<input type="hidden" name="article_id" value="<?php echo $articleId; ?>"/>

当提交表单时,文章ID将与新价格一起发布。您可以通过$_POST['article_id']检索它。然后,您可以在MySQL查询中使用此变量来更新正确的文章!