2013-11-15 39 views
1

我在我的數據庫中有一個名爲youi的表。表中的所有字段已經包含除aff和desc字段以外的值。見下圖。 Youi table如何更新組中的mysql數據庫字段(使用GROUP BY)

現在,我在我的HTML頁面中有一個表單(參見下圖),我想根據他們的陣營更新desc和aff字段。我以前還沒有處理過這種設置。我一直在考慮如何在近一天內完成這項工作,但仍似乎無法找到一個完美的解決方案。你能給我一些想法或者解決方案嗎?我正在使用PHP和MySQL。

在此先感謝!

enter image description here

回答

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); 
?> 

我希望這可以幫助未來的人。 :)

1

我看到的是使用不同的更新每個那些線的最簡單的方法。 你可以在php的循環中做到這一點,你可以用每行的aff,desc和campaign的值來構建你的更新。

的SQL將是:

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

PHP的一部分我是沒有多大幫助,對不起。

+0

我也在想這個,但我的客戶想要在底部有一個更新按鈕,我認爲這是非常困難的。 – maikelsabido

+0

你可以在每行前面有一個按鈕來更新,或者使用底部的按鈕,你將不得不遍歷每行內的所有值並構建更新並逐一完成。在可用性方面,我明白你的客戶只需要一個按鈕。 –

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' 然後YYY)結束時, DESC =(情況下,當somefield = 'slkdfdsd' 然後XXX端)