Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Numara atamak

404

0
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
124
Açılan Konu
18
Tepki puanı
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
 

...::LorD::...

0
Onaylı Üye
Üye
Katılım
27 Aralık 2007
Mesajlar
2,109
Açılan Konu
124
Tepki puanı
2
Konum
cHeteM
geçenlerde benimde aklıma gelmişti ama unuttum iyi ki yazdın öğrenmiş oluruz
 

404

0
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
124
Açılan Konu
18
Tepki puanı
0
en sonunda silinen id leri farklı bir tabloya kaydederek yapacağım inserti :)
 

muratmoon

0
Onaylı Üye
Üye
Katılım
5 Eylül 2008
Mesajlar
194
Açılan Konu
11
Tepki puanı
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
Onaylı Üye
Üye
Katılım
12 Haziran 2006
Mesajlar
124
Açılan Konu
18
Tepki puanı
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
Onaylı Üye
Üye
Katılım
12 Mayıs 2007
Mesajlar
3,749
Açılan Konu
428
Tepki puanı
61
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
Onaylı Üye
Üye
Katılım
9 Temmuz 2005
Mesajlar
200
Açılan Konu
1
Tepki puanı
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
Onaylı Üye
Üye
Katılım
12 Mayıs 2007
Mesajlar
3,749
Açılan Konu
428
Tepki puanı
61
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
Onaylı Üye
Üye
Katılım
9 Temmuz 2005
Mesajlar
200
Açılan Konu
1
Tepki puanı
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
Onaylı Üye
Üye
Katılım
12 Mayıs 2007
Mesajlar
3,749
Açılan Konu
428
Tepki puanı
61
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
Onaylı Üye
Üye
Katılım
9 Temmuz 2005
Mesajlar
200
Açılan Konu
1
Tepki puanı
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 :)
 
Üst