PHP Sınırsız Kategori Fonksiyon
PHP Sınırsız Kategori için 2 adet fonksiyonum var;
Birinci fonksiyon kategorileri hiyerarşik alt alta sıralıyor ve sorunsuz çalışıyor.
function KATEGORI_LISTELE_GENEL($Kategori_ID = 0){
GLOBAL $PDO_Connect;
$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_Ebeveyn = ?");
$PDO_Query -> execute([$Kategori_ID]);
$PDO_Query = $PDO_Query -> fetchAll(PDO::FETCH_OBJ);
foreach($PDO_Query as $PDO_Data){
echo $PDO_Data -> Kategori_ID." ";
echo $PDO_Data -> Kategori_Ad." ";
echo $PDO_Data -> Kategori_Ebeveyn."<br />";
KATEGORI_LISTELE_GENEL($PDO_Data -> Kategori_ID);
}
}
KATEGORI_LISTELE_GENEL();
ikinci fonksiyon herhangi bir kategoriyi hiyararşik sıralıyor ve sorunsuz çalışıyor
$Kategori_Dizi = array();
function KATEGORI_LISTELE_SIRALI($Kategori_ID){
GLOBAL $PDO_Connect, $Kategori_Dizi;
$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_ID = ?");
$PDO_Query -> execute([$Kategori_ID]);
$PDO_Query = $PDO_Query -> fetch(PDO::FETCH_OBJ);
$Kategori_Dizi[] = $PDO_Query -> Kategori_Ad;
if($PDO_Query -> Kategori_Ebeveyn > 0){
KATEGORI_LISTELE_SIRALI($PDO_Query -> Kategori_Ebeveyn);
}
return $Kategori_Dizi;
}
print_r(KATEGORI_LISTELE_SIRALI(2))
Şimdi sorunun olduğu kısım ilk fonskiyon içinde ikinci fonksiyonu kullanınca saçmalıyor. Sanki diziyi temizlemiyorda sürekli üzerine ekliyor gibi duruyor.
function KATEGORI_LISTELE_GENEL($Kategori_ID = 0){
GLOBAL $PDO_Connect;
$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_Ebeveyn = ?");
$PDO_Query -> execute([$Kategori_ID]);
$PDO_Query = $PDO_Query -> fetchAll(PDO::FETCH_OBJ);
foreach($PDO_Query as $PDO_Data){
echo $PDO_Data -> Kategori_ID." ";
print_r(KATEGORI_LISTELE_SIRALI($PDO_Data -> Kategori_ID))." ";
echo $PDO_Data -> Kategori_Ebeveyn."<br />";
KATEGORI_LISTELE_GENEL($PDO_Data -> Kategori_ID);
}
}
KATEGORI_LISTELE_GENEL();
belki işinize yarar şurada anlatmıştım https://www.ekimnet.com/php-ile-sinirsiz-kategori-nasil-yapilir