Treeview

Salam.
Məm treevievv deyilən bir forma qurmaq istiyirəm php və mysql ilə. bu əsasən drop-dovvn menyularda istifadə olunur ama mənə kateqoriya yaratmaq üçün lazımdır. sadə cədvələ id, name və parent id atributları var.
———————-
id|name|parentId|
———————-
1|Rock|NULL|
2|Alternative Rock|1
3|Metal|1
4|Classic|1
5|70s|4
6|90s|4
7|Jazz|NULL
8|Folk-Jazz|7
9|Opera-Jazz|7

bu tipli bir cədvəldəki yazıları php vasitəsi ilə kateqoriya şəklində əks etdirmək istiyirəm nested listlər vasitəsi ilə.
Məslən yuxaridakı cədvəl

-Rock
-Alternative
-Metal
-Classic
-70s
-90s
-Jazz
-Folk-Jazz
-Opera-Jazz
bunu necə etməyi məsləhət görərdiniz.bir növ forumlarda istifadə olunan düzülüşə bənziyir. SQLdə JOİNlər vasitəsi ilə etməyi bilirəm. ama mənə işin çox hissəsini php-nin görməyi lazımdır. sadə bir funksiya daxilində nested vvhile loop-u ilə, adi dəyişənlərlə.
bir neçə query-dən istifadə edərək də istədiyim nəticəni ala bilirəm. ama fikrimcə daha asan yolu olmalıdır. İstənilən yönləndirmə və köməyinizin faydası olar.Əvvəlcədn təşəkkür edirəm.


Yadda saxlama
Kateqoriya: Web skriptlər, kod həlləri . , , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (7 cavab var)

(19:23, 17/05/2011 ) #2524

Salam. Mən bu haqda bloqumda yazmışdım. İndi bloqa girmək mümkün olmasa da Google keşdə qalanları oxuya bilərsiniz.

http://pastebin.com/pPxLRgx7

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(06:48, 18/05/2011 ) #2526

çox sagolun. ama məncə istədiyim nəticəni vermir sizin postdaki skript. çünki siz parent olaraq parentİd-si sıfır olanları seçirsiniz. məndə isə parent id sıfırdan fərqli də ola bilir. yəni child kateqoriya həm də parent kateqoriya ola bilir. Classic həm child kateqoriyadır həm də 70s və 90s üçün parent kateqoriyadır. sizin skript 1ci dərəcəyə qədər enə bilir. Yəni menyu var alt menyu var məndə isə alt menyunun da altmenyusu var.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(07:31, 18/05/2011 ) #2527

array(massiv)-dən istifadə edib istədiyim nəticəni ala bilirəm əslində.eləcədə SQL-də JOİN-lər vastəsi ilə istədiyimi ala bilirə,php-dən minimum istifadə edib. massivdən istifadə etmədən nəticəni almaq istiyirəm. bu da deyəsən mümkün deyil. zəhmət olmasa bu yöndə məsləhət verin. sizcə arraysiz mümkündür kateqoriya qurmaq? normal dəyişəndən istifadə edib bir nəticə almaq olar?özüm də araşdırıram tapsam yazacam.çox sağolun.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:21, 18/05/2011 ) #2529

Bahruz, onda sizə məsləhət görərdim ki, WordPress Core-sində yerləşən wp_list_categories-in strukturunu araşdırasınız. O eynən siz deyən işi görür(məhdudiyyətsiz sayda alt pilləsi olan tree), hər halda wordpress-i quranlar əminəm ki ən optimal yoldan istifadə ediblər. Əgər tapacağınız o yol sizin üçün yeni olmayacaqsa, deməli hazırda bildiyiniz üsullar ən optimal variantdır.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(00:31, 28/06/2011 ) #2894

Salam, bu məsələni aşağıdakı rekursiya ilə həll etmək mümkündür:

