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();
3 fonskyion yazmalısın
iç içe kullanmalısın
sorgu vs yazan yere kendi PDO sorgularını yaz;
function kat1($katAdi,$KatID){
///$sorgu = "where KatID='$KatID' vs...";
foreach($PDO_Query as $PDO_Data){
$yeniKat = $katAdi."/".$PDO_Query -> Kategori_Ad;
echo $yeniKat."<br>";
kat2($yeniKat,$PDO_Query->katID)
}
}
function kat2($katAdi,$KatID){
///$sorgu = "where KatID='$KatID' vs...";
foreach($PDO_Query as $PDO_Data){
$yeniKat = $katAdi."/".$PDO_Query -> Kategori_Ad;
echo $yeniKat."<br>";
kat1($yeniKat,$PDO_Query->katID)
}
}
function kat(){
///$sorgu = "where KatID='0' vs...";
foreach($PDO_Query as $PDO_Data){
echo $katAdi."<br>";
kat1($katAdi,$PDO_Query->katID)
}
}