2017-12-13 1 views
0

Ich habe eine HTML-Tabelle mit einer Edit-Schaltfläche, die angeklickt werden kann, die es einem Benutzer ermöglicht, <td> in der Zeile zu bearbeiten. Sobald ein Benutzer auf "Speichern" klickt, sendet er die Werte mithilfe von Ajax an die Adresse update.php mit allen Zeileninformationen, die in eine Aktualisierungsabfrage eingegeben wurden. Wenn jedoch die Aktualisierungsabfrage ausgeführt wird, werden alle Werte mit Ausnahme von 4 Spalten (spezies, container, mill, uom) entweder als 0 in die Tabelle in der Datenbank eingegeben oder sind leer. Die Spaltentypen, in denen dies in der Tabelle geschieht, sind meistens float(8), wobei einige nvarchar(255) sind.Werte in der Aktualisierungsabfrage werden in die Tabelle als 0 oder leere Werte eingegeben

So scheint es, als ob die Werte in update.php übergehen, also ich denke, dass etwas mit meiner Update-Abfrage falsch sein könnte? Jeder Rat würde absolut geschätzt werden, wie ich in der Lage sein könnte, mein Update-Abfrage-Problem zu beheben, um zu stoppen, Werte auf 0/leer zu den tatsächlichen Werten zu aktualisieren, die eingegeben werden.

