v2.5.2
Giriş yap

herşeyi siliyor

hasaneryilmaz
586 defa görüntülendi

class Name {


    public function delete($par=0)
    {
        $Namelistele=$this->prepare("SELECT * FROM name WHERE ustsayfa= ? ");
        $Namelistele->execute(array($par));
        foreach($Namelistele as $Namei)
        {
            $Namesil=$this->prepare("DELETE FROM name WHERE psira = ? ");
            $Namesil->execute(array($Namei["psira"]));
            $this->delete($Namei["psira"]);
        }
        $Namesill=$this->prepare("DELETE FROM name WHERE psira= ? ");
        $Namesill->execute(array($par));
        return true;
    }


}


bu fonksiyonu içine değer verip çalıştırdığımda tablodaki tüm kayıtları siliyor.
nedeni ne olabilir sizce?

Cevap yaz
Cevaplar (7)
isimimcokguzel2
1169 gün önce

Hocam şöyle olabilir.
Bir tane sütunu seçebilirsiniz eğer ustsira da onun id si geçen varsa daha sonra onu alabilirsiniz bunu bir döngüye dökebilirsiniz.

(Bir Örnek Oluşturup Atmaya Çalışacağım.)

hasaneryilmaz
1170 gün önce

aynı tabloda oldukları farklı bir tabloya bağlayamıyorum.


<?php
function katbull($par=0,$kategorri=0)
		{
			
			$kategorisiz = 0;
			
			$kategorilistele=$GLOBALS["baglan"]->prepare("SELECT * FROM kategoriler WHERE ustkatno= ? ");
			$kategorilistele->execute(array($par));
			
			foreach($kategorilistele as $kategorii)
			{
				
				$kategorisil=$GLOBALS["baglan"]->prepare("DELETE FROM kategoriler WHERE sira= ? ");
				$kategorisil->execute(array($kategorii["sira"]));
				
			
				katbull($kategorii["sira"],$kategorri);
				
			}
			$kategorisill=$GLOBALS["baglan"]->prepare("DELETE FROM kategoriler WHERE sira= ? ");
			$kategorisill->execute(array($par));
			
			
			return true;
		}
		
		
		
			
			
		
		if(katbull($sira))
		{
			?>
			<div class="alert alert-success">
				<strong>Başarıyla Silindi !</strong>Seçtiğiniz Başarıyla Silindi.... <br> Yönlendiriliyorsunuz... 
			</div>
			<script type="text/javascript">
			window.open("index.php?menu=kategoriler","_top");
			</script>
			<?php
			
			
		}
		?>


bu şekilde kullanınca sorun yok lakin class içine alınca çözemedim.

aydinkeskin
1170 gün önce

tabloları birbirine bağlayarak yaparsın
inner join ile yaparsın
foringkey ile olur

  1. tablo işlerimleri

if (işlemoldu)
2.tablo işlemleri
if 2. tablo işemi dolu

3.tablo işmleri



gibi yaparsın.
hasaneryilmaz
1170 gün önce

şimdi şöyle bir tablom var adı tablo_1 olsun bu taploda psira (int-primarykey) , title adlı bir varchar(50) , ustsayfa (int) var

tablo içerkleri şöyle

1 sayfa 0
2 sayfa2 0
3 sayfa1 1
4 sayfa2 3

gibi alt alta sayfalama olarak düşünebiliriz.

ben bir tane sayfayı silince fonksiyonun bu sayfanın alt sayfalarınıda silmesini istiyorum.

mesela psira sı 1 olan sayfa yı silince sisten ustsayfası 1e bağlı olan sayfaları da silsin buna bağlı olarak onun alt sayfalarınıda silsin
örnek sayfa silinince , sayfa1 ve sayfa2 de silinsin

yukardaki çıktı şöyle

-sayfa
--sayfa1
---sayfa2

-sayfa2

venloress
1170 gün önce

Öncelikle yapmak istediğini anlamadım. Sadece silmek gibi duruyor.
Yazdığın kodlar mantığa meydan okuyor resmen. Benim yazdığımı kullan hem daha az yer kaplar hemde daha basit bir kullanımı var.

class Name {
    public function delete(string $tableName, string $where,string $value): bool
    {
        $delete=$this->prepare("DELETE FROM $tableName WHERE $where ='$value'");
        $delete->execute();
        return $delete->rowCount();
    }
}

Kullanım:

require 'Dosya_Adı';

$name = new Name();
$name->delete('name','psira','1'); 

Yukarıdaki kullanım sadece siler. Bunun silinip silinmediğini kontrol edebilirsin.

Kontrollü:

require 'Dosya_Adı';

$name = new Name();
if ($name->delete('name','psira','1')): //Eğer silinirse devam et 
    $name->delete('name','psira','2'); //ve devamında bunu da sil
    echo 'silindiler';
endif;
hasaneryilmaz
1171 gün önce

-name
--name
--name
---name
----name (bunu silince sadece bunu silmek)
-name2
--name2 (bunu silince bu ve altındakileri silmek.)
---name2
----name2

venloress
1171 gün önce

yapmak istediğin nedir?