 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
gabyrusu
Data înscrierii: 11/Iun/2006
Mesaje: 33
Locație: Brasov
|
| Trimis: Mar Apr 22, 2008 9:53 am Titlul subiectului: functie recursiva |
|
|
salut, ma poate ajuta cineva in urmatoarea problema?
am in baza de date o tabela "categorii". am nevoie de o functie recursiva care sa imi afle toate subcategoriile unei anumite categorii.
Structura tabelei este urmatoarea:
"CREATE TABLE IF NOT EXISTS `categorii` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`parent` int(11) default '0',
`image` varchar(255) NOT NULL,
`active` enum('Yes','No') default 'No',
`data` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10;"
subcategoriile sunt de fapt tot categorii dar au ca si parinte id-ul unei categorii. categoriile parinte au ca si parinte 0.
arborescenta merge pe 5 nivele si de aceea am nevoie de aceasta functie care sa-mi afle toti copiii unei categorii parinte.
adika o arborescenta de genul:
Categorie
^ Subcategorie 1
^ Subcategorie 1 1
......
si asa mai departe |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 799
Locație: localhost
|
| Trimis: Mar Apr 22, 2008 10:06 am Titlul subiectului: |
|
|
| de ce nu faci 2 tabele ca sa fie mai simplu..? |
|
| Sus |
|
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 539
Locație: Bucuresti
|
| Trimis: Mar Apr 22, 2008 10:08 am Titlul subiectului: |
|
|
| de ce sa se complice cu 2 tabele ? |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 799
Locație: localhost
|
| Trimis: Mar Apr 22, 2008 10:24 am Titlul subiectului: |
|
|
@kyron, eu cred ca cu 2 tabele e mai usor de facut..!
daca la urma urmei vrei sa lesi tabela asta trebuie sa faci inca un cimp sub numele category_id si aici pui id la categoria parinte..!
deja faci un select de genu:
Cod:
$result = mysql_query("SELECT * FROM categorii WHERE parent != 0");
while ($row = mysql_fetch_array($result))
{
$results = mysql_query("SELECT * FROM categorii WHERE category_id = " . $row['id']);
while ($rows = mysql_fetch_array($results))
{
echo $rows['name'];
}
}
|
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1609
Locație: Sibiu
|
| Trimis: Mar Apr 22, 2008 10:35 am Titlul subiectului: |
|
|
S-a mai discutat. Nu e greu sa cauti. Trebuie doar sa incerci.
http://www.phpromania.net/forum/viewtopic.php?p=78969 |
|
| Sus |
|
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 539
Locație: Bucuresti
|
| Trimis: Mar Apr 22, 2008 10:42 am Titlul subiectului: |
|
|
Cod: function getSubcategorii($categorieID)
{
$categorieID = mysql_real_escape_string($categorieID);
$rezultat = array();
while ($categorieID != 0)
{
$query = "SELECT name, parent FROM categorii WHERE id = $categorieID AND id <> '0' ";
$result = mysql_query($query);
array_push($rezultat,$categorieID);
$categorieID = mysql_result($result,0,'parent');
}
return array_reverse($rezultat);
}
o sa ai returnat un array cu id-urile subcategoriilor. Daca vrei ca rray-ul sa contina numele lor si nu id-ul se poate modifica foarte usor |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|