Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema con query

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173

    Problema con query

    Salve a tutti io sto cercando di fare in modo di mostrare in un profilo se si ha inviato un'amicizia:
    Cioè se quando cerco un utente gli ho inviato una richiesta mi compare la sritta Richiesta inviata altrimenti se non c'è la richiesta mi mostri la scritta Aggiungi agli amci.

    Ho anche scritto del codice:

    Codice PHP:

    <?php
    $id 
    $_GET['id'];
    $query mysql_query("SELECT * FROM richieste WHERE id = $id");
                   while(
    $row mysql_fetch_array($sql)){
                        
    $richiesta =  $row['richiesta'];
      
                   if(
    $richiesta == 'inviata'){

                    echo 
    "Richiesta inviata";



                     }else{

                           echo 
    "Aggiungi agli amici";

                  }

                }

    ?>
    Se ho inviato la richiesta mi esce la scritta richiesta inviata ma se non l'ho inviata non mi esce la scritta Aggiungi agli amici...
    Al momento dell'invio della richiesta mi esegue una query che inserisce nel db la parola inviata quindi se la richiesta è inviata come nell'if sopra mi mostri la scritta... ma se non è inviata non mi mostra nulla.. Questo perchè dovrei fare un'elseif traducibile in:
    Se non c'è nessuna richiesta nel DB per il relativo id mi stampi la scritta Aggiungi agli amici

    Per favore aiutatemi...

    Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prima di tutto: come è fatta la tabella richieste?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quindi, come supponevo, un utente può ovviamente avere nella tabella più entry di richieste inviate verso altri utenti.

    Il tuo codice però non è in linea con questa situazione, perché quella query recupera TUTTE le richieste inviate dall'utente, poi cicla sul risultato e ti mostrerebbe per esempio:
    Richiesta inviata
    Richiesta inviata
    Aggiungi agli amici
    Richiesta inviata
    ...

    Suppongo che invece tu voglia solo sapere volta per volta se l'utente X ha inviato la richiesta all'utente Y.

    La query dovrebbe essere

    SELECT accettata FROM richieste WHERE richiedente_id=$id_utente_X AND ricevente_id=$id_utente_Y

    Un paio di appunti:
    - al campo "accettata" cambierei nome, perché non ha senso, indica se una richiesta è stata inviata, non se è stata accettata, o no? Ad ogni modo adesso è fuorviante. Se vuoi tenere traccia anche delle richieste accettate (e credo sia il caso) aggiungi un altro campo alla tabella.

    - per indicare inviata/non inviata ed accettata/non accettata, userei 0 o 1, non una stringa.

    - detto questo, un campo "inviata" puoi anche fare a meno di mettercelo, tanto se c'è una entry ovviamente sta lì perché è stata inviata una richiesta.

    - i campi nome_richiedente e nome_ricevente sono inutili ed occupano spazio senza motivo, dagli id puoi recuperarli dalla tabella utenti, che suppongo tu abbia.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    Hai perfettamente ragione in tutto ciò che dici mi hai salvato... ora provvedo subito.... grazie mille

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 © 2025 vBulletin Solutions, Inc. All rights reserved.