2016-03-23 23 views
-1

Benim admin PHP (admin.php) üst kısmında, "DogSport" MySQL veritabanında "Spor" tablosundan veri yükledim. Belirli bir kaydın "Düzenle" bağlantısını tıkladıktan sonra, düzenleme yapabilirim, "editform2.php" deki bu kaydı silebilirim. Hatta bu sayfada bile yeni bir kayıt ekleyebilirim.PHP fonksiyonelliğini silme muhtemelen mantıksal hata

enter image description here

Sorun: Birinci ve ikinci kayıt silme çalışmıyor! Aşağıdaki tüm kayıtları silmek iyi çalışıyor. Bu sorun sadece işlev silme ile.

Kod segmenti - admin.php

<?php 
         include("dbconnect.inc.php"); 
         //Retrieving Data 
         $query1="SELECT * FROM Sport ORDER BY SportId ASC"; 
         $result2=mysqli_query($con, $query1); 
         $rows=mysqli_num_rows($result2); 
         $i=0;   
         if($rows==0) 
          echo "<br/>There are no records"; 
         else{ 
          echo "<table id='sport'>"; 
          echo "<tr><th>Sport Id</th><th>Sport Name</th><th>Description</th></tr>"; 

          while ($row = mysqli_fetch_array($result2)) 
          { 
           echo "<tr><td>" . $row["SportId"] . "</td><td>" . $row["SportName"] . "</td><td>" . $row["Description"] . 
           "</td><td> <a href='editform2.php?id=" . $row["SportId"] . "' target='_blank'>Edit</a></td></tr>"; 

           $i++; 
          } 
          echo "</table>"; 
         } 
        ?> 

Kod segmenti - editform2.php

if(isset($_POST["delete"])){ 
include("dbconnect.inc.php"); 
$query3="DELETE FROM Sport WHERE SportId=$id"; 
mysqli_query($con, $query3); 
echo "<h1>Deleted Successfully</h1>"; 
mysqli_close($con); 

}

ben gerekli dosyaları yükledik

, ayrıca kullanabilirsiniz veritabanı dahil kontrol etmek .sql komut dosyası. Yardımın takdire değer.

Eğer $ id değerini ayarlamak vermedi

https://www.dropbox.com/s/wn40u93oa1sxcph/SO.rar?dl=0

+0

emin değil 100 eğer% ancak ($ ​​con, $ query3) ve dropbox dosyaları dayalı, $ con sadece seçilen veritabanı sunucusunu mysqli_query kullanıyorsunuz, veritabanının kendisi değil mi? Mysqli_query ($ db_selected, $ query3) veya dbconnect.inc.php dosyanızdaki $ con değerini mysqli_connect ($ servername, $ username, $ password, $ dbname) olarak değiştirmeli ve veritabanına ayrı ayrı bağlanmanın ek adımını ortadan kaldırmalı mıyım? – Matt

+0

öneriniz doğru görünüyor! Yakında deneyeceğim. Ancak gizemli olan şey, silme işleminin sadece ilk iki kayıt için çalışmadığıdır. Aşağıdaki kayıtlar sorunsuz bir şekilde silinir. Veritabanı seçerken bir sorun varsa, kayıtların hiçbiri silinmez. :( – Praba

+0

Tüm bunları sunucuma yükledim ve tüm satırları silebildim. Sorunun ne olduğunu onaylayabilir misiniz? – Matt

cevap

0
$query3="DELETE FROM Sport WHERE SportId=$id"; 

? $_POST["id"] olmalı? Bir yan not olarak

- SQL enjeksiyon riski ...

+0

teşekkürler, admin.php adresinden URL aracılığıyla editform2.php'ye $ id gönderilir. Editform2.php'de bu kaydı silmek için bir düğme var. isset ($ _ POST ["delete"]), kullanıcının bu düğmeyi tıklayıp tıklamadığını kontrol eder. – Praba