2017-03-01 79 views
-2

這個「頁面」是許多所有使用包含在一起的鏈接的一部分,但因爲我無法使它工作,我正在直接找到與這個確切頁面有關的url,但我仍然無法做到這一點工作,或找出原因。我的陳述沒有更新,因爲我已經把它放下了嗎?

應該發生什麼,是查詢檢查stock是否在數據庫中,如果是,請回顯該行的值,並且如果按下提交按鈕,則根據輸入值更新數據庫。如果它不在,回顯空白表單,如果按下提交按鈕,則插入到數據庫中。我無法更新或插入工作。

我打算髮布整個頁面(減去mysql連接),希望有人可以發現錯誤。

<?php 

$status = 'Active'; 
$stock = (isset($_GET['stock'])) ? $_GET['stock'] : ''; 
$cat = (isset($_GET['cat'])) ? $_GET['cat'] : ''; 
include ('../helper_content/title_data.php'); 

/* WHAT CATEGORY DO WE WANT? */ 
if($cat == "Sales") { 

    $table = "Titles"; 
    if($stock) {$where = "stock = $stock";} 
    if ($_SERVER['REQUEST_METHOD'] == "POST") { 
     $status = $status; 
     $title_status = mysqli_real_escape_string($conn,$_POST['title_status']); 
     $title_number = mysqli_real_escape_string($conn,$_POST['title_number']); 
     $title_location = mysqli_real_escape_string($conn,$_POST['title_location']); 
     $title_owners = mysqli_real_escape_string($conn,$_POST['title_owners']); 
     $stock = $_GET['stock']; 
    } 

} 


/* Begin Main Query */ 
$sql5 = "SELECT * FROM `$table` WHERE $where"; 
$result5 = $conn->query($sql5); 
if ($result5->num_rows > 0) { 

// Stock exists, so submit will Update dB 
    if ($_SERVER['REQUEST_METHOD'] == "POST") { 

     if ($update = $conn->prepare("UPDATE `Titles` SET status=?, title_status=?, title_number=?, title_location=?, title_owners=? WHERE stock=?")){ 
      $update->bind_param('ssssii', $status, $title_status, $title_number, $title_location, $title_owners, $stock); 
      $update->execute(); 
     }; 
     if ($update->execute == TRUE) { 
      echo "Record updated successfully"; 
     } else { 
      echo "Error updating: " . $update->error; 
     } 
    } 

// Display the HTML results 
    while($row5 = $result5->fetch_assoc()) { 

     echo "Found In Database"; 

    // Title Number 
     $title_number = 'value="'.$row5['title_number'].'"'; 
     $TitleStatus = $row5['title_status']; 
     $TitleLocation = $row5['title_location']; 
     $Owners = $row5['owners']; 
    } 
} else { 
// No Query Results Found 

    echo "Not Found In Database"; 

// Insert into dB 
    if ($_SERVER['REQUEST_METHOD'] == "POST") { 

     if ($add = $conn->prepare("INSERT INTO `Titles` status=?, title_status=?, title_number=?, title_location=?, title_owners=? WHERE stock=?")){ 
      $add->bind_param('ssssii', $status, $title_status, $title_number, $title_location, $title_owners, $stock); 
      $add->execute(); 
     }; 

     if ($add->execute == TRUE) { 
      echo "Record added into database"; 
     } else { 
      echo "Error adding: " . $add->error; 
     } 
    } 

/* End Main Query */ 
} 


// Title Status 
    foreach($title_statuses as $title_status){ 
     $selected = ($TitleStatus == $title_status) ? ' selected="selected"' : ''; 
     $Title_status .= '<option value="'.$title_status.'"'.$selected.'>'.$title_status.'</option>'; 
    } 

// Title Location 
    foreach($title_locations as $title_location){ 
     $selected = ($TitleLocation == $title_location) ? ' selected="selected"' : ''; 
     $Title_location .= '<option value="'.$title_location.'"'.$selected.'>'.$title_location.'</option>'; 
    } 

// Prior Owners 
    foreach($prior_owners as $owners){ 
     $selected = ($Owners == $owners) ? ' selected="selected"' : ''; 
     $Owners_drop .= '<option value="'.$owners.'"'.$selected.'>'.$owners.'</option>'; 
    } 

