2017-09-18 14 views
1

追加ボタンで必要に応じて行を追加できるテーブルがあります。私はデータベースproduct_sizeとproduct_colorに2つのテーブルを持っています。 Product_colorテーブルには、サイズIDを含む列があります。 2つ以上の行の値が同じサイズ表(たとえば「小さい」)であれば、すべての小さな色のカラー表に同じsize_idを挿入する必要があります。私のコードをチェックし、誰かができる場合は助けてください。 product_size tablemysqlの2つの行を一致させる方法PHPの同じテーブル

product_colorテーブル enter image description here

CODE:

if (isset($_POST['submit'])) 
{ 
    $con=mysqli_connect("localhost", "root", ""); 
    mysqli_select_db($con,"login"); 

    for ($i=0; $i<count($_POST['size']); $i++){ 

     $size = $_POST['size'][$i];   

     $qry1="INSERT INTO product_size (product_size) VALUES ('$size')"; 

     $result1=mysqli_query($con,$qry1); 
     $product_size_id = mysqli_insert_id($con);      


      $quantity = $_POST['dress_quantity'][$i]; 

      $color = $_POST['color'][$i]; 

      $qry2="INSERT INTO product_color (product_size_id, product_color, product_quantity) VALUES ('$product_size_id', '$color', '$quantity')"; 

      $result2=mysqli_query($con,$qry2); 
      if($result2) 
      { 
       echo '<script>alert("Record Added Successfully!")</script>'; 
       echo '<script>window.location="try.php"</script>'; 
      } 
      else  
      { 
       die("Error While Adding Stock! Please Try Again."); 
      } 
     } 
    } 

// HTMLのCODE:

<TABLE id="dataTable"> 
        <thead> 
        <tr> 
        <th style="text-align: center;">&nbsp;Select&nbsp;</th>  
        <th style="text-align: center;">&nbsp;<b>Size</b>&nbsp;</th> 
        <th style="text-align: center;">&nbsp;<b>Color</b>&nbsp;</th> 
        <th><b>Quantity</b></th> 
        </tr> 
        </thead> 

        <tbody> 
        <tr id='C1' class='customer'> 
        <td><input type="checkbox" name="chk"/></td> 
        <td><select name="size[]" id="size" required="" > 
        <option value="">Select Size</option></select></td> 
        <td> 
        <select name="color[]" required="" > 
        <option value="">Select Color</option> 
        <option value="Aqua">Aqua</option> 
        <option value="Blue">Blue</option> 
        <option value="Black">Black</option>  
        <option value="Green">Green</option> 
        </select></td> 

        <td> 
        <input style="width: 120px; height: 26px; " oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" type="number" name="dress_quantity[]" class="qty1" onchange="calculate();" min="1" max="1000" maxlength="4" placeholder="Size Quantity" value="" required=""> 

        </td> 
        </tr> 
        </tbody> 
        </TABLE> 
        <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" /> 
        <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" /> 

// HTML TABLE enter image description here

+0

これは 'size'をループしているので、次の行で' size ++ 'を得るためです。あなたのサイズがテーブルにあらかじめ定義されている場合は、ループする必要はありません。データをプルしてフォームを作成し、提出されたデータから値を読み取り、それをカラーテーブルに入れてください。 – Sand

+0

htmlテーブルから値を挿入していますので、ループのサイズはすべての行の値を挿入できるようにする必要があります – Moon

+0

ループは常に1つ以上の値を追加するため、商品IDと一致することはありません – Sand

答えて

1

まず、あなたが望むすべてのサイズを持つテーブルを作成する必要があります。サイズテーブルは、サイズのIDとサイズの名前のみを持つ必要があり、そのテーブルを使用してサイズドロップダウンを作成します。

次に、このようなことをHTMLテーブルページで行います。あなたのHTMLで、その後

<?php 
$con=mysqli_connect("localhost", "root", ""); 
mysqli_select_db($con,"login"); 

$query = mysqli_query("SELECT * FROM size"); 
$sizeParam = $database->query($query); 
$sizeParam -> execute(); 
?> 

:あなたの処理PHPへのデータを受信する際

<TABLE id="dataTable"> 
<thead> 
    <tr> 
    <th style="text-align: center;">&nbsp;Select&nbsp;</th>  
    <th style="text-align: center;">&nbsp;<b>Size</b>&nbsp;</th> 
    <th style="text-align: center;">&nbsp;<b>Color</b>&nbsp;</th> 
    <th><b>Quantity</b></th> 
    </tr> 
</thead> 
<tbody> 
    <tr id='C1' class='customer'> 
    <td><input type="checkbox" name="chk"/></td> 
    <td> 
    <select name="size[]" id="size" required="" > 
    <option value="">Select Size</option></select></td> 
    <?php while($getSizeRow = $sizeParam -> fetch_assoc()){ ?> 
     <option id="<?php echo $getSizwRow["sizeId"]; ?>"><?php echo $getSizwRow["sizeId"]; ?></option></select> 
    </td> 
    <td> 
    <select name="color[]" required="" > 
     <option value="">Select Color</option> 
     <option value="Aqua">Aqua</option> 
     <option value="Blue">Blue</option> 
     <option value="Black">Black</option>  
     <option value="Green">Green</option> 
    </select></td> 
    <td> 
    <input style="width: 120px; height: 26px; " oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" type="number" name="dress_quantity[]" class="qty1" onchange="calculate();" min="1" max="1000" maxlength="4" placeholder="Size Quantity" value="" required=""> 
    </td> 
    </tr> 
</tbody> 
</TABLE> 
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" /> 
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" /> 

は今、このような何かを行います。

if (isset($_POST['submit'])){ 

    $con=mysqli_connect("localhost", "root", ""); 
    mysqli_select_db($con,"login"); 

     $quantity = $_POST['dress_quantity']; 
     $color = $_POST['color']; 
     $size = $_POST['size']; 

     $qry2="INSERT INTO product_color (product_size_id, product_color, product_quantity) VALUES (?, ?, ?)"; 
     $result2= $con -> prepare($qry2); 
     $result2 -> bind_param(isi, $product_size_id, $color, $quantity); 

     if($result2 -> execute()){ 
     echo '<script>alert("Record Added Successfully!")</script>'; 
     echo '<script>window.location="try.php"</script>'; 
     }else{ 
       die("Error While Adding Stock! Please Try Again."); 
     } 
    } 
} 

これは、これが基本的な考え方であり、任意の私はそれらを修正するために知っているがあります場合、私はそうmysqli_*とあまり流暢でないんだけど、エラーが含まれている場合があります。

+0

よろしくお願いします私にチェックさせてください – Moon

関連する問題