Vriendenlijst ?
Ik ben al een tijdje bezig om het voor elkaar te krijgen dat members elkaars vriendjes kunnen worden. Kijk bijv op http://www.dopetown.com/leden/profiel.php?naam=MaffeDodo
Ik heb echt vreselijk zitten stoeien maar kom er echt niet uit.
Het is voor een site van een sportclub voor de kleintjes.
Is er iemand die zoiets heeft of wil helpen daarbij ?
Als iemand vriendje wil worden moet de andere persoon dat bevestigen.
Hoop dat iemand een oplossing heeft.
Om vriendjes te worden moet je dus twee gebruikers aan elkaar koppelen. Hiervoor sla je dus in een nieuwe tabel van je database het gebruikersnummer (id?) van de ene en die van de andere op. Vervolgens sla je nog een 0 op in een laatste kolom die staat voor een bevestiging. (hint INSERT)
'Wannabee vrienden' staan nog op 0, welke in een 1 veranderd moet worden als hij/zij geaccepteerd wordt. (hint: UPDATE)
Kijken welke vrienden je hebt is heel simpel. Haal gewoon alles uit de DB waar id1 of id2 je eigen id is. Sorteer bijvoorbeeld eerst op wannabee en daarna op naam. (hints: SELECT, WHERE, ORDER BY en joins)
Elwin
//---------------DATABASE----------//
CREATE TABLE users (
id int(10) unsigned NOT NULL auto_increment,
nick varchar(50) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE vrienden (
id int(10) unsigned NOT NULL auto_increment,
userid int(10) default NULL,
friendid int(10) default NULL,
usernick varchar(50) default NULL,
validate int(10) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
//------------------------------------//
//------------USERPAGE-----------//
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
mysql_connect ('localhost','root','');
mysql_select_db ('vrienden');
if (isset($_POST["bevestiging"])){
$query="INSERT INTO vrienden (userid, friendid, usernick, validate) ";
$query .= "VALUES ('";
$query .= $_POST["userid"] ."', '" ;
$query .= $_POST["friendid"] ."', '" ;
$query .= $_POST["usernick"] ."', '" ;
$query .= $_POST["validate"] ."');" ;
$result = mysql_query($query) or dir ("FOUT: " . mysql_error());
if ($result){
echo ("<B>" .$_POST["usernick"] . "</b> is toegevoegd als vriendje en je moet nu wachten op validatie van " .$_POST["usernick"] . "<br>\n");
}
}
$sql = "SELECT * FROM users";
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);
echo "Er zijn <b>$aantal</b> members (zie hieronder):<br>\n";
while ($record = mysql_fetch_object($resultaat)) {
echo "<b>$record->id</b>. $record->nick\n";
echo "<form action=\"index.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"friendid\" value=\"$record->id\">\n";
echo "<input type=\"hidden\" name=\"usernick\" value=\"$record->nick\">\n";
echo "<input type=\"hidden\" name=\"userid\" value=\"1\">\n";
echo "<input type=\"hidden\" name=\"validate\" value=\"0\">\n";
echo "<input type=\"hidden\" name=\"bevestiging\" value=\"1\">\n";
echo "<input type=\"Submit\" value=\"Vriendje aanvragen\">\n";
echo "</form><BR>\n";
}
?>
mysql_connect ('localhost','root','');
mysql_select_db ('vrienden');
if (isset($_POST["bevestiging"])){
$query="INSERT INTO vrienden (userid, friendid, usernick, validate) ";
$query .= "VALUES ('";
$query .= $_POST["userid"] ."', '" ;
$query .= $_POST["friendid"] ."', '" ;
$query .= $_POST["usernick"] ."', '" ;
$query .= $_POST["validate"] ."');" ;
$result = mysql_query($query) or dir ("FOUT: " . mysql_error());
if ($result){
echo ("<B>" .$_POST["usernick"] . "</b> is toegevoegd als vriendje en je moet nu wachten op validatie van " .$_POST["usernick"] . "<br>\n");
}
}
$sql = "SELECT * FROM users";
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);
echo "Er zijn <b>$aantal</b> members (zie hieronder):<br>\n";
while ($record = mysql_fetch_object($resultaat)) {
echo "<b>$record->id</b>. $record->nick\n";
echo "<form action=\"index.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"friendid\" value=\"$record->id\">\n";
echo "<input type=\"hidden\" name=\"usernick\" value=\"$record->nick\">\n";
echo "<input type=\"hidden\" name=\"userid\" value=\"1\">\n";
echo "<input type=\"hidden\" name=\"validate\" value=\"0\">\n";
echo "<input type=\"hidden\" name=\"bevestiging\" value=\"1\">\n";
echo "<input type=\"Submit\" value=\"Vriendje aanvragen\">\n";
echo "</form><BR>\n";
}
?>
//------------------------------------//
Dat invoegen werkt allemaal. Dat is niet zo moeilijk :)
Nu moet het natuurlijk zo zijn dat als ik user1 ben en user3 staat al in m'n vriendenlijst dat de knop veranderd in "Vriendje verwijderen"
Dat is dus iets wat ik niet voor elkaar krijg hahaha
Normaliseren. Je kan immers de nickname van een friend ophalen door middel van zijn/haar id.
Maar goed.. je probleem.. je wilt een 'verwijder button' bij je vrienden?
Elwin
Ik snap je database niet helemaal goed. Waarom sla je de nickname van een friend op? Dat is toch heel omslachtig als die naam gewijzigid wordt? Dan moet je namelijk in meerdere tabellen die troep wijzigen.. Dit is dus een duidelijk voorbeeld van redundantie... Ik kan je aanraden om je database te Maar goed.. je probleem.. je wilt een 'verwijder button' bij je vrienden?
Quote:
Maar dat is toch helemaal geen probleem. Als jij user 1 bent lees je toch gewoon alle records uit de DB uit waarin user 1 staat en validate 1 is (of iig de waarde die jij het geeft als het bevestigd is). Alle records die die query ophaalt zijn automatisch je friends en krijgen zo'n knop achter de naam.Nu moet het natuurlijk zo zijn dat als ik user1 ben en user3 staat al in m'n vriendenlijst dat de knop veranderd in "Vriendje verwijderen"
Elwin
Eigen ID is 1 (die haal je normaal dus uit je DB)
'ik' is in dit geval de ingelogte persoon, 'hij' is een willekeurige andere persoon
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$query=mysql_query("SELECT * FROM vrienden WHERE userid = '1' OR friendid='1'");
while ($data=mysql_fetch_array($query)) {
if ($data['validate'] == '1') { // als 'ik' en 'hij' vriendjes zijn
print "Vriendje verwijderen";
}
if ('1' == $data['userid']) {
if ($data['validate'] == '0') { // als 'ik' degene ben die de vriendschap heb aangevraagt, maar nog niet is geaccepteerd
print "Nog niet geaccepteert";
}
}
elseif ('1' == $data['friendid']) { // als 'hij' degene is die de vriendschap heb aangevraagt, en 'ik' het nog niet geaccepteert is
if ($data['validate'] == '0') {
print "Vriendje accepteren / Vriendje weigeren";
}
}
}
?>
$query=mysql_query("SELECT * FROM vrienden WHERE userid = '1' OR friendid='1'");
while ($data=mysql_fetch_array($query)) {
if ($data['validate'] == '1') { // als 'ik' en 'hij' vriendjes zijn
print "Vriendje verwijderen";
}
if ('1' == $data['userid']) {
if ($data['validate'] == '0') { // als 'ik' degene ben die de vriendschap heb aangevraagt, maar nog niet is geaccepteerd
print "Nog niet geaccepteert";
}
}
elseif ('1' == $data['friendid']) { // als 'hij' degene is die de vriendschap heb aangevraagt, en 'ik' het nog niet geaccepteert is
if ($data['validate'] == '0') {
print "Vriendje accepteren / Vriendje weigeren";
}
}
}
?>
zouden bugs in kunnen zitten, heb niet kunnen testen.
en ik zou die 'usernick varchar(50) default NULL,' er idd uit zetten, is nutteloos, en alleen maar lastig.
GR
Beuk
Uitkomsten kunnen dus zijn:
Vriendje verwijderen
Nog niet geaccepteert
Vriendje accepteren / Vriendje weigeren
en je bent zelf zo vrij om daar mooie buttons of links van te maken :>
Gewijzigd op 12/10/2004 23:14:00 door Beuk
$result = mysql_query($query) or dir ("FOUT: " . mysql_error());
moet zijn
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
en je moet ook rekening houden met je doelgroep...
aan de ene kant gebruik je woorden als 'Vriendjes', wat goed is, maar 'validatie'...
betwijfel of veel van die voetballertjes dat begrijpe...
Gewijzigd op 12/10/2004 23:17:00 door Beuk
Elwin (a.k.a. SpaceFrog) : De nicknames zijn niet te wijzigen door de gebruikertjes :) Maar je hebt eigenlijk wel gelijk !
Beuk : Dit is natuurlijk een hele ruwe versie dus qua bewoordingen wordt alles zo simplistisch mogelijk gemaakt.
In ieder geval super dat jullie me hier mee willen helpen.
Het enige wat nu nog niet lukt is dat als ik een vriendje accepteer doormiddel van een link die dan de UPDATE uitvoert dat ie ook tegelijkertijd een nieuwe row aanmaakt in de database dat ik ook vriendje van hem ben.
Nu is het zo dat ik wel in zijn lijstje sta van vriendjes maar hij niet in die van mij.
Dus is dat mogelijk ?
Met een link de UPDATE query uitvoeren + een query voor een INSERT ?