function printFamilyTree($pId=0, $level=1)
{
	if ($pId==null)
	{
		$res = mysql_query('SELECT * FROM tbl_family WHERE p_id is null');
	}
	else
	{
		$res = mysql_query('SELECT * FROM tbl_family WHERE p_id='.$pId);
	}
	
	while ($row = mysql_fetch_assoc($res))
	{
		showHyphen($level);
		print ' '.$row['name'].'';
		printFamilyTree($row['id'], $level+4);
	}
	
	return ;
}

function showHyphen($count)
{
	for ($i=0; $i<$count; $i++)
	{
		print '-';
	}
}

* Qeyd edim ki, bu sadəcə bir nümunədir yaxşı olarki bu rekursiyanı DB serverde yazasınız və applicationdan həmin stored procedure -ni çağırasız.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:10, 08/07/2011 ) #3007

Kiməsə gələcəkdə lazım ola bilər, həlli yerləşdirirəm.
1ci üsul array (massiv)-dən istifadə etməklə, fikrimcə bu ən ugurlu seçimdir, sonsuz sayda və sonsuz dərinlikdə parent-child (kateqoriya-altkateqoriya) münasibəti yaratmaq olar.


<html>
<head>
<title>Simple Database Access</title>
</head>
<body>

<?php
  $hostName = "dbhostadi";
  $userName = "dbistifadeciadiniz";
  $password = "dbparolunuz";
  $databaseName = "categories";
  if (!($link=mysql_connect($hostName,$userName,$password))) {
 printf("Error!!!");
 exit();
 }
  if (!mysql_select_db($databaseName, $link)) {
 printf("Error!");
 exit();
 } 
?>

<?php
function ShowTree($ParentID) { 

//global $link; 
$sSQL="SELECT Id, name,parent_id FROM categories WHERE parent_id='$ParentID' ";
$result=mysql_query($sSQL);
$num=mysql_numrows($result);

$i=0;
if ($i<$num) {
echo"<ul>";
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["Id"];
echo "<li>";
echo"<a href='#'>".$row["name"]."</a>";
ShowTree($ID1); 
}
echo "</ul>";
}
$i++;
}

ShowTree(0); 

?>

</body>
</html>
Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:22, 08/07/2011 ) #3008

2ci üsul ne funksiyadan istifadə olunur nə də arraydən. birinicidən uzundu və kodun uzunluğu dərinliyə görə daha da uzanır.əlverişsiz olsa da kiməsə lazım ola bilər. məsələn mənə bu üsulla yazmaq lazım idi. aşağıdakı nümunədə 3cü dərəcəyə qədər dəriliyə gedir kod. yəni ana kateqoriya 1-dir, uşağı 2dir, 3isə 2nin usagıdır.

Simple Database Access

Bulletin Board

<?php
$i=0;
while ($i

<?php
$j=0;
echo "”;
echo “”;
echo ““.$subject.’ – ‘;
echo “
“;
echo ““.$author.”“;
echo ‘ ‘.$date;
echo “”;
while ($j

<?php
$k=0;
echo "”;
echo “”;

echo ““.$child_subject.’ – ‘;
echo “
“;
echo ““.$child_author.”“;
echo ‘ ‘.$child_date;
echo “”;

while ($k

<?php
echo "”;
echo “”;
echo ““.$grandchild_subject.’ – ‘;
echo “
“;
echo ““.$grandchild_author.”“;
echo ‘ ‘.$grandchild_date;
echo “”;
echo “”;
$k++;}
echo “”;
$j++;}
echo “”;
$i++;
}
mysql_close();
?>
[/code/

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Xif mn kodu (6 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (25 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (32 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (37 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (46 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (50 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (51 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (52 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (53 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (60 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (60 gün əvvəl)

Software Developer cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (60 gün əvvəl)

E. Hacı cavab verdi - Riyazi proqramlar üçün proqram (61 gün əvvəl)

Software Developer cavab verdi - Kursda xaricdə təhsil imkanı nece yaranır? (61 gün əvvəl)

darkpixel cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (61 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23287 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024