Tekil Mesaj gösterimi
Alt 06 Mart 2007, 00:09   #1
Çevrimdışı
MooNBeaM
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Sınırsız Kategoriler Ekle Güncelle ve Sil




Öncelikle Database tablomuzu oluşturuyoruz.

PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
-- 
-- 
Tablo yapısı: `s_kategoriler
-- 

CREATE TABLE `s_kategoriler` ( 
  `
kategori_idint(11NOT NULL auto_increment
  `
kategori_adivarchar(255) default NULL
  `
altkategori_idint(11) default NULL
  
PRIMARY KEY  (`kategori_id`) 
ENGINE=MyISAM  DEFAULT CHARSET=latin5 AUTO_INCREMENT=110 

-- 
-- 
Tablo döküm verisi `s_kategoriler
-- 

INSERT INTO `s_kategorilerVALUES (109'BB1'108); 
INSERT INTO `s_kategorilerVALUES (102'A'0); 
INSERT INTO `s_kategorilerVALUES (103'B'0); 
INSERT INTO `s_kategorilerVALUES (104'C'0); 
INSERT INTO `s_kategorilerVALUES (105'D'0); 
INSERT INTO `s_kategorilerVALUES (106'A1'102); 
INSERT INTO `s_kategorilerVALUES (107'AA1'106); 
INSERT INTO `s_kategorilerVALUES (108'B1'103); 

Tablomuz üç alandan oluşuyor. kategori_id, kategori_adi, altkategori_id

Ben örnek olsun diye bir kaç kategori verisi oluşturdum. Sizlerde bunları çogaltabilir ve ya istediğinizi yapabilirsiniz.

Bu script denenmiştir. Sorunsuzca çalışmaktadır.
MYSQL 5 yukarısı kullanıyorum. Umarım MYSQL 4 lerde sorun vermez.

Şimdide sıra geldi bu tablomuza veri girme, güncelleme ve silme işlemine

Aşağıdaki kodları kategoriler.php diye kaydediniz.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB"><?php 
   
// 
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #007700">@
mysql_connect('localhost','root','123456'); 
   @
mysql_select_db('zedatriko'); 
     
     
   
//Sınırsız Kategori Listeleme Fonksiyonudur. 
   
function kategorilerilistele($altkategori_id,$level//completely expand category tree 
   
{     
   
$q mysql_query("SELECT kategori_id, kategori_adi, altkategori_id FROM s_kategoriler WHERE kategori_id<>0 and altkategori_id=$altkategori_id ORDER BY kategori_adi") or die (mysql_error()); 
   
$a = array(); //altkategori_id'ler 
   
while ($row mysql_fetch_row($q)) 
   { 
   
$row[5] = $level
   
$a[] = $row
   
//Altkategori işlemleri 
   
$b kategorilerilistele($row[0],$level+1); 
   
//Ekle $b[] Sonuna $a[] 
   
for ($j=0$j<count($b); $j++) 
   { 
   
$a[] = $b[$j]; 
   } 
   } 
   return 
$a
     
   } 
//kategorilerilistele 
     
     
   //kategorileri Düzenli şekilde Silmek 
   
function kategorivealtkategorilerisil($altkategori_id//Kategorinin Tüm Alt Kategorilerini Siler kategori_id=$altkategori_id 
   

      
//Alt Kategoriler 
      
$q mysql_query("SELECT kategori_id FROM s_kategoriler WHERE altkategori_id=$altkategori_id and kategori_id<>0") or die (mysql_error()); 
      while (
$row mysql_fetch_row($q)) 
      { 
         
kategorivealtkategorilerisil($row[0]); //tekrarlı döngü 
      

      
$q mysql_query("DELETE FROM s_kategoriler WHERE altkategori_id=$altkategori_id and kategori_id<>0") or die (mysql_error()); 
        
      
//Root Kategori ile birlikte Ürünlerdeki kategorileri de düzenler 
      
$q mysql_query("UPDATE urunler SET kategori_id=0 WHERE kategori_id=$altkategori_id") or die (mysql_error()); 
   } 
     
     
   @ 
$s_kategorilerislem      strip_tags(trim($_GET['s_kategorilerislem'])); 
     
   if (!
$s_kategorilerislem
   { 
   @ 
$ekle                  intval($_GET['ekle']); 
   if (empty(
$ekle)) 
   {     
   @ 
$kategori_id            intval($_GET['kategori_id']); 
   
$altkategori_id            ''
     
   if (empty(
$kategori_id)) { 
   
$bbaslik               "ÜRÜN KATEGORİSİ EKLE"
   
$buton                  "KAYDET"
   } else { 
   
$bbaslik               "ÜRÜN KATEGORİSİNİ DÜZENLE"
   
$buton                  "DEGİŞTİR"
     
   
//kategoriler DUZENLE 
   
$kategoriler_duzenleme_sql  "SELECT * FROM s_kategoriler WHERE kategori_id='$kategori_id'"
   
$kategoriler_duzenleme_sonucmysql_query($kategoriler_duzenleme_sql) or die ("Hata: kategoriler Görülemedi"); 
   
$kategoriler_duzen_izin      mysql_num_rows($kategoriler_duzenleme_sonuc); 
   
$kategoriler_ayrinti      mysql_fetch_array($kategoriler_duzenleme_sonuc); 
   
$kategori_id            $kategoriler_ayrinti["kategori_id"]; 
   
$kategori_adi            $kategoriler_ayrinti["kategori_adi"]; 
   
$altkategori_id            $kategoriler_ayrinti["altkategori_id"]; 
     
   if (!
get_magic_quotes_gpc()) 
   { 
   
$kategori_adi               stripslashes($kategori_adi); 
   } 
   
mysql_free_result($kategoriler_duzenleme_sonuc); 
   } 
     
   
?> 
   <table id=AutoNumber1 style="border-collapse: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="50%" border="0" align="center">     
   <tr> 
   <td width="100%" align="center"> 
   <fieldset> 
   <legend>&nbsp;<b>Kategori Ekleyin, Düzenleyin ve Silin</b>&nbsp;</legend> 
   <table width="100%" align="center">     
   <form action="?sayfa=kategoriekle&ekle=1" method="post"> 
  <input type="hidden" name="kategori_id" value="<?php echo trim($kategori_id);?>" /> 
   <td width="50%" bgcolor=#f0f8ff align="center" class="baslik">Root Ana kategoridir. Diğer kategorilere alt kategoriler eklemek için Root altındaki kategorilerden birisini seçip veri girişinden kategori yazıp kaydet demeniz yeterlidir.</td> 
   </tr> 
   <tr> 
   <td width="50%" bgcolor=#f0f8ff align="center" class="altkategori">Kategori Listesi : 
   <select name="altkategori_id"> 
   <option value="0">Root</option> 
   <?php 
   
//kategorileri listele combobox 
   
$tmp = isset($_GET["w"]) ? $_GET["w"] : $_POST["altkategori_id"]; 
   
$cats kategorilerilistele(0,0); 
   for (
$i=0$i<count($cats); $i++) 
   { 
   echo 
"<option value=\"".$cats[$i][0]."\""
   if (
$tmp == $cats[$i][0]) //select kategori 
   
echo " selected"
   echo 
">"
   for (
$j=0;$j<$cats[$i][5];$j++) echo "&nbsp;&nbsp;"
   echo 
$cats[$i][1]; 
   echo 
"</option>"
   } 
   
?> 
   </select> 
   </td> 
   </tr> 
   <tr> 
   <td width="50%" bgcolor=#f0f8ff align="center" class="altkategori">Veri Girişi : 
   <input size="40" name="kategori_adi" value="<?php echo $kategori_adi?>"></td> 
   </tr> 
   <tr> 
   <td width="50%" bgcolor=#f0f8ff align="center" class="altkategori"> 
   <input type="submit" name="ekle" value="<?php echo $buton?>"></td> 
   </tr>     
   </table> 
   </fieldset>     
   </form> 
   </table> 
        
   <?php     
   
unset($kategoriler_ayrinti);     
     
   } elseif (
$ekle == 1) {     
   
$kategori_id         abs(intval($_POST['kategori_id'])); 
   
$kategori_adi         trim(strip_tags(htmlspecialchars($_POST['kategori_adi']))); 
     
   if (!
$kategori_adi
   { 
      echo 
'<script>alert("İşaretli Alanlar Zorunludur.");history.go(-1)</script>'
      exit; 
   } 

   if (!
get_magic_quotes_gpc()) 
   {     
   
$kategori_adi         addslashes($kategori_adi); 
   
$altkategori_id         addslashes($altkategori_id);     
   } 
   if (empty(
$kategori_id)) 
   {     
   
$q mysql_query("INSERT INTO s_kategoriler (kategori_adi, altkategori_id) VALUES ('$kategori_adi', '$altkategori_id')") or die (mysql_error()); 
   
$pid mysql_insert_id(); 
   echo 
'<script>alert("Kategori Başarıyla Eklendi.");location.href=\'?sayfa=kategoriekle\';</script>'
        
   } else { 
           
   
$s_kategoriler_duzelt   "UPDATE s_kategoriler SET kategori_adi = '$kategori_adi' WHERE kategori_id = $kategori_id"
   
mysql_query($s_kategoriler_duzelt) or die (mysql_error()); 
   echo 
'<script>alert("Kategori Başarıyla Düzeltildi.");location.href=\'?sayfa=kategoriekle\';</script>'
   }     
   } else { 
   echo 
'<script>alert("İzin Yok");location.href=\'?sayfa=kategoriekle\';</script>';      
   }     
   
/* ============================================== */ 
   /* KATEGORİ SİLME İŞLEMLERİ                     */ 
   /* ============================================== */ 
   /* KATEGORİ İSLEMLERİ */ 
   
} elseif ($s_kategorilerislem == 1) { 
     
     
     
   @ 
$kategorisil            $_POST['kategorisil']; 
   @ 
$formbilgi            $_POST
     
   if (
$kategorisil
   { 
   
//SİLME İŞLEMLERİ (BUNUNLA İLĞİLİ FONKSİYON "baglar/fonk.inc.php" İÇİNDEDİR. (deleteSubCategories) 
   
foreach ( $formbilgi as $anahtar=>$deger 
   { 
   if ( 
gettype ($deger ) != "array" 
   { 
   if (
$anahtar == "kategori_$deger"
   { 
      
$kategorileri_sil      mysql_query("DELETE FROM s_kategoriler WHERE kategori_id=$deger"); 
      
//Kategori siliniyor ve buna baglı alt kategoriler varsa onlarda siliniyor. 
      
kategorivealtkategorilerisil($deger); 
     
   } 
   } 
   } 
     
   echo 
'<script>alert("Kategori veya kategoriler başarıyla silindi.");location.href=\'?sayfa=kategoriekle\';</script>';     
   } 
   } 
   
?> 
   <table id=AutoNumber1 style="border-collapse: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="50%" border="0" align="center"> 
   <tbody> 
   <tr> 
   <td width="100%"> 
   <fieldset> 
   <legend>&nbsp;<b><?php echo $dil['kategoriguncellesil']; ?></b>&nbsp;</legend> 
   <table width="100%" align="center">     
   <form action="?sayfa=kategoriekle&s_kategorilerislem=1" method="post" name="formbilgi"> 
   <input type="hidden" name="kategori_id" value="<?php echo trim($kategori_id);?>" /> 
   <?php 
   $toplam                
mysql_query("SELECT COUNT(*) FROM s_kategoriler"); 
   list(
$toplam_kategoriler)   = mysql_fetch_row($toplam); 
   
mysql_free_result($toplam); 
     
   echo 

   <tr> 
   <td width=100% colspan="8" align="center" bgcolor="#f0f8ff"> 
   </td> 
   </tr> 
   <tr> 
   <td width=100% colspan="6" align="left" bgcolor="#f0f8ff">'
;         
   echo 
'&nbsp;&nbsp;<font color="#FF0000">&nbsp;&nbsp;Seçilileri : </font> 
   <input type="submit" value="Sil" name="kategorisil" onclick="return islemler(\'Silinecek Eminmisin\')">&nbsp;&nbsp;Toplam Kategori ve Alt Kategori Sayısı : <b>'
.$toplam_kategoriler.'</b> 
   <tr bgColor="#4faafa"> 
   <td width="5%" align="left"> 
   <input type="checkbox" onclick="this.value=sec(this.form.onaykutusu)"></td> 
   <td width="90%" align="left"><b>Kategori Adı</b></td> 
   </tr>'

   
#Kategorileri Listele 
   
Listele(0,""); 
   
# Özyinelemeli listele fonksiyonu 
   # ---------------------------------------------------------------------------------------- 
   
function Listele($kategori_id,$derinlik){ 
   
# Sorgu cümlesi 
   
$cumle "select *, find_in_set(".$kategori_id.",altkategori_id) as seviye from s_kategoriler having seviye = 1"
   
$sorgu mysql_query($cumle);     
     
   
# Kayıtları bas 
   
while($sonuc            mysql_fetch_array($sorgu)){     
   
$kategori_adi            $sonuc["kategori_adi"]; 
   
$kategori_id            $sonuc["kategori_id"]; 
        
   
# Kategorı bilgilerini bas, Alt kategorileri (varsa) bas     
   
echo 
   <tr bgColor="#cae3f9"> 
   <td width="10%" align="left"><input type="checkbox" id="onaykutusu" name="kategori_'
.$kategori_id.'" value="'.$kategori_id.'" class="onaykutusu"></td>           
   <td width="20%" align="left">'
.$derinlik.'<a href="?sayfa=kategoriekle&kategori_id='.$kategori_id.'">'.$kategori_adi.'</td>     
   </tr>'

   
Listele($kategori_id,$derinlik."&nbsp;&nbsp;&nbsp;&nbsp;"); 
   } 
   return; 
   } 
   echo 

   <tr> 
   <td colspan="3" width="100%" bgcolor="#f0f8ff" align="left"> 
   &nbsp;&nbsp;<font color="#FF0000">&nbsp;&nbsp;Seçilileri : </font> 
   <input type="submit" value="Sil" name="kategorisil" onclick="return islemler(\'Silinecek Eminmisin\')"></td> 
   </tr>'
;     
   
?> 
   </form> 
   </table> 
   </fieldset> 
   </td> 
   </tbody> 
   </tr> 
   </table> 
   </body> 
   </html>

Listeli olan kategorilerden herhangi birisini tıkladıgınızda veri girişinde o kategorinin adı görünecektir. Oradan kategorinin adını güncelleyebilirsiniz.

ugurturan;

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet