2016-01-20 124 views
0

我有一個form.php數組發佈到update.php來更新mysql數據庫。 其各自的相關部分是:在foreach循環中未定義的數組偏移量通知

form.php的

if ($type == "1")  {echo ' 
    <input type="hidden" id="assettype" name="atype[]" value="'. $row['AType'] .'"/> 
    <input type="hidden" id="assetid" name="aid[]" value="'. $row['AID'] .'"/> 

    <input type="text" name="serialnum[]" value="'. $row['SerialNumber'] .'"/> 
    <input type="text" name="unitsize[]" value="'. $row['UnitSize'] .'"/> 
    <input type="text" name="prop1[]" value="'. $row['Prop1'] .'"/>  
    <input type="text" name="latitude[]" value="'. $row['Latitude'] .'"/> 
    <input type="text" name="longitude[]" value="'. $row['Longitude'] .'"/> 
       ';} 
if ($type == "2")  {echo ' 
    <input type="hidden" id="assettype" name="atype[]" value="'. $row['AType'] .'"/> 
    <input type="hidden" id="assetid" name="aid[]" value="'. $row['AID'] .'"/> 

    <input type="text" name="serialnum[]" value="'. $row['SerialNumber'] .'"/> 
    <input type="text" name="unitsize[]" value="'. $row['UnitSize'] .'"/> 
    <input type="text" name="prop2[]" value="'. $row['Prop2'] .'"/> 
    <input type="text" name="latitude[]" value="'. $row['Latitude'] .'"/> 
    <input type="text" name="longitude[]" value="'. $row['Longitude'] .'"/> 
       ';}  

Update.php

foreach ($_POST['aid'] as $key=>$assetid) { 
$atype = $_POST['atype'][$key]; 
if ($atype == "1")  { 

    $stmt = $mysqli->stmt_init(); 
    $query = "UPDATE asset SET 
      SerialNumber=?,UnitSize=?,Prop1=?,Latitude=?,Longitude=? WHERE AID = ?"; 
    if($stmt->prepare($query)) { 

    $stmt->bind_param('sdddds', $serialnum, $unitsize, $prop1, $lat, $long, $assetid); 

     $assetid = $_POST['aid'][$key]; 
     $serialnum = $_POST['serialnum'][$key]; 
     $unitsize = $_POST['unitsize'][$key]; 
     $prop1 = $_POST['prop1'][$key]; 
     $lat = $_POST['latitude'][$key]; 
     $long = $_POST['longitude'][$key]; 
     $stmt->execute(); 
    $stmt->close(); 
    } 
} 
elseif ($atype == "2")  { 

    $stmt = $mysqli->stmt_init(); 
    $query = "UPDATE asset SET 
      SerialNumber=?,Prop2=?, Latitude=?,Longitude=? WHERE AID = ?"; 
    if($stmt->prepare($query)) { 

    $stmt->bind_param('ssdds', $serialnum, $prop2, $lat, $long, $assetid); 

     $assetid = $_POST['aid'][$key]; 
     $serialnum = $_POST['serialnum'][$key]; 
     $prop2 = $_POST['prop2'][$key]; 
     $lat = $_POST['latitude'][$key]; 
     $long = $_POST['longitude'][$key]; 
     $stmt->execute(); 
    $stmt->close(); 
    } 
}} 

這個偉大的工程,但所有的陣列中的一個輸入。 我不斷收到以下:

注意:未定義抵消:3

與以下行:除了這一個

$prop2 = $_POST['prop2'][$key]; 

所有其他數據庫字段更新罰款。任何人都可以指出我正確的方向嗎?

+0

檢查有多少個指標你進入$ _POST ['aid']和$ _POST ['atype'] ...它必須是相同的..否則你會收到偏移錯誤。 – devpro

+0

如果我使用print_r它給我每個相同的數字。 – user3726827

回答

0

您應該對此數組輸入字段使用相同的名稱。即prop [],但是你使用了prop1 []和prop2 []。

if ($type == "1")  {echo ' 
    <input type="hidden" id="assettype" name="atype[]" value="'. $row['AType'] .'"/> 
    <input type="hidden" id="assetid" name="aid[]" value="'. $row['AID'] .'"/> 

    <input type="text" name="serialnum[]" value="'. $row['SerialNumber'] .'"/> 
    <input type="text" name="unitsize[]" value="'. $row['UnitSize'] .'"/> 
    <input type="text" name="prop[]" value="'. $row['Prop1'] .'"/>  
    <input type="text" name="latitude[]" value="'. $row['Latitude'] .'"/> 
    <input type="text" name="longitude[]" value="'. $row['Longitude'] .'"/> 
       ';} 
if ($type == "2")  {echo ' 
    <input type="hidden" id="assettype" name="atype[]" value="'. $row['AType'] .'"/> 
    <input type="hidden" id="assetid" name="aid[]" value="'. $row['AID'] .'"/> 

    <input type="text" name="serialnum[]" value="'. $row['SerialNumber'] .'"/> 
    <input type="text" name="unitsize[]" value="'. $row['UnitSize'] .'"/> 
    <input type="text" name="prop[]" value="'. $row['Prop2'] .'"/> 
    <input type="text" name="latitude[]" value="'. $row['Latitude'] .'"/> 
    <input type="text" name="longitude[]" value="'. $row['Longitude'] .'"/> 
       ';}  

而且在這樣的操作頁面更新:

$prop2 = $_POST['prop'][$key]; 

我不知道你用什麼邏輯,如果有一個邏輯上的錯誤使用,

$prop2 = !empty($_POST['prop2'][$key]) ? $_POST['prop2'][$key] : ''; 
+0

感謝這爲我工作。 – user3726827