İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Numara atamak

404

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
124
Reaction score
0
Merhaba , senelerdir hiç ihtiyacım olmamıştı :) num_rows la yada array la çözdüğüm bir olaydı fakat şimdi aslında nasıl olduğunu öğrenmenin vakti geldi.

sql'e eklenen her kişiye ardaşık numara vermek istiyorum ama eğer daha önceden herhangi bir kayıt silinmişse yeni kaydın bu silinmiş id üzerine yazılmasını istiyorum.

Örneğin :
1 Ahmet -> 2 Mehmet -> 3 Ayşe

buradan Mehmet i kaldırdığım da noluyor 2.kayıt boş kalıyor
4.yapacağım kaydın 2 numarasını almasını istiyorum.

umarım anlatabilmişimdir teşekkürler
 

404

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
124
Reaction score
0
en sonunda silinen id leri farklı bir tabloya kaydederek yapacağım inserti :)
 

muratmoon

0
İyinet Üyesi
Katılım
5 Eylül 2008
Mesajlar
194
Reaction score
0
Bir sonra alınacak numarayı ayrı bir tabloda tut, bişey silersen sildiğin numara ile güncelle. En pratik çözüm bu olur.
 

404

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
124
Reaction score
0
zaten 1 den fazla veri oldugu ıcın bu dedıgın olmaz
ama ben de aynı şeyi söyledım yapabilirim diye. sıradakı id yi tutmaya gerek yok
silinenleri 1 tabloda tutsak yıne olur fakat bunun sql bazlı bir fonksiyonu olması gerekir ben de onu soruyorum zaten
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
bence tabloya bir alan daha aç silindi diye :) bu alanı eğer sildiysen s yap. Kayıt girerkende ilk önce s ye göre küçükten büyüğe doğru listelek eğer s olan kayıt varsa update ettir ve silindi alanını h yap. Eğer s hiç yoksa yeni kayıt girdir.
 

ErsaT

0
İyinet Üyesi
Katılım
9 Temmuz 2005
Mesajlar
200
Reaction score
0
Silinenler tablosununda silinen_id şeklinde silinenleri tutarsın.

Silerken;
PHP:
<?php
$silinecek_id =1;
$tamam = mysql_query("Delete From tablom where id=$silinecek_id");
if($tamam){
mysql_query("Insert Into silinen_id Values ($silinecek_id)");
echo 'Silindi';
}else{
echo 'Hata oluştu silinemedi';
}
?>
Eklerken
PHP:
<?php
$silinen_sonuc = mysql_query("Select silinen_id From silinenler_tablom order by silinen_id");
$silinen_satir = mysql_fetch_assoc($silinen_sonuc);

if(mysql_num_rows($silinen_sonuc) !=0){
mysql_query("Insert Into tablom (id, isim, soyad, tckimlik) Values ('".$silinen_satir[silinen_id]."', '$isim', '$soyad')");

}else{
mysql_query("Insert Into tablom (id, isim, soyad, tckimlik) Values (lisanssız, '$isim', '$soyad')");
}
?>
Bu şekilde olabilir sanırım.
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
hocam o kadar kasmaya gerek yok

id, isim, soyad, tckimlik bunun sonuna

id, isim, soyad, tckimlik, silindi ekliyecek o kadar

yani yukarda bunu anlatmaya çalıştım silindi alanına değer verince silmiş olucak. mesela s değeri. Daha basit ama yaptırdığın diğer işler için sitedeki kodların hepsine where silindi<>'s' eklemen lazım :D
 

ErsaT

0
İyinet Üyesi
Katılım
9 Temmuz 2005
Mesajlar
200
Reaction score
0
hocam o kadar kasmaya gerek yok

id, isim, soyad, tckimlik bunun sonuna

id, isim, soyad, tckimlik, silindi ekliyecek o kadar

yani yukarda bunu anlatmaya çalıştım silindi alanına değer verince silmiş olucak. mesela s değeri. Daha basit ama yaptırdığın diğer işler için sitedeki kodların hepsine where silindi<>'s' eklemen lazım :D
Silinen veriler veritabanında boşu boşuna yer de kaplayacak.
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
Silinen veriler veritabanında boşu boşuna yer de kaplayacak.

Yer kaplamıyacakki yeni girdiği veri en küçük silinen id nin üzerine yazılacak aşadğıdaki gibi. Asıl başka tablo açıp oraya bis sürü veri taşımak kasar.

id isim silindi
1 ali h
2 veli h
3 mustafa s
4 cem h
5 ahmet h

gördüğün gibi bir sistemde ilk girdiği bilgiyi 3 nolu kayıtın üstüne yazdıracak. Böylelikle hem veri tabanına fazla kayıt girmemiş olacak hemde boşu boşuna başka tabloları işin içine katmamış olacak. Tabi kendi bilir bence en kolayı bir alan daha eklemesi ister başka tablo açar sildiği id oraya taşır sonra geri alır :) uzun uzun uğraşır yani.
 

ErsaT

0
İyinet Üyesi
Katılım
9 Temmuz 2005
Mesajlar
200
Reaction score
0
Yer kaplamıyacakki yeni girdiği veri en küçük silinen id nin üzerine yazılacak aşadğıdaki gibi. Asıl başka tablo açıp oraya bis sürü veri taşımak kasar.

id isim silindi
1 ali h
2 veli h
3 mustafa s
4 cem h
5 ahmet h

gördüğün gibi bir sistemde ilk girdiği bilgiyi 3 nolu kayıtın üstüne yazdıracak. Böylelikle hem veri tabanına fazla kayıt girmemiş olacak hemde boşu boşuna başka tabloları işin içine katmamış olacak. Tabi kendi bilir bence en kolayı bir alan daha eklemesi ister başka tablo açar sildiği id oraya taşır sonra geri alır :) uzun uzun uğraşır yani.
Haklısın fakat senin önerdiğinde bütün verilerde h ve s olacak. Ayrıca silinmesi gereken kayıt (3 mustafa s) halen db de duracak s şeklinde.

Benim dediğimde silinen_id tablosunda silinen id leri tutacak.

silinen_id
1
5
25
69

Her neyse tartışmaya gerek yok arkadaş istediğini uygular :)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst