Ö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_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 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_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;