|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2013
Messaggi: 62
|
[PHP] Gestione delle amicizie
Ciao, sto facendo un sito e ho bisogno di qualche aiuto sulla gestione delle amicizie.
Ho una tabella "amicizie" fatta in questo modo: /******************************/ /* id | richiedente | accettante | stato */ /******************************/ dove: - id è un auto incremet ed è chiave - richiedente è l'username dell'utente che ha richiesto l'amicizia - accettante è l'username dell'utente che ha ricevuto la richiesta - stato può essere: * 0 - richiesta in attesa di accettazione/rifiuto * 1 - richiesta accettata (quindi gli utenti sono amici) Ora voglio creare una pagina che mi visualizza una tabella contenente tutti gli utenti ed un bottone, il cui valore cambia a seconda che l'utente loggato sia: - amico con l'utente --> mostra il bottone RIMUOVI AMICIZIA - non amico con l'utente --> mostra il bottone RICHIEDI AMICIZIA - in attesa di una richiesta --> mostra il "bottone" IN ATTESA Quindi una cosa del genere: * Username dell'utente loggato: mario (il suo id è 1) * Nella pagina ListaUtenti.php viene visualizzata la tabella: /******************************/ /* id | Username | Azione */ /* 2 | paolo | RICHIEDI AMICIZIA */ /* 3 | maria | IN ATTESA */ /* 4 | luca | RICHIEDI AMICIZIA */ /* 5 | chiara | RIMUOVI AMICIZIA */ /* 6 | .... | .... */ /*******************************/ * Cioè: - mario e paolo non sono amici - mario e maria non sono amici ma uno dei due (o mario o maria) ha fatto una richiesta all'altro - mario e luca non sono amici - mario e chiara sono amici Quindi nel file ListaUtenti.php ho una semplice select * from utenti e per ogni risultato di questa query mi viene stampata una riga della tabella. Il mio problema è: come faccio a inserire nella cella Azione il bottone giusto? Quali condizioni uso? Quali query devo far eseguire? Spero di essermi spiegato bene.. Grazie anticipatamente a chi vuole aiutarmi ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2002
Città: localhost
Messaggi: 1115
|
a naso, e se ho capito bene, io farei un if dove se azione è in attesa mostra il tasto "in attesa" (e quindi non cliccabile) else mostri un tasto che quando è "on submit" invia una query di update verso Stato che diventa quindi 1
__________________
« Indovina la foto e vinci premi! GeoGuess.com «« [
![]() « MacBook Pro i7 2.2 GhZ 6750M + SSD EVO 250GB - Samsung S7 « |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2012
Messaggi: 59
|
Esatto, fai delle condizioni con gli if.
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Nov 2013
Messaggi: 62
|
Grazie per la risposta, agli if ci avevo pensato anche io. Il mio problema sono le query, non so come farle..
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2002
Città: localhost
Messaggi: 1115
|
L'update della tabella stato verrà una roba simile
Codice PHP:
__________________
« Indovina la foto e vinci premi! GeoGuess.com «« [
![]() « MacBook Pro i7 2.2 GhZ 6750M + SSD EVO 250GB - Samsung S7 « |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Nov 2013
Messaggi: 62
|
Ok ma non è proprio questo quello che intendevo. Io ho una tabella che stampa una riga per ogni utente, come questa:
Codice:
<?php $utente = $_SESSION['username']; $query = "SELECT id, user, nome, cognome FROM utenti WHERE user<>'" .$utente. "'"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { echo "<tr> <td>$row[id]</td> <td>$row[user]</td> <td>$row[nome]</td> <td>$row[cognome]</td>"; //utenti non amici if(..qualcosa..) { echo "<td><input type=\"submit\" name=\"submit\" value=\"RICHIEDI AMICIZIA\"></td>"; } //utenti amici else if(..qualcosa..) { echo "<td><input type=\"submit\" name=\"submit\" value=\"RIMUOVI AMICIZIA\"></td>"; } //in attesa else { echo "<td><input type=\"submit\" name=\"submit\" value=\"IN ATTESA\"></td>"; } echo "</tr>"; } ?> ![]() |
![]() |
![]() |
![]() |
#7 | |
Junior Member
Iscritto dal: Aug 2013
Messaggi: 24
|
Quote:
Codice:
function sonoAmici($user, $friend) { // cerca lo stato fra due utenti $sql = "SELECT stato FROM amicizie WHERE richiedente=$user AND accettante=$friend"; $query = mysql_query($sql); $arr = mysql_fetch_array($query); $stato = $arr['stato']; // converte il numero dello stato in boolean if ($stato==1) { // richiesta accettata return true; } else { // richiesta in attesa return false; } Codice:
function sonoAmici($user, $friend) { // per '$friend' si indica l'utente con cui effettuare il confronto // cerca lo stato fra due utenti $sql = "SELECT stato FROM amicizie WHERE richiedente=$user AND accettante=$friend"; $query = mysql_query($sql); if (isset($arr = mysql_fetch_array($query))) { // c'è un contatto fra i due return = $arr['stato']; } else { // nessun contatto return 2;
E quindi il tuo codice PHP diventerebbe: Codice:
$friend = $row['user']; // per 'friend' si indica l'utente con cui effettuare il confronto //utenti non amici if(sonoAmici($user, $friend)==2) { echo "<td><input type=\"submit\" name=\"submit\" value=\"RICHIEDI AMICIZIA\"></td>"; } //utenti amici else if(sonoAmici($user, $friend)==1) { echo "<td><input type=\"submit\" name=\"submit\" value=\"RIMUOVI AMICIZIA\"></td>"; } //in attesa else { echo "<td><input type=\"submit\" name=\"submit\" value=\"IN ATTESA\"></td>"; } Ultima modifica di Deep thought : 28-12-2013 alle 16:38. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:49.