Εμφάνιση στοιχείων πίνακα σε δενδροειδή μορφή!

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
nikos()
Δημοσιεύσεις: 10
Εγγραφή: 15 Δεκ 2005 11:46
Τοποθεσία: underground

Εμφάνιση στοιχείων πίνακα σε δενδροειδή μορφή!

Δημοσίευση από nikos() » 27 Μαρ 2009 20:22

Γεια σε όλους!
Θα' θελα να εμφανίσω στην εργασία μου τα περιεχομενα ενος πίνακα αλλά να μπορει ο χρηστης να κανει <expand> σε καθε στοιχείο οταν αυτό είναι parent.Με λιγα λόγια αν ο πίνακας mysql είναι αυτος:

[table]
[mrow]id
[mcol]parent id
[row]subsystem 1
[col]NULL
[row]subsystem 2
[col]NULL
[row]subsystem 3
[col]NULL
[row]subsystem 1.1
[col]subsystem 1
[row]subsystem 1.2
[col]subsystem 1
[row]subsystem 1.3
[col]subsystem 1
[row]subsystem 1.2.1
[col]subsystem 1.2
[row]subsystem 1.2.2
[col]subsystem 1.2
[row]subsystem 1.2.3
[col]subsystem 1.2
[/table]

να εμφανιζει στην σελιδα μου:
  • subsystem 1 expand
    subsystem 2
    subsystem 3
και πατώντας το expand:
  • subsystem 1 back
    * subsystem 1.1
    * subsystem 1.2 expand
    * subsystem 1.3
    subsystem 2
    subsystem 3

μπορειτε να μου πειτε καμμια ιδεα γιατι εχω φαει φρικη;
να χρησιμοποιησω και ajax? (η σελιδα ειναι σε php)

Ευχαριστώ!
Peace bro...


Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Εμφάνιση στοιχείων πίνακα σε δενδροειδή μορφή!

Δημοσίευση από korgr » 31 Μαρ 2009 15:25

nikos() έγραψε:

μπορειτε να μου πειτε καμμια ιδεα γιατι εχω φαει φρικη;
να χρησιμοποιησω και ajax? (η σελιδα ειναι σε php)

Ευχαριστώ!
Φιλε μου αυτη ειναι η τροποποιημενη δενδροειδης μορφη προσαρμοσμενη στο table σου:

Κώδικας: Επιλογή όλων

<?
// βάλε τα στοιχεία της βάσης σου εδώ
$DBUser = "";
$DBPass = "";
$DBName = "";
$DBHost = "localhost";

$DBLink= mysql_connect&#40;$DBHost, $DBUser, $DBPass&#41;;
mysql_select_db&#40;$DBName&#41;;


function showtree&#40;$parent, $level&#41; &#123;
   $result = mysql_query&#40;"SELECT id, name, parent_id FROM subsystems WHERE parent_id='$parent'"&#41;;
   while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
   		if&#40;isparent&#40;$row&#91;id&#93;&#41;&#41;&#123;
		echo&#40;str_repeat&#40;'&nbsp;',$level*6&#41;&#41;;
		echo&#40;'<a href="#" class="parent" onMouseDown="showhidetabs&#40;\'cat'.$row&#91;id&#93;.'\','.$row&#91;id&#93;.'&#41;;this.blur&#40;&#41;;return false;"><img src="plus.gif" id="img'.$row&#91;id&#93;.'" border="0" valign="bottom" hspace="3">'&#41;;
		echo&#40;$row&#91;name&#93;.'</a><br>'&#41;;
		echo&#40;'<span style="display&#58;none" id=cat'.$row&#91;id&#93;.' >'&#41;;
		$opentag=true;
	  	&#125;else&#123;
	   echo&#40;str_repeat&#40;'&nbsp;',$level*6&#41;.'<a href="#" class="normal" onClick="alert&#40;\'Αυτό το link θα παρουσιάζει '.$row&#91;name&#93;.'\'&#41;;this.blur&#40;&#41;;return false;">'.$row&#91;name&#93;.'</a><br>'&#41;; 
	   &#125;  
       showtree&#40;$row&#91;id&#93;, $level+1&#41;;
	   if&#40;$opentag&#41;&#123;
	   $opentag=false;
       echo&#40;'</span>'&#41;;
	   &#125;
   &#125;
&#125;


function isparent&#40;$cid&#41;&#123;
   $res = mysql_query&#40;"SELECT id FROM subsystems WHERE parent_id='$cid' LIMIT 1"&#41;;
   return mysql_num_rows&#40;$res&#41;;
&#125;

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Διαχείριση πολυεπίπεδων κατηγοριών προϊόντων</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language='JavaScript' type='text/JavaScript'>
<!--
function showhidetabs&#40;elm, id&#41;&#123;
    var theimg='img'+id;
		if &#40; document.getElementById&#40;elm&#41;.style.display == 'none' &#41;&#123;
			document.getElementById&#40;elm&#41;.style.display = 'inline';
			if &#40;document.getElementById&#40;theimg&#41;&#41;&#123;document.getElementById&#40;theimg&#41;.src='minus.gif';&#125;
		&#125;else&#123;
			document.getElementById&#40;elm&#41;.style.display = 'none';
			if &#40;document.getElementById&#40;theimg&#41;&#41;&#123;document.getElementById&#40;theimg&#41;.src='plus.gif';&#125;
		&#125;	
&#125;

//-->
</script>

<STYLE type=text/css rel="stylesheet">  
.normal &#123;
	font-family&#58; Verdana, Arial, Helvetica, sans-serif;
	font-size&#58; 11px;
	color&#58; #000000;
	font-weight&#58; normal;