Javascript und Ajax (die Namen in Anführungszeichen nach dem 'Fall' sind die Klassen für die entsprechende Zeile:

var isValid = true; 
    var errors = ''; 
    var elements = tds; 
    var dict = {}; 
    var selected; 
    elements.each(function (index, element) { 
     var type = $(this).attr('class'); 
     var value = (element.tagName == 'INPUT') ? $(this).val() : $(this).text(); 

     switch (type) { 
     case "species": 
      if (value) { 
       dict["Species"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Species\n"; 
      } 
      break; 
     case "container": 
      if (value) { 
       dict["Container"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter Yes or No\n"; 
      } 
      break; 
     case "supp-name": 
      if (value) { 
       dict["Supplier Name"] = value; 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Supplier Name\n"; 
      } 
      break; 
     case "supp-sku": 
      if (value) { 
       dict["Supplier SKU"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Supplier SKU\n"; 
      } 
      break; 
     case "newsku": 
      if (value) { 
       dict["Current SKU"] = value; 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Current SKU\n"; 
      } 
      break; 
     case "mill": 
      if (value) { 
       dict["Mill"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Mill\n"; 
      } 
      break; 
     case "lead-time": 
      if (value) { 
       dict["Lead Time"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Lead Time\n"; 
      } 
      break; 
     case "less-than-unit-cost": 
      if (value) { 
       dict["Less Than Unit Cost"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Less Than Unit Cost\n"; 
      } 
      break; 
     case "unit-cost": 
      if (value) { 
       dict["Unit Cost"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Unit Cost\n"; 
      } 
      break; 
     case "mill-direct-cost": 
      if (value) { 
       dict["Mill Direct Cost"] = value; 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Mill Direct Cost\n"; 
      } 
      break; 
     case "unit-quantity": 
      if (value) { 
       dict["Unit Quantity"] = value; 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Unit Quantity\n"; 
      } 
      break; 
     case "bundle-cost": 
      if (value) { 
       dict["Bundle Cost"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid number\n"; 
      } 
      break; 
     case "mixed-unit-price": 
      if (value) { 
       dict["6+ Mixed Unit Price"] = value; 
      break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid number\n"; 
      } 
      break; 
     case "uom": 
      if (value) { 
       dict["UOM"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid UOM\n"; 
      } 
      break; 
     case "mill-loc": 
      if (value) { 
       dict["Mill Location"] = value; 
       break; 
      } 
      else { 
      isValid = false; 
      errors += "Please enter a valid Mill Location\n"; 
      } 
      break; 
     case "id": 
       dict["ID"] = value; 
       break; 
     case "dropdown-select": 
      var $row = $(this).parents('tr'); 
      selected = $row.find($(".selected")).val(); 
      console.log(selected); 
      break; 
     } 
    }) 
    if (isValid) { 
     console.log(dict); 
     console.log(selected); 
     $this.val('Edit'); 
     tds.prop('contenteditable', false); 
     var request = $.ajax({ 
      type: "POST", 
      url: "update.php", 
      data: dict, selected, 
      success: function(data){ 
       console.log(dict); 
       console.log(selected); 
      } 
     }); 

     request.done(function (response, textStatus, jqXHR){ 
      if(JSON.parse(response) == true){ 
      console.log("row updated"); 
      } else { 
      console.log("row failed to updated"); 
      console.log(response); 
      console.log(textStatus); 
      console.log(jqXHR); 
      } 
     }); 
    } 

Variablen, die auf update.php im Wert bringen:

$species = $_POST['Species']; 
    $container = $_POST['Container']; 
    $supp_name = $_POST['Supplier Name']; 
    $supp_sku = $_POST['Supplier SKU']; 
    $current_sku = $_POST['Current SKU']; 
    $mill = $_POST['Mill']; 
    $lead_time = $_POST['Lead Time']; 
    $less_than_unit_cost = $_POST['Less Than Unit Cost']; 
    $unit_cost = $_POST['Unit Cost']; 
    $mill_direct_cost = $_POST['Mill Direct Cost']; 
    $unit_quantity = $_POST['Unit Quantity']; 
    $bundle_cost = $_POST['Bundle Cost']; 
    $mixed_unit_price = $_POST['6+ Mixed Unit Price']; 
    $uom = $_POST['UOM']; 
    $mill_loc = $_POST['Mill Location']; 
    $id = $_POST['ID']; 
    $selected = $_POST['selected']; 

Abfrage-Update in update.php:

$host="xxxxxxx"; 
    $dbName="xxxx"; 
    $dbUser="xxxxxxxxxx"; 
    $dbPass="xxxxxxxx"; 

    $pdo = new PDO("sqlsrv:Server=$host;Database=$dbName", $dbUser, $dbPass); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "UPDATE Example_Table SET [Species] = '$species', 
[Container] = '$container', 
[Supplier Name] = '$supp_name', 
[Supplier SKU] = '$supp_sku', 
[Current SKU] = '$current_sku', 
[Mill] = '$mill', 
[Lead Time] = '$lead_time', 
[Less Than Unit Cost] = '$less_than_unit_cost', 
[Unit Cost] = '$unit_cost', 
[Mill Direct Cost] = '$mill_direct_cost', 
[Unit Quantity] = '$unit_quantity', 
[Bundle Cost] = '$bundle_cost', 
[6+ Mixed Unit Price] = '$mixed_unit_price', 
[UOM] = '$uom', 
[Mill Location] = '$mill_loc' 

WHERE ID = $id"; 

    $stmt = $pdo->prepare($sql); 
    $result = $stmt->execute(); 
    echo json_encode($result); 
+0

Haben Sie gedebuggt F12-Tools, um zu sehen, dass die Namen übereinstimmen? –

+0

Ich habe die Konsole überprüft und keine Fehler erhalten. Ich habe auch die Netzwerk-Registerkarte überprüft, um meine update.php zu sehen, nachdem ich die Zeile gespeichert habe und es aussieht, als ob alle Formulardaten korrekt an die Seite übergeben werden. – Rataiczak24

+1

Stellen Sie sicher, dass die Stellen, an denen dies geschieht, nicht in ganze Zahlen gesetzt sind, was bedeutet, dass Sie möglicherweise versuchen, varchar in ein Integer-Feld einzufügen. Sie sollten auch wissen, dass Sie keine Leerzeichen zwischen Ihren Zeilennamen in der DB haben dürfen. Ersetzen Sie die Leerzeichen durch Bindestriche '-' oder Unterstriche' _' – JeanPaul98

Antwort

1

THIS

$species = $_POST['Species']; 
$container = $_POST['Container']; 
$supp_name = $_POST['Supplier Name']; 
$supp_sku = $_POST['Supplier SKU']; 
$current_sku = $_POST['Current SKU']; 
$mill = $_POST['Mill']; 
$lead_time = $_POST['Lead Time']; 
$less_than_unit_cost = $_POST['Less Than Unit Cost']; 
$unit_cost = $_POST['Unit Cost']; 
$mill_direct_cost = $_POST['Mill Direct Cost']; 
$unit_quantity = $_POST['Unit Quantity']; 
$bundle_cost = $_POST['Bundle Cost']; 
$mixed_unit_price = $_POST['6+ Mixed Unit Price']; 
$uom = $_POST['UOM']; 
$mill_loc = $_POST['Mill Location']; 
$id = $_POST['ID']; 
$selected = $_POST['selected']; 

$host="xxxxxxx"; 
$dbName="xxxx"; 
$dbUser="xxxxxxxxxx"; 
$dbPass="xxxxxxxx"; 

$pdo = new PDO("sqlsrv:Server=$host;Database=$dbName", $dbUser, $dbPass); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "UPDATE Example_Table SET [Species] = '$species', 
[Container] = '$container', 
[Supplier Name] = '$supp_name', 
[Supplier SKU] = '$supp_sku', 
[Current SKU] = '$current_sku', 
[Mill] = '$mill', 
[Lead Time] = '$lead_time', 
[Less Than Unit Cost] = '$less_than_unit_cost', 
[Unit Cost] = '$unit_cost', 
[Mill Direct Cost] = '$mill_direct_cost', 
[Unit Quantity] = '$unit_quantity', 
[Bundle Cost] = '$bundle_cost', 
[6+ Mixed Unit Price] = '$mixed_unit_price', 
[UOM] = '$uom', 
[Mill Location] = '$mill_loc' 

WHERE ID = $id"; 

$stmt = $pdo->prepare($sql); 
$result = $stmt->execute(); 
echo json_encode($result); 

sollte wirklich BE

<?php 
    $species = $_POST['Species']; 
    $container = $_POST['Container']; 
    $supp_name = $_POST['Supplier_Name']; //make sure input names do not have spaces 
    //ex: <input type="text" name="Supplier_Name" or name="Supplier-Name">, do this for every input that has space 
    $supp_sku = $_POST['Supplier_SKU']; // or replace with `-` 
    $current_sku = $_POST['Current_SKU'];// or replace with `-` 
    $mill = $_POST['Mill']; 
    $lead_time = $_POST['Lead_Time'];// or replace with `-` 
    $less_than_unit_cost = $_POST['Less_Than_Unit_Cost'];// or replace with `-` 
    $unit_cost = $_POST['Unit_Cost'];// or replace with `-` 
    $mill_direct_cost = $_POST['Mill_Direct_Cost'];// or replace with `-` 
    $unit_quantity = $_POST['Unit_Quantity'];// or replace with `-` 
    $bundle_cost = $_POST['Bundle_Cost'];// or replace with `-` 
    $mixed_unit_price = $_POST['6_Mixed_Unit_Price'];// This field remove the plus sign 
    $uom = $_POST['UOM']; 
    $mill_loc = $_POST['Mill Location'];// or replace with `-` 
    $id = $_POST['ID']; 
    $selected = $_POST['selected']; 
?> 

<?php 
    $host="xxxxxxx"; 
    $dbName="xxxx"; 
    $dbUser="xxxxxxxxxx"; 
    $dbPass="xxxxxxxx"; 

    $pdo = new PDO("sqlsrv:Server=$host;Database=$dbName", $dbUser, $dbPass); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "UPDATE Example_Table SET [Species] = '$species', [Container] = '$container', 
    [Supplier_Name] = '$supp_name', [Supplier_SKU] = '$supp_sku', 
    [Current_SKU] = '$current_sku', [Mill] = '$mill', [Lead_Time] = '$lead_time', 
    [Less_Than_Unit_Cost] = '$less_than_unit_cost', [Unit_Cost] = '$unit_cost', 
    [Mill Direct Cost] = '$mill_direct_cost', [Unit Quantity] = '$unit_quantity', 
    [Bundle Cost] = '$bundle_cost', [6+ Mixed Unit Price] = '$mixed_unit_price', 
    [UOM] = '$uom', [Mill_Location] = '$mill_loc' WHERE ID = '$id'"; 


    $stmt = $pdo->prepare($sql); 
    $result = $stmt->execute(); 

    echo json_encode($result); 
?> 
+0

Yep, du hattest Recht ... keine Räume funktionierten ... ich hatte gedacht, dass ich das getan hatte, bevor ich Spalten mit Leerzeichen verwendete, aber ich schätze nicht ... danke für die Hilfe! – Rataiczak24

Verwandte Themen