2016-10-07 4 views
-1

У меня есть динамическая таблица HTML, которую можно редактировать несколькими способами. Существует кнопка редактирования, в которой вы можете редактировать строку, информацию о строках и затем сохранять, чтобы сохранить информацию. Кнопка деактивации, которая выделяет строку и активирует кнопку, которая появляется после этого, чтобы повторно активировать ее. А также добавьте кнопку строки, которая вызывает диалоговое окно, в котором вы можете снова нажать строку и добавить еще одну строку в таблицу.Обновление базы данных SQL Server в таблице Изменение/изменение

Однако, хотя это все хорошо ... Я хочу записать эти изменения/обновления в базу данных SQL Server, чтобы они фактически их сохраняли. Я хочу иметь возможность автоматически сохранять эти изменения после каждого действия (сохранение, деактивация/активация и добавление строки). Я никогда не делал этого раньше, чтобы любая помощь/совет/код были бы оценены!

JavaScript код:

// ----- Deactivate/Activate Row ----- 

$(document).on("click", "#html_master .deactivate", function() { 
    var $this = $(this); 
    var $tr = $this.closest('tr'); 
    var action = $tr.hasClass('deactivated') ? 'activate' : 'deactivate'; 

    // ------ Confirmation box in order to deactivate/activate row ----- 
    if (confirm('Are you sure you want to ' + action + ' this entry?')) { 
    $tr.toggleClass('deactivated'); 
    $this.val(function (i, t) { 
     return t == 'Deactivate' ? 'Activate' : 'Deactivate'; 
    }); 
    } 
}); 

// ----- Edit Row ----- 

$(document).on("click", "#html_master .edit", function() { 
    var $this = $(this); 
    var tds = $this.closest('tr').find('td').not('.mr_id').filter(function() { 
    return $(this).find('.edit').length === 0; 
    }); 
    if ($this.val() === 'Edit') { 
    $this.val('Save'); 
    tds.prop('contenteditable', true); 
    } else { 
    var isValid = true; 
    var errors = ''; 
    $('#myDialogBox').empty(); 
    // changed from here....... 
    var elements = tds; 
    if (tds.find('input').length > 0) { 
     elements = tds.find('input'); 
    } 
    elements.each(function (index, element) { 
     var type = $(this).attr('class'); 
     var value = (element.tagName == 'INPUT') ? $(this).val() : $(this).text(); 
     // changed from here....... to here 
     // ----- Switch statement that provides validation ----- 
     switch (type) { 
     case "buyer_id": 
      if (!$.isNumeric(value)) { 
      isValid = false; 
      errors += "Please enter a valid Buyer ID\n"; 
      } 
      break; 
     case "poc_n": 
      if (value == value.match(/^[a-zA-Z\s]+$/)) { 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Name\n"; 
      } 
      break; 
     case "poc_e": 
      if (value == value.match(/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/)) { 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Email\n"; 
      } 
      break; 
     case "poc_p": 
      if (value == value.match('^[0-9()+/-]{10,}$')) { 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Phone Number\n"; 
      } 
      break; 
     } 
    }) 
    if (isValid) { 
     $this.val('Edit'); 
     tds.prop('contenteditable', false); 
    } else { 
     alert(errors); 
    } 
    } 
}); 

// ----- Dialog Box ----- 

