Autor Zpráva
mackopu
Profil
Mám tabulku příspěvků do fóra:
CREATE TABLE `phorum` (
  `id` int(11) NOT NULL auto_increment,
  `parent` int(11) default NULL,
  `author` varchar(50) default NULL,
  `body` text,
  `date` datetime default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
);

INSERT INTO `phorum` VALUES (511, 0, 'Dan', 'aaaaaaaaaaa', '2012-09-21 11:39:04');
INSERT INTO `phorum` VALUES (512, 511, 'Martas', 'bbbbbbbbbbb', '2012-09-30 17:53:12');
INSERT INTO `phorum` VALUES (513, 511, 'Petr', 'ccccccccccc', '2012-10-03 21:02:37');
INSERT INTO `phorum` VALUES (514, 511, 'MFíca', 'ddddddddddd', '2012-10-04 21:06:23');
INSERT INTO `phorum` VALUES (515, 511, 'Tukan', 'eeeeeeeeeee', '2012-10-04 21:11:59');
INSERT INTO `phorum` VALUES (516, 511, 'perry', 'fffffffffff', '2012-10-06 17:34:49');
INSERT INTO `phorum` VALUES (517, 511, 'Valky', 'ggggggggggg', '2012-10-09 12:48:52');
INSERT INTO `phorum` VALUES (518, 511, 'Dan', 'hhhhhhhhhh', '2012-10-14 20:57:41');
INSERT INTO `phorum` VALUES (519, 511, 'Zed', 'iiiiiiiiii', '2012-10-15 20:09:50');
INSERT INTO `phorum` VALUES (520, 519, 'Dan', 'jjjjjjjjjj', '2012-10-15 20:19:31');
Rodičem všech příspěvků je v tomto případě záznam s ID 511, to je dáno tím, že jeho parent je 0. Záznam s ID 520 je zanořen ještě o jednu úroveň navíc.

Nyní potřebuji u každého záznamu zjistit právě toho základního rodiče:
function ZjistiRodice($parent)
{
  $sql = 'SELECT id, parent FROM phorum WHERE id = '.$parent;
  $result = mysql_query($sql);
  $zaznam = mysql_fetch_array($result);
  if($zaznam["parent"] != 0) {
    ZjistiRodice($zaznam["parent"]);
  }
  return $zaznam["id"];
};
Tedy např.:
echo ZjistiRodice(512);
echo ZjistiRodice(520);
V obou případech by výstupem mělo být 511. Bohužel v prvním případě funkce vypíše 512 a ve druhém 520.
Kde dělám chybu?
Tori
Profil
mackopu:
Kde dělám chybu?
řádek 7, nepracujete s návratovou hodnotou z rekurze.
mackopu
Profil
Děkuji, takže takto už to chodí:
function ZjistiRodice($parent)
{
  $sql = 'SELECT id, parent FROM phorum WHERE id = '.$parent;
  $result = mysql_query($sql);
  $zaznam = mysql_fetch_array($result);
  if($zaznam["parent"] != 0) {
    $rodic = ZjistiRodice($zaznam["parent"]);
  } else {
    $rodic = $parent;
  }
  return $rodic;
};

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: