2014-05-17 74 views
0

大家好! 我有一張桌子! Tablemysql,php更改數值和名稱按鈕

每個按鈕文本和標題中的標識將staatus更改爲應該取決於哪個Staatus現在。像1行或如果Staatus - 「mitteakttivne」應該有AktiivneKustutatud按鈕等。此外,如果我點擊其中一個按鈕,Staatus應該更改爲點擊按鈕狀態,並且按照第一部分的問題更改按鈕。

表代碼:

<table> 
      <tr> 
       <th>Paketi nimi</th> 
       <th>Hind</th> 
       <th>Kirjeldus</th> 
       <th>Staatus</th> 
       <th>Change staatus to</th> 
      </tr> 
      <?php 
       $paketi_list = get_paketi_list(); 
      ?> 
      <?php foreach ($paketi_list as $pakett): ?> 
       <tr> 
        <td><?= $pakett['nimi']?></td> 
        <td><?= $pakett['hetke_hind']?></td> 
        <td><?= $pakett['kirjeldus']?></td> 
        <td><?= $pakett['seisundi_liik']?></td> 
        <td><button>Mitteaktiivne</button><button>Kustutatud</button></td> 
        <td><a href="changePakett.php?pakett_id=<?=$pakett['pakett_id']?> ">change</a></td> 
       </tr> 
      <?php endforeach; ?> 

get_pakei_list()功能:

function get_paketi_list(){ 
    db_connect(); 
    $query = "SELECT pakett.nimi, pakett.kirjeldus, pakett.hetke_hind, pakett.pakett_id, pakett.paketi_seisundi_liik_id AS seisundi_id, paketi_seisundi_liik.nimetus AS seisundi_liik FROM pakett INNER JOIN paketi_seisundi_liik ON pakett.paketi_seisundi_liik_id = paketi_seisundi_liik.paketi_seisundi_liik_id"; 
    $result = mysql_query($query); 
    $res_array = array(); 

    $count = 0; 

    while ($row = mysql_fetch_assoc($result)) { 
     $res_array[$count] = $row; 
     $count++; 
    } 
    return $res_array; 
} 

任何人都可以給建議,一些網站,決定如何使我需要什麼?我會非常感謝,如果你幫我

回答

1

我希望我正確理解你的問題。從我看到你有數據包,你需要能夠改變他們的狀態。

我做了什麼:

  • 我用你的例子,但只保留必要的信息:當前狀態,可能的狀態進行修改
  • 我取消了對各行的更改鏈接和感動一次,在端
  • 我介紹了包ID的概念,這是bassicaly數組$ paketi_list的關鍵

下面的代碼是不言自明的,但到sumarize:

  • 我假設你有3個狀態
  • 我使用jQuery切換狀態,每當一個人點擊一個按鈕+ I的形式更新的隱藏字段,這樣的改變可以在以後保存
  • 表單處理
  • 我測試了使用與WAMP仿真陣列在同一頁面上完成,它工作得很好

如果你想測試,就在接下來的3個部分複製相同的文件 - 我不得不分裂他們在3,因爲坐e不會讓我把所有東西都粘貼到一個代碼區域。

你可以看到它是如何工作在這裏:http://screencast-o-matic.com/watch/c2hqVcnazP

順便說一句,我覺得你有否決了,因爲你沒有提供證據證明你試圖在你的最終的東西,所以下一次嘗試的東西,如果它沒有工作,請提供您試用過的代碼,然後您會收到相關評論。

PHP - 變量初始化+形式的治療

<?php 

    //modify next line with all your statuses 
    $arrayAllStatuses = array ('Status 1', 'Status 2', 'Status 3'); 
    /* used for example purposes - to replace with your own code */ 
    $paketi_list = array (
     array('seisundi_liik' => 'Status 2'), 
     array('seisundi_liik' => 'Status 3'), 
     array('seisundi_liik' => 'Status 1') 
    ); 
    /* ========== */ 

    //this next part is the code responsible for treating the form submission 
    //you can move this elsewhere (as long as you update the action attribute of the form tag) 

    if (isset($_POST['change_status'])) { 
     $numberOfLines = $_POST['numberOfLines']; 
     foreach ($paketi_list as $currentId => $pakett) { 
      if (isset($_POST['current_status_row_' . $currentId]) && $_POST['current_status_row_' . $currentId] != '') { 
       echo 'Packet with ID = ' . $currentId . ' has a new status = ' . $_POST['current_status_row_' . $currentId]; 
       //I imagine you want to save this to a database - sanitize it first using mysqli_real_escape_string 
       echo "<br />"; 
      } 
     } 
    } 
?> 

HTML部分 - 該表和形式含有修飾狀態

<table border="1"> 
    <tr> 
     <th>Status</th> 
     <th>Change status to</th> 
    </tr> 
    <?php foreach ($paketi_list as $currentId => $pakett): ?> 
    <tr> 
     <td id="status_row_<?php echo $currentId; ?>"><?php echo $pakett['seisundi_liik']; ?></td> 
     <?php 
      $remainingUnusedStatuses = array_diff($arrayAllStatuses, array($pakett['seisundi_liik'])); 
      //next line rebases array keys - so you don't end up with an array that has a key of 0 & 2 or 1 & 2 
      $remainingUnusedStatuses = array_values($remainingUnusedStatuses);  
     ?> 
     <td> 
      <button id="tochange-first_row_<?php echo $currentId; ?>"><?php echo $remainingUnusedStatuses[0]; ?></button> 
      <button id="tochange-second_row_<?php echo $currentId; ?>"><?php echo $remainingUnusedStatuses[1]; ?></button> 
     </td> 
    </tr> 
    <?php endforeach; ?> 
</table> 

<form action="" method="post"> 
    <input type="hidden" name="numberOfLines" value="<?php echo sizeof($paketi_list); ?>"> 
    <?php foreach ($paketi_list as $currentId => $pakett): ?> 
     <input type="hidden" id="current_status_row_<?php echo $currentId; ?>" name="current_status_row_<?php echo $currentId; ?>" value=""> 
    <?php endforeach; ?> 
    <input type="submit" value="Save changes" name="change_status"> 
</form> 

的JS - 你需要jQuery和一些功能

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("button[id^='tochange']").click(function() { 
      var currentRow = getCurrentRow($(this)); 
      var currentButtonId = $(this).attr('id'); 

      //get current status 
      var currentStatus = $("td#status_row_" + currentRow).html(); 
      var futureStatus = $("button#" + currentButtonId).html(); 

      //switch the two statuses (visually) 
      $("button#" + currentButtonId).html(currentStatus); 
      $("td#status_row_" + currentRow).html(futureStatus); 
      //save the change in the hidden form field 
      $("input#current_status_row_" + currentRow).val(futureStatus); 


      //$("#btnAddProfile").html('Save'); 

     }); 
    }); 

    function getCurrentRow(currentObject) 
    { 
     //do not use any numerical values in the id, except at the end, otherwise this won't work anymore 
     var currentRow = ($(currentObject).attr('id').match(/\d+/)); 
     return currentRow; 
    } 
</script> 

希望這會有所幫助 - 它讓我忙了一段時間,但我需要從curr中改變ent項目。

+0

非常感謝。我沒有想到有人會幫助我這麼多(你都做過)。真的,很大的感謝! Спасибо=) – vladja