&#125;


.parent &#123;
	color&#58; #006699;
	font-weight&#58; bold;

&#125;

</STYLE>
</head>
<body style="margin&#58;30px;" class="normal">
	<strong>Εμφάνιση δενδροειδής&#58;</strong><br><br>
	<? showtree&#40;0,0&#41;; ?>
</body>
</html>



nikos()
Δημοσιεύσεις: 10
Εγγραφή: 15 Δεκ 2005 11:46
Τοποθεσία: underground

Εμφάνιση στοιχείων πίνακα σε δενδροειδή μορφή!

Δημοσίευση από nikos() » 02 Απρ 2009 21:22

Ευχαριστώ!

Όλα καλά.Δουλευει μια χαρα αλλα μόνο όταν το πεδίο id ειναι αριθμός.
Όταν οι τιμες του id ειναι συμβολοσειρές (για παραδειγμα id=subsystem2.1) δεν εμφανίζει τίποτα παρόλο που η κατηγορία του γινεται link...! To δοκίμασα κ με μικροτερες συμβολοσειρές μηπως φταιει το μεγεθος της συμβολοσειράς (δηλ id=sub2.1) κ παλι τζίφος...
Γιατί συμβαίνει αυτό;;
Peace bro...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Εμφάνιση στοιχείων πίνακα σε δενδροειδή μορφή!

Δημοσίευση από korgr » 03 Απρ 2009 00:02

Αν και δεν καταλαβαινω γιατι τα id πρεπει να ειναι συμβολοσειρες, παρε και την λυση αυτη.
Πρεπει να εχεις αναλογο τυπο field και στο ιd και στο parent_id

Κώδικας: Επιλογή όλων

<?
// βάλε τα στοιχεία της βάσης σου εδώ
$DBUser = "korgr";
$DBPass = "!nkebag!";
$DBName = "test";
$DBHost = "localhost";

$DBLink= mysql_connect&#40;$DBHost, $DBUser, $DBPass&#41;;
mysql_select_db&#40;$DBName&#41;;


function showtree&#40;$parent, $level&#41; &#123;
   $result = mysql_query&#40;"SELECT id, name, parent_id FROM subsystems WHERE parent_id='$parent'"&#41;;
   while &#40;$row = mysql_fetch_array&#40;$result&#41;&#41; &#123;
   		if&#40;isparent&#40;$row&#91;id&#93;&#41;&#41;&#123;
		echo&#40;str_repeat&#40;'&nbsp;',$level*6&#41;&#41;;
		echo&#40;'<a href="javascript&#58;void&#40;0&#41;" class="parent" onMouseDown="showhidetabs&#40;\'cat'.$row&#91;id&#93;.'\',\''.$row&#91;id&#93;.'\'&#41;;this.blur&#40;&#41;;return false;"><img src="plus.gif" id="img'.$row&#91;id&#93;.'" border="0" valign="bottom" hspace="3">'&#41;;
		echo&#40;$row&#91;name&#93;.'</a><br>'&#41;;
		echo&#40;'<span style="display&#58;none" id=cat'.$row&#91;id&#93;.' >'&#41;;
		$opentag=true;
	  	&#125;else&#123;
	   echo&#40;str_repeat&#40;'&nbsp;',$level*6&#41;.'<a href="javascript&#58;void&#40;0&#41;" class="normal" onClick="alert&#40;\'Αυτό το link θα παρουσιάζει '.$row&#91;name&#93;.'\'&#41;;this.blur&#40;&#41;;return false;">'.$row&#91;name&#93;.'</a><br>'&#41;; 
	   &#125;  
       showtree&#40;$row&#91;id&#93;, $level+1&#41;;
	   if&#40;$opentag&#41;&#123;
	   $opentag=false;
       echo&#40;'</span>'&#41;;
	   &#125;
   &#125;
&#125;


function isparent&#40;$cid&#41;&#123;
   $res = mysql_query&#40;"SELECT id FROM subsystems WHERE parent_id='$cid' LIMIT 1"&#41;;
   return mysql_num_rows&#40;$res&#41;;
&#125;

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Διαχείριση πολυεπίπεδων κατηγοριών προϊόντων</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language='JavaScript' type='text/JavaScript'>
<!--
function showhidetabs&#40;elm, id&#41;&#123;
    var theimg='img'+id;
		if &#40; document.getElementById&#40;elm&#41;.style.display == 'none' &#41;&#123;
			document.getElementById&#40;elm&#41;.style.display = 'inline';
			if &#40;document.getElementById&#40;theimg&#41;&#41;&#123;document.getElementById&#40;theimg&#41;.src='minus.gif';&#125;
		&#125;else&#123;
			document.getElementById&#40;elm&#41;.style.display = 'none';
			if &#40;document.getElementById&#40;theimg&#41;&#41;&#123;document.getElementById&#40;theimg&#41;.src='plus.gif';&#125;
		&#125;	
&#125;

//-->
</script>

<STYLE type=text/css rel="stylesheet">  
.normal &#123;
	font-family&#58; Verdana, Arial, Helvetica, sans-serif;
	font-size&#58; 11px;
	color&#58; #000000;
	font-weight&#58; normal;
&#125;


.parent &#123;
	color&#58; #006699;
	font-weight&#58; bold;

&#125;

</STYLE>
</head>
<body style="margin&#58;30px;" class="normal">
	<strong>Εμφάνιση δενδροειδής&#58;</strong><br><br>
	<? showtree&#40;0,0&#41;; ?>
</body>
</html>


Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες