Więc tak - po kilku dyskusjach i wielu próbach doszedłem do takiego schematu i kodu jak poniżej - ale gdzieś tu jest bład logiczny... :|
Dobra... mam wiec taka oto tabele:
Kod
myID | friendID | lev
gdzie lev to poziom "zaglębienia".
Stworzylem sobie także przykladowa tabele users, gdzie mam ID i username.
Oto kod, jaki wykorzystuje do dodawania danych:
[php:1:df3c513c2f]<?php
if(empty($_GET["myID"]))
{
$_GET["myID"]=186;
}
function dodaj_osobe($myID,$friendID,$lev="0")
{
#$prev= ($lev<1 ? 0 : ($lev<2 ? 1 : $lev-1));
if($myID!=$friendID)
{
if($lev<1)
{
$sql="SELECT count(myID) FROM god_connections WHERE myID='".$myID."' AND friendID='".$friendID."'";
}
else
{
$sql="SELECT count(myID) FROM god_connections WHERE myID='".$myID."' AND friendID='".$friendID."' AND lev='".$lev."'";
}
$q=mysql_query($sql);
$ile=mysql_result($q,0);
if($ile<1)
{
if(!mysql_query("INSERT INTO god_connections (myID,friendID,lev) VALUES (".$myID.",".$friendID.",".$lev.")"))
{
return(mysql_error());
}
}
}
return(true);
}
if(empty($_GET["add"]) && empty($_GET["list"]))
{
$q=mysql_query("SELECT * FROM god_users");
while($t=mysql_fetch_array($q))
{
echo "<a href=?add=".$t["id"]."&myID=".$_GET["myID"].">".$t["username"]."</a><br>";
}
}
elseif($_GET["add"]>0)
{
$q=mysql_query("SELECT * FROM god_connections WHERE friendID=".$_GET["myID"]." AND lev < 3") or die(mysql_error());
$i=0;
while($t=mysql_fetch_array($q))
{
$ids[$i]["myID"]=$t["myID"];
$ids[$i]["friendID"]=$t["friendID"];
$ids[$i]["t"]="m";
$ids[$i]["lev"]=$t["lev"];
$i++;
}
$q=mysql_query("SELECT * FROM god_connections WHERE myID=".$_GET["myID"]." AND lev < 3") or die(mysql_error());
while($t=mysql_fetch_array($q))
{
$ids[$i]["friendID"]=$t["friendID"];
$ids[$i]["myID"]=$t["myID"];
$ids[$i]["t"]="f";
$ids[$i]["lev"]=$t["lev"];
$i++;
}
echo "<pre>";
print_r($ids);
echo "</pre><br><br>";
echo dodaj_osobe($_GET["myID"],$_GET["add"]);
dodaj_osobe($_GET["add"],$_GET["myID"]);
foreach($ids AS $key=>$v)
{
$v["lev"]++;
if($v["t"]=="m")
{
dodaj_osobe($v["myID"],$v["friendID"],$v["lev"]);
}
else
{
dodaj_osobe($v["friendID"],$v["myID"],$v["lev"]);
}
}
}
?>[/php:1:df3c513c2f]
Wiem, że to można było prościej napisać - ale tutaj chodzi tylko o sprawdzenie działania i przejrzystość (czyli powtórzenia) jest ważna.
Zamieszczam całość bo może znajdzie się ktoś kto by to sprawdził - bede dozgonnie wdzięczny