25. november 2005 - 22:15Der er
6 kommentarer og 1 løsning
Venne system
Hej.
Jeg har et community som jeg nu vil lave et venne system. Men når man har ansøgt og godkendt kommer der fx. John er ikke på Kims venne liste, men Kim er på Johns venne liste. Hvordna laver jeg sådan John er på kims venneliste og omvendt?
Den kode jeg bruger nu er her:
$v1 = mysql_query("SELECT * FROM kajbi_venner WHERE brugernavn = '$_GET[login_username]' AND godkendt = 'ja'"); if (mysql_num_rows($v1) > 0) { while ($venner = mysql_fetch_array($v1)) { $venn = mysql_query("SELECT * FROM kajbi_login WHERE login_username = '".$venner["spurgt"]."'"); $r = mysql_fetch_array($venn); echo '<a href="?side=logind/profil&login_username='.$venner['spurgt'].'"><u>'.$venner['spurgt'].'</u></a> - '; if($r[login_status2] == "Online") { echo("<font color=green>Online.</font>"); } if($r[login_status2] == "Offline") { echo("<font color=red>Offline.</font>"); } echo '<br>'; } } else { echo 'Han/Hun har ikke nogle venner.'; } ?>
Nu er det vel ikke 100% sikkert at john ønsker at være ven med kaj, blot fordi kaj ønsker at være ven med john?!
Uanset hvad så vil jeg foreslå at du laver en ny tabel til formålet:
tabel: vennepar
felter: id ven1_id ven2_id
id'et er id-et på venneparet.
ven1_id peger på en af dine bruger, og ven2_id peger på en anden.
Hvis der er en række i tabellen:
534, 42, 43
- så betyder det at din bruger med id=42 er ven med brugeren med id=43. Hvis det er sådan at john skal være ven med kaj, og kaj skal være ven med john så kunne du have to rækker:
534, 42, 43 535, 43, 42
- eller du kunne nøjes med en række, så så bare fortolke det som om at 42 og 43 er hinanesn venner.
Sådan ser min tabel ud nu! CREATE TABLE `kajbi_venner` ( `id` int(11) NOT NULL auto_increment, `brugernavn` varchar(50) NOT NULL default '', `spurgt` varchar(50) NOT NULL default '', `godkendt` varchar(50) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=8 ;
Hvad er PHP koden ting for at de begge kan se hianden?
Rent faktisk har du allerede gjort det på nogenlinde på den måde som jeg har skitseret :^)
Du kander dog bare felterne noget andet:
ven1_id = brugernavn ven2_id = spurgt
Godt nok ville jeg heller bruge id'erne i stedet for selve navnene.
Dette ekunne være et bud å en løsning:
$sql1 = "(SELECT spurgt AS ven FROM kajbi_venner WHERE brugernavn = '$_GET[login_username]' AND godkendt = 'ja')" $sql1 .= " UNION "; $sql1 .= "(SELECT brugernavn AS ven FROM kajbi_venner WHERE spurgt = '$_GET[login_username]' AND godkendt = 'ja')" $query1 = mysql_query($sql1) or die(mysql_error());
if (mysql_num_rows($query1) > 0) { while ($row1 = mysql_fetch_assoc($query1)) { echo '<a href="?side=logind/profil&login_username=' . $row1['ven'] . '"><u>' . $row1['ven'].'</u></a> - ';
$sql2 = "SELECT * FROM kajbi_login WHERE login_username = '" . $row1["ven"] . "'"; $query2 = mysql_query($sql2) or die(mysql_error()); $row2 = mysql_fetch_assoc($query2);
if ($row2["login_status2"] == "Online") { echo("<font color=green>Online.</font>"); }
if ($row2["login_status2"] == "Offline") { echo("<font color=red>Offline.</font>"); }
echo '<br>'; } } else { echo 'Han/Hun har ikke nogle venner.'; } ?>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.