2016-08-04 114 views
0

我在管理面板上有多個字段用戶可以添加字段並刪除字段,同時添加它我把簡單的插入查詢與foreach循環,但很難理解更新該字段的概念,如果用戶刪除字段或更新它不工作,如果我刪除1個字段並更新它刪除2個或更多然後2個字段,當我嘗試更新它不更新和更新問題是因爲我會犯一些錯誤的查詢。但主要的是關於我無法正確構建它的邏輯需要幫助。更新多個字段

更新查詢

$video_link = $_POST['video_link']; 
$old_links = count($video_link); 
if(isset($_POST['video_id'])) { 
    $video_id = $_POST['video_id']; 
    $total_id = count($video_id); 
} else { 
    $video_id = ''; 
} 
$video_links = mysqli_query($connect, "SELECT * FROM video_slides WHERE model_id = '$model_id'"); 
$total_links = mysqli_num_rows($video_links); 

$video_link = sizeof($video_link) - 1; 
if($total_links >= 1) { 
    for($i = 0; $i<=$video_link; $i++) { 
     if(empty($video_id[$i])) { 
      mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link``, `model_id`) VALUES ('$video_link[$i]', '$model_id')"); 
     } 
     $query2 = mysqli_query($connect, "UPDATE `video_slides` SET `embeded_link`='$video_link[$i]' WHERE id='$video_id[$i]'"); 
     if($video_link < $total_links) { 
      $new_total = $total_links-sizeof($video_link); 
      for($j = 0; $j<=$new_total; $j++) { 
       mysqli_query($connect, "DELETE FROM video_slides WHERE id='$video_id[$j]'"); 
      } 
     } 
    } 
     } else { 
      for($i = 0; $i<=$video_link; $i++) { 
       if(empty($video_id[$i])) { 
        mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link``, `model_id`) VALUES ('$video_link[$i]', '$model_id')"); 
       } 
      } 
     } 

這裏是我的表單字段

<div class="form-group"> 
    <label>Video Slides <input type="button" class="add_field_button btn blue" value="Add Field" /></label> 
    <div class="input_fields_wrap"> 
    <?php 
     $sql3 = mysqli_query($connection, "SELECT * FROM video_slides WHERE model_id = '".$data['id']."'"); 
     if(mysqli_num_rows($sql3) == 0) { 
    ?> 
    <div class="new"> 
     <input type="text" id="video_link" size="20" name="video_link[]" placeholder="Embeded Video Link" class="form-control" /> 
    </div> 
    <?php 
     } else { 
      while($video = mysqli_fetch_assoc($sql3)) { 
    ?> 
    <div class="new"> 
     <input type="text" id="video_link" size="20" name="video_link[]" placeholder="Embeded Video Link" class="form-control" value="<?php echo $video['embeded_link']; ?>" /> 
     <input type="hidden" value="<?php echo $video['id']; ?>" name="video_id[]" /> 
     <a class="remove_field"><i class="fa fa-times"></i></a> 
    </div> 
    <?php } } ?>  
    </div> 
</div> 
+0

我認爲你做錯了邏輯 –

+0

是我不知道,雖然,但我仍然感到困惑,你可以幫我? –

+0

請檢查回答 –

回答

1

按我的理解,你只需要這些東西,爲什麼你做複雜的編碼

$video_link = $_POST['video_link']; 

//First Remove All ID 
mysqli_query($connect, "DELETE FROM video_slides WHERE model_id='$model_id'"); 

//Then After insert updated data 
foreach($video_link as $key=>$val){ 
    mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link`, `model_id`) VALUES ('$val', '$model_id')"); 
} 
+0

警告:提供給foreach()在C:\ wamp \ www \ primi \ dashboard \ include \ functions.php上的無效參數在行 –

+0

嘿,爲什麼我要深入複雜的東西大聲笑它爲我工作但請你在你的答案中提出了一些不正確的格式,你可以檢查嗎? –

1

你應該嘗試外包在一個單獨的類你的數據庫連接 - 這將帶來更好的可讀的代碼。像教條這樣的ORM絕對可以幫助你更好地理解你自己的代碼。