?> 
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>?stock=<?php echo $stock; ?>"> 
<section class="title"> 
<h3>Title Info - Stock #:<?php echo $stock; ?></h3> 
    <p> 
     <label for="title_number" class="inline-edit">Title Num</label> 
     <input type="text" name="title_number" id="title_number" size="20" spellcheck="false" <?php echo $title_number; ?>> 
    </p> 
    <p> 
     <label for="title_status" class="inline-edit">Status</label> 
     <select name="title_status" id="title_status"> 
      <option></option> 
      <?php echo $Title_status; ?> 
     </select> 
    </p> 
    <p> 
     <label for="title_location" class="inline-edit">Location</label> 
     <select name="title_location" id="title_location"> 
      <option></option> 
      <?php echo $Title_location; ?> 
     </select> 
    </p> 
    <p> 
     <label for="title_owners" class="inline-edit">Owners</label> 
     <select name="title_owners" id="title_owners"> 
      <option></option> 
      <?php echo $Owners_drop; ?> 
     </select> <a target="_blank" href="https://www.vehiclehistory.com/paging-vin-report-data/specifications.php?vin=<?php echo $vin; ?>"><i class="fa fa-history" aria-hidden="true" title="Vehicle History"></i></a> 
    </p> 
</section> 

<input type="submit" id="Submit" value="Submit"> 

</form> 
+0

當你的條件表明正確的動詞是POST時,你爲什麼要使用'$ _GET ['stock']'? –

+0

由於「真實」$股票通常在其他包含頁面之一中,因此我只是將該$股票和$ cat語句放在那裏進行測試。 –

+0

我指的是'/ *我們想要的類別? * /' –

回答

1

我會以組織您的代碼開始稍微不同。你有兩件事情中的一件事情可以是真實的:表單被提交(POST請求)或通過URL(GET請求)請求頁面。所以,從這開始:

<?php 

    # Data for dropdowns 
    include ('../helper_content/title_data.php'); 

    $error = array(); 

    $status = "Active"; 
    $title_number = ""; 
    $title_status = ""; 
    $title_location = ""; 
    $title_owners = ""; 
    $vin = ""; 

    # Was the form submitted via POST? 
    if(isset($_POST['Submit'])) 
    { 
     # Yes 

     # Is this a new stock item? 
     if(empty($_POST['stock'])) 
     { 
      # Yes - insert 

      /* 
       ... get your variables from the $_POST array 
      */ 
      $title_number = filter_var($_POST['title_number'], FILTER_SANITIZE_STRING); 

      # ... repeat for other variables 

      if ($stmt = $conn->prepare("INSERT INTO `Titles` (`status`,`title_status`,`title_number`,`title_location`,`title_owners`) VALUES (?,?,?,?,?)")) 
      { 
       $stmt->bind_param('ssssii', $status, $title_status, $title_number, $title_location, $title_owners); 

       if ($stmt->execute()) 
       { 
        $stmt->close(); 

        header('Location: ./?inserted=true'); 
        exit(); 
       } 
       else 
       { 
        $error[] = "Error adding: " . $stmt->error; 
        $stmt->close(); 
       } 
      } 
     } 
     else 
     { 
      # No - update 
      $stock = $_POST['stock']; 

      /* 
       ... get your variables from the $_POST array 
      */ 

      if ($stmt = $conn->prepare("UPDATE `Titles` SET status=?, title_status=?, title_number=?, title_location=?, title_owners=? WHERE stock=?")) 
      { 
       $stmt->bind_param('ssssii', $status, $title_status, $title_number, $title_location, $title_owners, $stock); 

       if ($stmt->execute()) 
       { 
        $stmt->close(); 

        header('Location: ./?updated=true'); 
        exit(); 
       } 
       else { 
        $error[] = "Error updating: " . $stmt->error; 
        $stmt->close(); 
       } 
      } 
     } 
    } 
    else 
    { 
     # No - assume a GET 
     $status = 'Active'; 
     $stock = $_GET['stock']; 
     $cat = $_GET['cat']; 

     if(isset($_GET['updated'])) 
     { 
      $message = "Record updated"; 
     } 
     else if(isset($_GET['inserted'])) 
     { 
      $message = "Record added into database"; 
     } 

     if($stock != "") 
     { 
      # Load the item? 
      $query = "SELECT * FROM `Sales` WHERE stock=?"; 
      $stmt = $conn->prepare($query); 
      $stmt->bind_param('s', $stock); 

      if($stmt->execute()) 
      { 
       $result = $stmt->get_result(); 

       if($result) 
       { 
        $row = $result->fetch_assoc(); 

        $title_number = $row['title_number']; 
        $title_status = $row['title_status']; 
        $title_location = $row['title_location']; 
       } 
      } 

      $stmt->close(); 
     } 
    } 
