2017-02-11 123 views
0

我把表單的所有輸出放在,而循環但是每當我嘗試運行刪除時它就停止工作。我的數據庫還有一個是id,這是唯一的。我試圖刪除使用ID字段,但沒有錯誤顯示,它也無法正常工作。如果我將代碼放在循環中,它會按自己的方式刪除並逐個顯示消息。我怎樣才能讓它在循環外部刪除?提交表單後記錄沒有從數據庫中刪除

<?php 
    session_start(); 
?> 

<html> 
<body> 

<?php 
    require_once 'login.php'; 
    $connection = new mysqli($db_hostname, $db_username, $db_password, $db_database); 
    if (!$connection) 
     die("unable to connect to mysqli:" . mysqli_error()); 

    mysqli_select_db($connection, "dbase1") or die("db not selected" . mysqli_error()); 

    $sql = " SELECT * FROM tab"; 
    $result = $connection->query($sql); 

    if ($result->num_rows > 0) { 

     while ($row = $result->fetch_assoc()) { 
?> 
    <form class="boxed" style ="border: 4px solid black ; text-align: center; action ="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

    <h1> Message </h1> 

    <?php echo "<br>" . "Name: " . $row["name"] . "<br>" . " Email : " . $row["email"] . "<br>" . "Phone # " . $row["phone"] . "<br>" . "Message : " . $row["text"] . "<br>"; ?> 
    <input type="submit" class="button" name="delete" value="delete" style =" background-color: grey; 
     border: none; 
     color: white; 
     padding: 15px 70px; 
     margin: 15px 0px; 
     cursor: pointer;"/>  
    </form> 
<?php 

     } 
    } 


    if (isset($_POST['delete'])) { 
     echo "hry"; 

     $sql = " DELETE FROM tab WHERE id=" . $row["id"]; 
     $result = $connection->query($sql); 
    } 
?> 
</body> 
<html> 
+1

第一件事情 - 請格式化你的代碼。你發佈的內容太可怕了。你必須瞭解表單提交的工作原理。您可以在循環中創建表單,但表單不會提交除提交按鈕之外的任何數據。那麼你如何知道要刪除哪條記錄?檢查此http://www.w3schools.com/php/php_forms.asp改善您的代碼,我會幫助。 –

+0

對不起,我是在PHP初學者,但你建議我卡住你需要我縮進代碼? –

+0

是否有任何其他方式,然後while循環帶來刪除按鈕的多個數據庫條目,是的再次感謝您的幫助! –

回答

0

肯定,你應該更好地格式化你的代碼,使用同樣的目的相同的報價,而不是混合' VS ",使用縮進使代碼的可讀性。另外儘量避免使用內聯樣式,並且使用類來進行樣式設計。

對於功能本身 - 您必須通過提交表單來對您想要刪除的內容進行一些「標識」。如果所有表單都相同,腳本如何知道要刪除哪條記錄? 也想想爲什麼把記錄刪除代碼放到腳本的開頭而不是結尾。在你的場景中:你點擊刪除,腳本將再次顯示所有記錄(表單),然後刪除其中的一個(所以它基本上顯示不再存在的roceord)。如果記錄刪除代碼正在開始,記錄被刪除,然後循環顯示它應該。

這些都是非常基本的,所以你應該多學習如何HTML & PHP工作...

改進和功能代碼:

<?php 
require_once 'login.php'; 
$connection = new mysqli($db_hostname, $db_username, $db_password, $db_database); 
if (!$connection) { 
    die('unable to connect to mysqli:' . mysqli_error()); 
} 
//not neccesary when the db is selected during connection 
//mysqli_select_db($connection, 'dbase1') or die('db not selected' . mysqli_error()); 

// submited form process 
if (isset($_POST['submit']) && $_POST['submit'] == 'delete') { 

    echo "hry"; 

    $sql = 'DELETE FROM tab WHERE id=' . $_POST['id']; 
    $result = $connection->query($sql); 

} 
?> 

<html> 
<body> 
    <?php 
    $sql = 'SELECT * FROM tab'; 
    $result = $connection->query($sql); 

    if ($result->num_rows > 0) { 
     while ($row = $result->fetch_assoc()) { 

      echo '<h1> Message </h1>'; 
      echo '<br>' . 'Name: ' . $row['name']; 
      echo '<br>' . ' Email: ' . $row['email']; 
      echo '<br>' . ' Phone # ' . $row['phone']; 
      echo '<br>' . ' Message: ' . $row['text']; 
      echo '<br>'; 

      echo '<form class="boxed" action="' . $_SERVER['PHP_SELF'] . '" method="post" style="...">'; 
      echo '<input type="hidden" name="id" value="' . $row["id"] . '" />'; 
      echo '<input type="submit" class="button" name="submit" value="delete" style="..." />'; 
      echo '</form>'; 
     } 
    } 
    ?> 
</body> 
<html> 
+0

非常感謝你真的真的很有用,再次感謝:) –

+0

我需要一些更多的幫助,我很少,如果你可以我有註銷問題,如果你不介意我可以再次發送在這裏我感謝你的努力驚人! –

+0

其實它沒有註銷我是非常糟糕的PHP的東西我的意思是代碼indentation,如果你可以幫助解決這將是很大的幫助再次 –