1

我的数据库中有一个名为 youi 的表。除 aff 和 desc 字段外,表中的所有字段都已包含值。见下图。优桌

现在,我的 HTML 页面中有一个表单(见下图),我想根据他们的阵营更新 desc 和 aff 字段。我以前还没有处理过这种设置。我一直在考虑如何做到这一点几乎一天,但似乎仍然无法找到完美的解决方案。你能给我关于如何实现这一目标的想法或解决方案吗?我正在使用 PHP 和 mySQL。

提前致谢!

在此处输入图像描述

4

3 回答 3

1

我看到的最简单的方法是对这些行中的每一行使用不同的 UPDATE 。您可以在 php 中的循环中执行此操作,在该循环中使用每行的 aff、desc 和活动的值构建更新。

该 sql 将是:

UPDATE tableName
SET aff  = varAffiliate,
    desc = varDescription
WHERE campaign = varCampaign;

php部分我没有多大帮助,对不起。

于 2013-11-15T01:03:13.120 回答
1

您可以在循环中使用 CASE、WHEN 和 THEN 来进行一个查询。这是我使用简单的 for 循环创建的语句,用于更新一组照片上的一堆标题。

UPDATE Images SET caption = CASE imgID WHEN 389 THEN 'a' WHEN 390 THEN 'sdf' WHEN 391 THEN 'safasasadf' WHEN 392 THEN 'fs' WHEN 393 THEN 'dfdsf' WHEN 394 THEN 'sfdf' END WHERE imgID IN (389,390,391,392,393,394); 

希望有帮助

aff = (somefield='slkd' then yyy end), desc = (somefield='slkdfdsd' then xxx end)

于 2013-11-15T01:13:19.877 回答
0

我终于找到了解决这个问题的方法。我使用了 jQuery、AJAX、PHP 和 mySQL 的组合来让它工作。

所有人<select>都有相同的ID。<input>和相同<label>。这是我的 HTML 代码示例:

<select id="youiaff">
    <option>1001</option>
    <option>1007</option>
    <option>1009</option>
    <option>1013</option>
    <option>1017</option>
    <option>1018</option>
    <option>1022</option>
</select>
<input id="youidesc" type="text" />
<label id="youicamp"></label>
<button type='button' class='btn btn-success saveyouiid'>Save</button>

我接下来要做的是创建一个 jQuery 代码,它将获取<select>, <input>&的所有值<label>并将它们中的每一个放入一个数组中。我使用他们的 id 作为标识符。这是代码:

var desc = $("input[id='youidesc']")
          .map(function(){return $(this).val();}).get();
var aff = $("select[id='youiaff']")
          .map(function(){return $(this).val();}).get();
var camp = $("label[id='youicamp']")
          .map(function(){return $(this).text();}).get();

然后,我使用 AJAX 将变量传递给 PHP 脚本:

$.ajax({
    type: 'post',
    url: 'saveyouiid.php',
    data: {
        desc:desc,
        aff:aff,
        camp:camp,
    },
    success:function(data){

    }
});

此代码将在单击保存按钮时执行。因此,完整的 jQuery/AJAX 将是:

$('.saveyouiid').click(function(){
    var desc = $("input[id='youidesc']")
          .map(function(){return $(this).val();}).get();
    var aff = $("select[id='youiaff']")
          .map(function(){return $(this).val();}).get();
    var camp = $("label[id='youicamp']")
          .map(function(){return $(this).text();}).get();

    $.ajax({
        type: 'post',
        url: 'saveyouiid.php',
        data: {
            desc:desc,
            aff:aff,
            camp:camp,
        },
        success:function(data){

        }
    });
});

然后 PHP 脚本 (saveyouiid.php) 将接受通过 AJAX 发送的值。这些值是数组。接下来我将数组组合成一个多维数组。然后,我获取各个值并执行 mySQL 查询。脚本如下所示:

<?php
$con = mysqli_connect("localhost","imu_fryu","frankyouiIMU2013","imu_frankyoui");
if (mysqli_connect_errno($con)) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$aff = $_POST['aff'];
$desc = $_POST['desc'];
$camp = $_POST['camp'];

$arr = array_map(null, $aff, $desc, $camp);

foreach($arr as $array)
{
    $aff = $array[0];
    if ($aff == ">> Select Affiliate ID <<"){
        $affID = "0";
    }else{
        $affID = $aff;
    }
    $desc = $array[1];
    $camp = $array[2];

    $sql1 = "UPDATE youi SET aff = '$affID', descr = '$desc' WHERE camp = '$camp'";

    if (!mysqli_query($con,$sql1)) {
        die('Error: ' . mysqli_error($con));
    }

}

mysqli_close($con);
?>

我希望这可以帮助将来的人。:)

于 2013-11-17T00:06:18.957 回答