Frågan#1
Tjena
Jag behöver hjälp med lite logik. :-)
På denna sida:
http://www.dindator.nu/marcus/recursive
Jag försöker helt enkelt räkna alla länkarna som finns totalt under varje kategori. Jag lyckas med att skapa länkträdet, men lyckas inte summera antalet länkar. Du som är lite insatt i rekursiv programmering förstår säkert vilken logik jag pratar om. Jag postar koden nedan.
<?
function start_script( ) {
initiate_db_connection();
scan_categories('','-1','');
}
function initiate_db_connection( ) {
$server = "******";
$user = "******";
$pass = "******";
$db = "******";
mysql_connect($server,$user,$pass) or die("FEL : Kunde inte koppla till databasen, var god försök senare.");
mysql_select_db($db);
}
function scan_categories( $parent_id , $level , $links_so_far ) {
$level = $level + 1;
if ( !$parent_id ) {
$where = " where parent_id is null";
} else {
$where = " where parent_id = '".$parent_id."'";
}
$sql = "select * from 27_categories".$where;
$result = mysql_query($sql);
while ( $data = mysql_fetch_array($result)) {
scan_categories($data[category_id], $level, $links_so_far);
}
// Hämtar information om föregående kategori
if ( $parent_id ) {
$links_so_far = get_info_about_category( $parent_id , $level, $links_so_far);
}
unset ($level);
}
function count_links_in_category( $category_id ) {
$sql = "select count(*) from 27_ref where category_id = '".$category_id."'";
$result = mysql_query($sql);
$data = mysql_fetch_array($result);
if ( !$data[0] ) {
$data[0] = '0';
}
return $data[0];
}
function get_info_about_category( $category_id, $level, $links_so_far ) {
$sql = "select * from 27_categories where category_id = '".$category_id."'";
$result = mysql_query($sql);
$data = mysql_fetch_array($result);
$level_tmp = $level;
while ($level_tmp != 0) {
$level_tmp = $level_tmp - 1;
$space .= " ";
}
$links = count_links_in_category( $category_id );
$links_so_far = $links_so_far + $links;
echo $space.$level.".<a href=\"\">".$data[category_title]."</a> ( <i>".$links.",".$links_so_far."</i> )<br>";
return $links;
}
start_script();
?>
