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

Software Developer cavab verdi - Qırılmış nömrə nə vaxt tam bağlanır (1 gün əvvəl)

Emil Imanov cavab verdi - Rus dilindən mətni tərcümə etmək (1 gün əvvəl)

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (3 gün əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (7 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (7 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (10 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (11 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (11 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (11 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (11 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (11 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (13 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (13 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (23 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (24 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 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ş 23237 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

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