Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Gestione amicizie

  1. #1

    Gestione 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. #2
    Nessuno?

  3. #3
    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>";
       }                              
    ?>

    Quello che mi manca sono le condizioni dentro l'if, non so come farle.. :help:

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    fai una query su amicizie per cercare lo username in questione:
    Codice PHP:
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'"
    A questo punto, quando fai il ciclo su tutti gli utenti, vedi se l'utente si trova nella tabella o meno, e ti muovi di conseguenza.
    io mi preparerei prima un array che ha come chiave lo username:
    Codice PHP:
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'";
    $result mysql_query($query);  
    $amicizie = array();
    while(
    $row mysql_fetch_assoc($result)) {
       
    $key = ($row['richiedente'] == $utente) ?  $row['accettante'] : $row['richiedente'];
       
    $amicizie[$key] = $row['stato'];

    a questo punto nel tuo ciclo sugli utenti:
    Codice PHP:
    $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>";
        if(!isset(
    $amicizie[$row['id']])){
            echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"RICHIEDI AMICIZIA\"></td>";
        }else{
            if(
    $amicizie[$row['id']] == 1){   
              echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"RIMUOVI AMICIZIA\"></td>";
            }else{             
              echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"IN ATTESA\"></td>";
            }
        }

    Ps: Io non tengo in considerazioni "doppioni" nella tabella amicizie (es. io chiedo amizia a tizio, tizio la chiede a me).
    Regolati di conseguenza nel caso siano presenti duplicati
    Ultima modifica di boots; 26-12-2013 a 21:40

  5. #5
    Quote Originariamente inviata da boots Visualizza il messaggio
    fai una query su amicizie per cercare lo username in questione:
    Codice PHP:
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'"
    A questo punto, quando fai il ciclo su tutti gli utenti, vedi se l'utente si trova nella tabella o meno, e ti muovi di conseguenza.
    io mi preparerei prima un array che ha come chiave lo username:
    Codice PHP:
    $query "SELECT * FROM amicizie WHERE richiedente = '$utente' OR accettante = '$utente'";
    $result mysql_query($query);  
    $amicizie = array();
    while(
    $row mysql_fetch_assoc($result)) {
       
    $key = ($row['richiedente'] == $utente) ?  $row['accettante'] : $row['richiedente'];
       
    $amicizie[$key] = $row['stato'];

    a questo punto nel tuo ciclo sugli utenti:
    Codice PHP:
    $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>";
        if(!isset(
    $amicizie[$row['id']])){
            echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"RICHIEDI AMICIZIA\"></td>";
        }else{
            if(
    $amicizie[$row['id']] == 1){   
              echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"RIMUOVI AMICIZIA\"></td>";
            }else{             
              echo 
    "<td><input type=\"submit\" name=\"submit\" value=\"IN ATTESA\"></td>";
            }
        }

    Ps: Io non tengo in considerazioni "doppioni" nella tabella amicizie (es. io chiedo amizia a tizio, tizio la chiede a me).
    Regolati di conseguenza nel caso siano presenti duplicati
    Grazie per la risposta! Ora provo, ma cosa vuol dire questa notazione con il punto interrogativo:
    $key = ($row['richiedente'] == $utente) ? $row['accettante'] : $row['richiedente']; ?

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    e' la versione breve del if-then-else, equivale ad:
    Codice PHP:
    if($row['richiedente'] == $utente){
       
    $key $row['accettante'];
    }else{
       
    $key $row['richiedente'];


  7. #7
    Ok grazie

  8. #8
    Funziona perfettamente! Grazie mille e buone feste

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Buone feste

  10. #10
    Ora ho un altro problema: una volta che ho la tabella e i vari bottoni, come faccio ad associare al bottone cliccato l'azione corrispondente?

    id Nome Cognome Azione
    2 mario rossi IN ATTESA
    3 sara verdi RIMUOVI AMICIZIA
    4 luca bianchi RICHIEDI AMICIZIA
    5 veronica verdi RIMUOVI AMICIZIA
    6 anna gialli RICHIEDI AMICIZIA

    Se clicco sul bottone RICHIEDI AMICIZIA relativo a luca come lo distinguo dal bottone RICHIEDI AMICIZIA di anna?

    Ho fatto in questo modo:
    Codice PHP:
    if(!isset($amicizie[$row1['user']])) {
     
    $nome "richiedi-submit-" .$row1['id']. "";
     echo 
    "<td><input type=\"submit\" name=\".$nome.\" value=\"Richiedi amicizia\"></td>";
    }
    else {
     
    $nome "rimuovi-submit-" .$row1['id']. "";
     if(
    $amicizie[$row1['user']] == 1) {   
        echo 
    "<td><input type=\"submit\" name=\".$nome.\" value=\"Rimuovi amicizia\"></td>";
     }
     else {             
        echo 
    "<td><input type=\"submit\" name=\"attesa-submit\" value=\"In attesa\"></td>";
     }

    E facendo degli echo ho visto che i name sono giusti. Ora però come faccio la condizione
    Codice PHP:
    if(isset($_POST['..qualcosa..'])) {

    }
    else {


    al posto di ..qualcosa.. non posso metterci $row1['id'] perchè quello è un valore dentro il while.. Mi sto perdendo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.