Gestire amici

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ciao a tutti...dovrei far gestire ai miei utenti i loro amici,ma come posso struttura una tabella del db per fare questo?

Dovrei creare una tabella per ogni utente ???
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Dipende come deve funzionare il sistema di amicizia: deve essere come Facebook (se A è amico di B, allora B è amico di A) oppure come Twitter (A segue B, ma B non deve per forza seguire A)? Le amicizie devono essere confermate?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ti consiglio allora di creare una tabella chiamata friendships con la seguente struttura:
  • id INT AUTO_INCREMENT
  • user1 INT
  • user2 INT
  • confirmed ENUM('0','1')
Il primo campo è un identificativo univoco che rappresenta la richiesta di amicizia, che potrai, ad esempio, usare per cancellarla (come query nell'URL).
Il secondo e il terzo campo rappresentano i due utenti coinvolti nella richiesta di amicizia (conterrà gli ID degli utenti). L'unica pecca di questo sistema è che quando effettui una query per controllare se l'utente A è amico di B, dato che potrebbe essere contenuto sia nel campo user1 che in quello user2 il codice SQL dovrà essere qualcosa come:
Codice:
SELECT * FROM friendships WHERE (user1 = 'A' AND user2 = 'B') OR (user1 = 'B' AND user2 = 'A')
Ti consiglio, quindi, di creare una funzione per automatizzare questa operazione, o ancora meglio un oggetto user.
Il quarto e ultimo campo conterrà 0 se la richiesta di amicizia non è stata confermata, 1 se è stata confermata.

Che ne pensi? Può funzionare?
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Si per confermare/rifiutare richieste mi smebra giusta come struttura,ma per avere la lista degli amici di un user,come si può fare?? :\
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Avrai bisogno di una classe simile a questa:
PHP:
<?php
class user
{
	public function __construct()
	{
		// recuperi i dati dell'utente e li memorizzi nelle proprietà della classe
	}
	
	public function getFriends()
	{
		// supponiamo che $db sia un'istanza di PDO
		
		$stm = $db->prepare('SELECT * FROM friendships WHERE user1 = :id OR user2 = :id');
		$stm->execute(array(':id' => $this->id));
		
		$friendships = array();
		
		foreach($stm->fetchAll() as $row)
		{
			if($row['user1'] == $this->id)
				$friendships[] = $row['user2'];
			else
				$friendships[] = $row['user1'];
		}
		
		return $friendships;
	}
}
?>
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ok,grazie!
Potresti spiegarmi più dettagliatamente queste righe e dirmi se ho capito bene::)
PHP:
$stm = $db->prepare('SELECT * FROM friendships WHERE user1 = :id OR user2 = :id'); 
$stm->execute(array(':id' => $this->id)); 
         
$friendships = array(); //qui indichiamo che $friendships è un array
         
foreach($stm->fetchAll() as $row) 
{ 
if($row['user1'] == $this->id)  //se user1 è uguale all'attuale id prendo gli amici in user2
$friendships[] = $row['user2']; //altrimenti faccio il contrario
else 
$friendships[] = $row['user1']; 
} 
return $friendships; //restituisce gli amici
} 
} 
?>
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ok,grazie! :)
Per recuperare i dati invece devo usare il var?Perchè non ho grande domistichezza con la programmazione a oggetti!0:)
PHP:
var $id;
var $email;
var $user1;
var $user2;
var $amico;
var $letta;
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Qualcuno conosce questo software per gestire le telecamere IP Cam e Videosorveglianza 0
E Come gestire al meglio le immagini legno grande formato Photoshop 0
L Interfaccia grafica per gestire sql server .NET Framework 1
R Plugin per Gestire videocorsi a pagamento WordPress 3
M Come gestire aggiornamenti e modifiche di sito live CMS (Content Management System) 0
S Gestire scelta dropdown con dati da Mysql PHP 2
Tommy03 Gestire dimensioni immagini PHP 4
D Come gestire un singolo checkbox PHP 10
MarcoGrazia Gestire lista campi vuoti in fase di autenticazione jQuery 1
elpirata Gestire permessi accesso alle pagine PHP 3
A [ASP.Net] Gestire il profilo ADMIN in un progetto ASP NET e pattern MVC ASP.NET 0
M [PHP] Come gestire gli utenti online PHP 9
M [php] Come gestire i tags PHP 1
svtmaster professionalità per gestire sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
L [HTML] Gestire movimento GIF HTML e CSS 0
BestSellerMauroTop Software per gestire tanti profili e pagine, e farle crescere in modo autonomo! Annunci servizi di Social Media Marketing 0
W Gestire ccTalk o libreria c++ da php PHP 0
W [PHP] gestire una richiesta curl sul server PHP 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
bubino8 [WordPress] Gestire SSL (https://) da .htaccess WordPress 9
C [WordPress] Creare e gestire un nuovo sito web WordPress 5
M Gestire ErrorDocument 404 mantenendo lo stesso url Web Server 0
S gestire una tabella mysql PHP 9
R gestire il ritorno di una variabile con success Ajax 2
S Gestire Motion Detection TP-LINK CAMERA NC200 IP Cam e Videosorveglianza 0
A [Javascript] [HTML] Gestire una pagina esterna con 2 iframe Javascript 4
webmachine [PHP] gestire rinnovi PHP 1
P Gestire accesso ad un file xml pubblico PHP 1
D Gestire diversi tipi di pagamento per tipologia di cliente E-Commerce 4
asevenx Cerco plugin per gestire appuntamenti con agenda e campi di selezione WordPress 4
matteoraggi Software per gestire migliaia di permament redirect? SEO e Posizionamento 0
K Gestire response con servlet remota Sviluppo app per Android 1
P Piccolo software per gestire gli utenti. Snippet PHP 5
F Gestire data e ora PHP 6
D Gestire firme digitali con PHP PHP 0
C [Facebook Autolike]Software per gestire più account, mandare like, creare stati, amicizie e altro.. Vendere e Acquistare pubblicita' online 0
D gestire commenti e risposte ... PHP 3
L Gestire password utenti registrati. Quale codifica? PHP 23
asevenx Gestire posizionamento voci sottomenu che si nascondono HTML e CSS 1
N Programma per gestire Cookies secondo disposizioni del Garante Privacy 3/6/2014 G.U. 126 Leggi, Normative e Fisco 0
A Gestire e modificare immagini Java 2
M Gestire la chiusura forzata. Sviluppo app per Android 1
L Sito con doppia lingua. Gestire il cambio PHP 4
felino Wordpress e QTranslate: come gestire i widget WordPress 11
IImanuII Gestire lingua su facebook con php PHP 18
mondrian Gestire un web server su una virtualbox Apache 12
L gestire array per radio-checkbox in ciclo while PHP 2
MarcoGrazia Gestire gruppi e categorie di link con PHP PHP 1
L Button per gestire JS in WebBrowser di VBNet .NET Framework 0
A gestire errori 400-401-403-404-500 con file htaccess PHP 0

Discussioni simili