$(function() { 

    var dialog, form, 

     emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, 
     phoneRegex = /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/, 
     mr_name = $("#mr_name"), 
     buyer_id = $("#buyer_id"), 
     poc_n = $("#poc_n"), 
     poc_e = $("#poc_e"), 
     poc_p = $("#poc_p"), 
     allFields = $([]).add(mr_name).add(buyer_id).add(poc_n).add(poc_e).add(poc_p), 
     tips = $(".validateTips"); 
    console.log(allFields); 

    function updateTips(t) { 
     tips 
     .text(t) 
     .addClass("ui-state-highlight"); 
     setTimeout(function() { 
     tips.removeClass("ui-state-highlight", 1500); 
     }, 500); 
    } 

    function checkRegexp(o, regexp, n) { 
     if (!(regexp.test(o.val()))) { 
     o.addClass("ui-state-error"); 
     updateTips(n); 
     return false; 
     } else { 
     return true; 
     } 
    } 

    function addVendor() { 
     var valid = true; 
     allFields.removeClass("ui-state-error"); 

     valid = valid && checkRegexp(mr_name, /^[a-z]([0-9a-z_\s])+$/i, "Please enter a valid vendor name"); 
     valid = valid && checkRegexp(buyer_id, /^(0|[1-9][0-9]*)$/, "Please enter a valid Buyer ID"); 
     valid = valid && checkRegexp(poc_n, /^[a-zA-Z ]*$/, "Please enter a valid name"); 
     valid = valid && checkRegexp(poc_e, emailRegex, "Please enter a valid email"); 
     valid = valid && checkRegexp(poc_p, phoneRegex, "Please enter a valid phone number"); 

     if (valid) { 
     var $tr = $("#html_master tbody tr").eq(0).clone(); 
     $.each(allFields, function(){ 
      $tr.find('.' + $(this).attr('id')).html($(this).val()); 
     }); 
     $tr.find('.mr_id').html($("#html_master tbody tr").length + 1); 
     $("#html_master tbody").append($tr); 

     /* 
     $("#html_master tbody").append("<tr>" + 
      "<td>" + mr_name.val() + "</td>" + 
      "<td>" + buyer_id.val() + "</td>" + 
      "<td>" + poc_n.val() + "</td>" + 
      "<td>" + poc_e.val() + "</td>" + 
      "<td>" + poc_p.val() + "</td>" + 
     "</tr>"); 
     */ 
     dialog.dialog("close"); 
     } 
     return valid; 
    } 

    var dialog = $("#dialog-form").dialog({ 
     autoOpen: false, 
     height: 400, 
     width: 350, 
     modal: true, 
     buttons: { 
     "Add Row": addVendor, 
     Cancel: function() { 
      dialog.dialog("close"); 
     } 
     }, 
     close: function() { 
     form[ 0 ].reset(); 
     allFields.removeClass("ui-state-error"); 
     } 
    }); 

    form = dialog.find("form").on("submit", function(event) { 
     event.preventDefault(); 
     addVendor(); 
    }); 

    $(".create-user").button().on("click", function() { 
     dialog.dialog("open"); 
    }); 
    }); 

HTML код/​​PHP:

<?php 
$host="xxxxxxxxx"; 
$dbName="xxxxx"; 
$dbUser="xxxxxxxxxxx"; 
$dbPass="xxxxxx"; 

$dbh = new PDO("sqlsrv:server=".$host."; Database=".$dbName, $dbUser, $dbPass); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "SELECT * FROM Stage_Rebate_Master ORDER BY MR_ID ASC"; 
?> 

<html> 

<body> 

<div id="dialog-form" title="Add Vendor"> 
    <p class="validateTips">All form fields are required.</p> 

    <form> 
    <fieldset> 
     <label for="mr_name">Vendor</label> 
     <input type="text" name="mr_name" id="mr_name" class="text ui-widget-content ui-corner-all"> 
     <label for="buyer_id">Buyer ID</label> 
     <input type="text" name="buyer_id" id="buyer_id" class="text ui-widget-content ui-corner-all"> 
     <label for="poc_n">POC Name</label> 
     <input type="text" name="poc_n" id="poc_n" class="text ui-widget-content ui-corner-all"> 
     <label for="poc_p">POC Email</label> 
     <input type="text" name="poc_e" id="poc_e" class="text ui-widget-content ui-corner-all"> 
     <label for="poc_p">POC Phone</label> 
     <input type="text" name="poc_p" id="poc_p" class="text ui-widget-content ui-corner-all"> 

     <input type="submit" tabindex="-1" style="position:absolute; top:-1000px"> 
    </fieldset> 
    </form> 
</div> 
+0

Изучите некоторые учебники по AJAX. Помимо этого этот вопрос слишком широк. Также нужно узнать, как показать [mcve]. Кажется, что много кода не имеет отношения к тому, что вы задаете в вопросе – charlietfl

+0

Я обновил свой код. Я достал кусок кода HTML/PHP, но я думаю, что большая часть JavaScript необходима, чтобы все точно знали, что я делаю. И мой вопрос - просто, как я могу автоматически записывать изменения, которые я делаю в таблице HTML, в базу данных? – Rataiczak24

+0

использовать события ui для запуска запросов ajax. Есть много и много учебных ресурсов в Интернете относительно ajax. Попытайтесь начать что-то, и когда вы столкнетесь с более конкретными проблемами, вы можете получить здесь много полезной информации – charlietfl

ответ

-3

Без Ajax - Это может быть сделано с помощью (PHP/ASP) 'транзитному' window.open - это это окно, которое вы открываете, обрабатывает переданные параметры и записывает их в базу данных SQL, а затем закрывается. Это оставляет исходный сайт неповрежденным, но обновляет базу данных с вашими изменениями.

Так, window.open (saveChanges.php? Param1 = .. & param2 = .. & и т.д ....)

Файл saveChanges.php следует читать в пройденных Params и запустить соответствующий SQL для сохранения обновлений.

После завершения, файл saveChanges.php должен замыкаться с window.close()

Ваша база данных должна теперь отражать содержание ваших записей веб-страниц.

+0

FAO: Тот, кто дал это -1 ... Я не понимаю - это работает для меня на локальном хосте или удаленном сайте - почему это не приемлемый ответ? - Спасибо, мне было бы интересно узнать ... –

Смежные вопросы