2013-11-27 53 views
0

此代碼不提升id。我們有id 1,2,3,5。當添加下一條記錄時讀取id 16.那麼如何解決這個問題呢? id必須1,2,3,4,5等如何在php中創建升序ID

<?php 
include"class_koneksi.php"; 
$db=new database(); 
$db->konek(); 


    if(empty($_GET['aksi'])){ 

     $daftar=$db->tampilData(); 
      echo"<table border=1> 
       <tr> 
        <td>Id</td> 
        <td>Nama</td> 
        <td>Email</td> 
        <td>Pesan</td> 
        <td>Edit</td> 
        <td>Hapus</td> 
       </tr>"; 
     foreach($daftar as $data){ 
      echo" <tr> 
        <td>".$data['id']."</td> 
        <td>".$data['nama']."</td> 
        <td>".$data['email']."</td> 
        <td>".$data['pesan']."</td> 
        <td><a href='?aksi=edit&id=$data[id]'>edit</a></td> 
        <td><a href='?aksi=hapus_data&id=$data[id]'>Hapus</a></td> 
       </tr>"; 
     } 
     echo"</table> <br> <a href='?aksi=tambah'>TAMBAH</a>"; 


    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah'){ 
     echo"<br> 
     <form method=POST action='?aksi=tambah_data'> 
      <table> 

       <tr><td>Nama</td><td><input type=text name='nama'></td></tr> 
       <tr><td>Email</td><td><input type=text name='email'></td></tr> 
       <tr><td>Pesan</td><td><input type=text name='pesan'></td></tr> 
       <tr><td></td><td><input type=submit value='simpan'></td></tr> 
      </table> 
     </form> 
     "; 

    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah_data'){ 
     $id= isset($_POST['id']); 
     $nama=$_POST['nama']; 
     $email=$_POST['email']; 
     $pesan=$_POST['pesan']; 
     $db->tambahData($id,$nama,$email,$pesan); 

    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='edit'){ 
     $id=$_GET['id']; 
     echo"<br> 
      <form method=POST action='?aksi=update_data'> 
       <table> 
        <tr><td>Id</td><td><input type=text name='id' value='".$db->bacaData('id',$id)."'></td></tr> 
        <tr><td>Nama</td><td><input type=text name='nama' value='".$db->bacaData('nama',$id)."'></td></tr> 
        <tr><td>Email</td><td><input type=text name='email' value='".$db->bacaData('email',$id)."'></td></tr> 
        <tr><td>Pesan</td><td><input type=text name='pesan' value='".$db->bacaData('pesan',$id)."'></td></tr> 
        <tr><td></td><td><input type=submit value='simpan'></td></tr> 
       </table> 
      <input type='hidden' name='id' value='".$db->bacaData('id',$id)."'> 
      </form> 
     "; 

    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='update_data'){ 
     $id=$_POST['id']; 
     $nama=$_POST['nama']; 
     $email=$_POST['email']; 
     $pesan=$_POST['pesan']; 
     $db->updateData($id,$nama,$email,$pesan); 

    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='hapus_data'){ 
     $id=$_GET['id']; 
     $db->hapusData($id); 
    } 

?> 

你能告訴我這段代碼錯了嗎? 你能幫我解決這個問題嗎?感謝

+0

你知道嗎,我真的很喜歡,來幫助你,但是當我看到你的代碼是不正確的縮進我無法繼續閱讀你的代碼! –

+0

這可能[幫助](http://php.about.com/od/learnmysql/p/SQL_order_by.htm) – conquistador

+2

爲什麼你認爲這個「一個問題」? – NoBBy

回答

0

它顯示becouse表的id屬性被設置爲自動增量

+0

我已經在數據庫中設置了id auto_increment,但仍然沒有提升。你能看到編輯可能在表代碼中是錯誤的嗎? – user3040085

+0

這段代碼沒有什麼問題,但是在你的概念中。 – zzlalani

+1

如果您添加行並刪除它們,自動增量編號將不會被重置。您將始終獲得一個唯一的ID,您永遠不會使用此表的自動增量。除非你可以從mysql服務器重置它。但不重新開始。 – zzlalani

2

刪除表的自動遞增特性,其顯示16

在該表中插入新行之前,ID爲16編寫一個選擇查詢。

$sql = "select * from `table_name`"; 
$result = mysql_query($sql); 

$id=count($result)+1; 
if(count($result)>0){ 
    $temp = 1; 
    while($row = mysql_fetch_assoc($result)){ 
     if($row['id']!=$temp++){ 
      $id=$temp; break; 
     } 

    } 
} 

$sql = "insert into `table_name` (`id`,`..`,`..`) values('"$id.."','..','..')"; 
mysql_query($sql); 

我希望這將解決您的查詢......

+0

函數tampilData(){ $ sql =「select * from tb_barang」; $ result = mysql_query($ sql); $ id = count($ result)+1;如果(count($ result)> 0){ $ data = 1; while($ rows = mysql_fetch_assoc($ result)){ if($ rows ['id']!= $ data ++){ $ id = $ data;打破; } } } $ SQL = 「插入tb_barang(ID,NAMA,電子郵件,pesan)值( '$ ID', '$ NAMA', '$電子郵件', '$ pesan')」; mysql_query($ sql); – user3040085

+0

但仍然錯誤undefined nama,電子郵件pesan – user3040085

+0

嘗試使用反引號... like .. $ sql =「insert into'''tb_barang \''('''id \'','''nama \' ('$ id','$ nama','$ email','$ pesan')「;如果錯誤仍然存​​在,請打印查詢並在phpmyadmin sql編輯器中運行打印的查詢,並查看它給出的wat錯誤。 –

0

首先從ID刪除自動增量您在這個問題上的各自的數據庫表。然後用您的代碼替換此代碼部分。

. 
. 
. 
elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah'){ 
     $daftar=$db->tampilData(); 
     $id=count($daftar)+1; 
     if(count($daftar)>0){ 
      $temp = 1; 
      forech($daftar as $row){ 
       if($row['id']!=$temp++){ 
        $id=$temp; break; 
       } 

      } 
     } 
     echo"<br> 
     <form method=POST action='?aksi=tambah_data'> 
      <table> 

       <tr><td>Nama</td><td><input type=text name='nama'><input type="hidden" name='id' value="<?php echo $id ?>"></td></tr> 
       <tr><td>Email</td><td><input type=text name='email'></td></tr> 
       <tr><td>Pesan</td><td><input type=text name='pesan'></td></tr> 
       <tr><td></td><td><input type=submit value='simpan'></td></tr> 
      </table> 
     </form> 
     "; 

    }elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah_data'){ 
     $id= $_POST['id']; 
     $nama=$_POST['nama']; 
     $email=$_POST['email']; 
     $pesan=$_POST['pesan']; 
     $db->tambahData($id,$nama,$email,$pesan); 

    } 
. 
. 
. 

我希望這能解決您的要求..