Convex | 06 Mart 2007 00:09 | Sınırsız Kategoriler Ekle Güncelle ve Sil Öncelikle Database tablomuzu oluşturuyoruz. PHP- Kodu: -- -- Tablo yapısı: `s_kategoriler` --
CREATE TABLE `s_kategoriler` ( `kategori_id` int(11) NOT NULL auto_increment, `kategori_adi` varchar(255) default NULL, `altkategori_id` int(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_kategoriler` VALUES (109, 'BB1', 108); INSERT INTO `s_kategoriler` VALUES (102, 'A', 0); INSERT INTO `s_kategoriler` VALUES (103, 'B', 0); INSERT INTO `s_kategoriler` VALUES (104, 'C', 0); INSERT INTO `s_kategoriler` VALUES (105, 'D', 0); INSERT INTO `s_kategoriler` VALUES (106, 'A1', 102); INSERT INTO `s_kategoriler` VALUES (107, 'AA1', 106); INSERT INTO `s_kategoriler` VALUES (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- Kodu:
<!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_sonuc= mysql_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> <b>Kategori Ekleyin, Düzenleyin ve Silin</b> </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 " "; 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> <b><?php echo $dil['kategoriguncellesil']; ?></b> </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 ' <font color="#FF0000"> Seçilileri : </font> <input type="submit" value="Sil" name="kategorisil" onclick="return islemler(\'Silinecek Eminmisin\')"> 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." "); } return; } echo ' <tr> <td colspan="3" width="100%" bgcolor="#f0f8ff" align="left"> <font color="#FF0000"> 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; |