Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php sinirsiz kategorileme konu ekleme

Ben bu şekilde sınırsız kategorileri listeletiyorum
Tablo yapım id ust_id kategori
http://c1109.hizliresim.com/11/9/8/5235.jpg
Bunu kategori ekleme silme düzenleme ve kategorilere konu ekleme tarzında geliştirmek istiyorum ama bu sorunu çözemedim
http://c1109.hizliresim.com/11/9/8/5228.jpg
Şu şekilde
$yaz = kategoriler($row['id']);;
echo'<option value='.$row["ust_id"].'>'.$yaz.'</option>';
Yaptiğim zaman şu sonuç oluyor id bağlı olanları çekiyor ama bu seferde nedensiz boşluklar çıkıyor
http://c1109.hizliresim.com/11/9/8/5445.jpg

Kodlarim
<?php ob_start();?>
<?php
include("baglan.php");
?>
<?php
if($_POST){


    $adi       =$_POST["adi"];
    $ozet      =$_POST["ozet"];
    $metin     =$_POST["metin"];
    $katID     =$_POST["kategori"];


        if(empty($adi)|| empty($ozet) || empty($metin)){
            echo"<font color='red'>Lütfen boş alan bırakmayınız<font>";
        }else{


            $ekle =mysql_query("insert into makale (adi,ozet,metin,kategori_id)values('$adi','$ozet','$metin','$katID')");
            if($ekle){
            echo"<font color='green'>Makale Eklendi</font>";
            header("Refresh:1; url=index.php");


            }else{
            echo"<font color='red'>Makale Eklenemedi</font>";
            header("Refresh:1; url=Konu_Ekle.php");
            }
        }




}else{


?>
<h1>Makale Ekle</h1>
<form action="" method="POST">
<table cellpadding="5" cellspacing="0">
    <tr>
        <td>Makale adı:</td>
        <td><input type="text" name="adi"></td>
    </tr>
    <tr>
        <td>Makale özet</td>
        <td><input type="text" name="ozet"></td>
    </tr>
    <tr>
        <td>Makale metin</td>
        <td><input type="text" name="metin"></td>
    </tr>
    <tr>
        <td>Kategori</td>
        <td>
        <select name="kategori">
        <?php
            //Kategori bul
        Function kategoriler($id=0){


            $sql ="select * from kategori where ust_id='$id'";
            $query =mysql_query($sql) or die (mysql_error());
                while($row =mysql_fetch_array($query)){
                extract($row);


                echo"<option value='{$ust_id}'># {$kategori}</option>";
                echo"<option value='{$ust_id}'>kategoriler({$id});</option>";


                }


            }
                    kategoriler(0);


        ?>
        </select>
        </td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="Kaydet"></td>
    </tr>
</table>
</form>
<?php } ?>
<?php ob_end_flush(); ?>


Basit ama içinden çıkamadığım bir problemim var.Ana kategorileri böyle listeletiyorum sorunsuz

echo"<option value='{$ust_id}'>{$kategori}</option>";Alt kategorileri listelettiğim yer kategoriler fonksiyonunu işler biçimde echo nun içinde çağıramıyorum komik bir durum ama beceremedim bir türlü :S kategoriler({$id}); fonksiyon olarak çalışmıyor

echo"<option value='{$ust_id}'>kategoriler({$id});</option>";
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • tapsin adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    147 cevap - 0 soru
    echo"<option value='{$ust_id}'>kategoriler({$id});</option>";

    Bu kısmı yapabilmek için ayrı bir döngü oluşturabilirsin en mantıklısı bu şuan ki yapına göre.
    • b4d3k35 adlı üyenin fotoğrafı b4d3k35
      su an beynim durmus durumda
      dediginiz gibi yapmaya calistim ama bir sonuc almadim
      ornek br kodlama yapabilirmisiniz acaba rica etsem

      ya sinirsiz kategorilemeyi baska nasil yapabilirim cok arastirdim herkez farkli yollardan yapmis ama genellikle cok uzun yontemler ve gereksiz sorgular var
      12 yıl önce yazılmış
  • xuma adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    171 cevap - 1 soru
    Basit bir fonksiyon kullanman yeterli.Mantığı örnekten çıkarabilirsin.Sorgu sayısı fazla görünebilir ancak cachelersen sorun çıkmaz.
    function kategoriler(){
    		global  $db;
    		$sorgu=$db->query("select * from kategori where ust_id='0'")->fetchAll(PDO::FETCH_OBJ);
    		foreach($sorgu as $s){
    			$option.="<option value='$s->id'>$s->kategori</option>\n";
    			$option.=kategoriler($s->id);
    		}
    		return $option;
    	}
    	echo kategoriler();
    
    • b4d3k35 adlı üyenin fotoğrafı b4d3k35
      Malesef bir sonuca ulaşamadım.
      Yapamadım
      Cevapın için teşekkür ederim
      Php yeni başlamış biri için sınırsız kategori biraz kastı gibi.
      Normal Kategori ve Altkategorilemeyle idare edicem gibi.
      12 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      Burada PDO kullandım sen kendine göre mysql sorgularını yazman gerek.Bunun yanında aşağıdaki gibi bir opsiyon ekleyerek sadece belirlediğin kategorileri çekebilirsin.Geliştirmek istersen sort işlemlerine de girmek gerek.
      function kategoriler($id){
      	$sorgu=$db->prepare("select * from kategori where ust_id=?");
      	$sorgu->execute(array($id));
      	$sonuc=$sorgu->fetchAll(PDO::FETCH_OBJ);
      	foreach($sonuc as s){
      		$option.="<option value='$s->id'>$s->kategori</option>\n";
      		$option.=kategoriler($s->id); 
      	}
      	return $option;
      }
      echo "<select name='kategori'>";
      	echo kategoriler(10);
      echo "</select>";
      
      12 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      Fonksiyon başlangıcında global $db eklenmeli.
      12 yıl önce yazılmış
    • b4d3k35 adlı üyenin fotoğrafı b4d3k35
      Hocam zaman ayırıp cevap verdiğin için çok teşekkür ederim.
      PDO kodlarını sql sorguya dönüştürdüm sonuc değişkenine sql sorgumu fetch_array la atadım
      Db global olarak çağırdım ama yinede olumlu sonuç alamadım

      kategoriler(10); burada sonsuz döngü gibi bir hata verdi

      En son haliyle şu şekile getirebildim
      http://c1109.hizliresim.com/11/9/9/21028.jpg
      http://c1109.hizliresim.com/11/9/9/21033.jpg
              <?php
                  //Kategori bul
      function kategoriler($id){
      
      	$sql =mysql_query("select * from kategori where ust_id='$id'");
      
          while($goster =mysql_fetch_array($sql)){
      	extract ($goster);
             echo "<option value=''>{$kategori}</option>";
      
             kategoriler($id); 
      
          }
      
      
      }
      
        kategoriler(0);
      
      
         
              ?>
      
      12 yıl önce yazılmış