?> 

<?php if(isset($message)) : ?> 
    <div class="alert alert-success"> 
     <?= $message ?> 
    </div> 
<?php endif; ?> 

<?php if(isset($error)) : ?> 
    <div class="alert alert-danger"> 
     <ul> 
     <?php foreach($error as $err): ?> 
      <li><?= $err ?></li> 
     <?php endforeach; ?> 
     </ul> 
    </div> 
<?php endif; ?> 

<form method="POST" action="<?= $_SERVER['PHP_SELF']; ?>"> 
    <section class="title"> 
     <h3>Title Info - Stock #:<?= $stock; ?></h3> 
     <input type="hidden" name="stock" value="<?= $stock; ?>" /> 
     <p> 
      <label for="title_number" class="inline-edit">Title Num</label> 
      <input type="text" name="title_number" id="title_number" size="20" spellcheck="false" value="<?= $title_number; ?>" /> 
     </p> 
     <p> 
      <label for="title_status" class="inline-edit">Status</label> 
      <select name="title_status" id="title_status"> 
       <option></option> 

       <?php foreach($title_statuses as $option): ?> 
        <option <?= $option == $title_status) ? 'selected="selected"' : '' ?>><?= $option ?></li> 
       <?php endforeach; ?> 

      </select> 
     </p> 
     <p> 
      <label for="title_location" class="inline-edit">Location</label> 
      <select name="title_location" id="title_location"> 
       <option></option> 

       <!-- Repeat the same process as $title_statuses --> 
      </select> 
     </p> 
     <p> 
      <label for="title_owners" class="inline-edit">Owners</label> 
      <select name="title_owners" id="title_owners"> 
       <option></option> 

       <!-- Repeat the same process as $title_statuses --> 
      </select> 
      <a target="_blank" href="https://www.vehiclehistory.com/paging-vin-report-data/specifications.php?vin=$vin"> 
       <i class="fa fa-history" aria-hidden="true" title="Vehicle History"></i> 
      </a> 
     </p> 
    </section> 

    <input type="submit" id="Submit" value="Submit" /> 
</form> 

這裏是部分重新實現您的頁面。我首先假設股票號碼是請求URL的一部分,然後查看該值。我(目前)忽略了加載下拉值,以支持基本查找工作。

您還會注意到我已經在您的標記中使用了短標籤 - 這通常是一種更簡潔的模板方法,而不是遍佈整個地方的回聲。

我已經添加了一些保存邏輯的部分實現。您還會注意到我向表單添加了隱藏輸入 - 在發佈表單時,您不希望依賴查詢字符串值。

該代碼在數組中存儲一些簡單的錯誤消息,如果插入或更新失敗,該消息會被回顯出來。如果成功,我們用一個簡單的標記變量重定向回同一頁面,我們在上讀到要求知道我們是否需要顯示信息性消息。這被稱爲POST-REDIRECT-GET,並防止用戶意外(或故意)重複提交相同的表單數據。

+0

我正在通過將其餘代碼組織成更好的示例來工作,但這應該讓您開始。 –

+0

我假定'include'引入了一些標記 - 不要在POST上包含該標記,因爲您希望能夠執行重定向(最終會得到該結果)。 –

+0

你的代碼,一行一行地剪切和粘貼,除去1個錯誤:「解析錯誤:語法錯誤,意外的'$ stmt'(T_VARIABLE)in /home/dbookatay/carcityofdanbury.com/Admin/include/pages/vehicle_Titles第38行的.php「 –

相關問題