• User Attivo

    Richiamare variabile da sql

    Ciao.

    E' un problema che mi porto avanti da mesi :bho: ho provato a seguire molte guide che dicevano più o meno la stessa cosa ma evidentemente sono io che non capisco.

    Ho un database mysql che ha salvato al suo interno i dati del mio sito. In una pagina php dovrei richiamare una variabile ma non so come metterci mano. A dirla tutta non so nemmeno come spiegarlo :tongueout: faccio l'esempio.

    L'utente si registra con username ($username) Pippo. Nella pagina username.php voglio che sia richiamata $username e mostrata sullo schermo. La complessità sta nel fatto che se arriva Mario, Pallino (...) ognuno dovrà avere come risposta la propria variabile.

    Tabella: webs_user - Colonna: clanirc
    Ogni utente ha il suo userid con il quale dovrei "restringere il campo" affinhè a Pippo venga mostrata la variabile Pippo, a Mario la variabile Mario, a Pallino la variabile Pallino.

    Ok... da dove inizio? 😢


  • User Attivo

    Il problema che metti tu, cioè che ogni utente deve avere come risposta dal database il suo username, non esiste: il server può avere più connessioni contemporaneamente e lavorare allo stesso modo per più utenti.

    Per questo, per l'esempio che hai fatto, ti consiglio di rivederti un pò la teoria del mysql ed in particolare la clausola WHERE che ti permette di estrapolare uno o più record in base alla parola immessa per la ricerca.

    Se tu quindi, attraverso il login degli utenti, riesci a sapere quale è l'username dell'utente appena connesso, il gioco è fatto: ti basta fare una query con cui cerchi nella tua tabella quel record che ha un campo contenente il nome utente scritto al momento del login.

    Spero di essere stato chiaro

    E comunque ti rimando qui: w3schools.com/php/php_mysql_where.asp

    :ciauz:


  • User Attivo

    Grazie della risposta

    if (getclanirc($userID)) $clanirc = '<a href="xfire:add_friend?user='.getclanirc($userID).'"><img src="images/icons/xfire.gif" border="0" width="15" height="11" alt="xfire"></a>';
    else $clanirc='';
    

    Più di questo non sono riuscito a fare 😞 io in sql da 0 a 100 capisco 10 😞 non so proprio da dove iniziare. Di guide ne ho viste tante ma all'atto pratico non so che fare.

    Sto agendo su un php che già preleva altre funzioni da sql quindi la parte diciamo per connettersi al database è fatta. Vengono prese già altre variabili come $email, $sex, $avatar, $signature (...) si tratta solo di aggiungerci $clanirc (stessa tabella delle altre variabili). Io ho provato a copiare il codice che richiama la variabile $email applicandola a $clanirc con le dovute modifiche ma mi si "storipa" la pagina e non vedo niente.

    Bhè quello che ho scritto serve più a farvi capire che sono nel caos più totale :mmm:


  • User Attivo

    fammi capire meglio:

    • hai due tabelle (una in cui ci sono i vari dati degli utenti, e l'altra che contiene i campi webs_users e clanirc).
    • entrambe le tabelle hanno un campo contenente l'userid degli utenti (user id che è univoco per ogni utente).
    • una volta che un utente fa il login, tu vuoi prelevare da entrambe le tabelle i dati che riguardano l'utente.

    Dimmi se ho sbagliato qualcosa.
    Il punto più importante è sapere se ogni utente ha un suo userid proprio e soprattutto se questo è contenuto in entrambe le tabelle.

    :ciauz:


  • User Attivo

    Quasi esatto. Tutti i dati degli utenti sono proprio nella stessa tabella webs_user (clanirc, id, name, sex, email). Tutte le informazioni sugli utenti sono salvate in quella tabella. L'id è univoco.


  • User Attivo

    ma il sistema di login, da dove prende i dati?

    quale tabella contiene username e password di ogni utente? questa tabella ha a sua volta un camp o id in cui viene riportato lo stesso userid univoco per ogni utente?


  • User Attivo
    *userID  registerdate  lastlogin  username  password  nickname  email  firstname  lastname  sex  country  town  birthday  icq  avatar  usertext  userpic  clantag  clanname  clanhp  clanirc  clanhistory  cpu  mainboard  ram  monitor  graphiccard  soundcard  verbindung  keyboard  mouse  mousepad  newsletter  homepage  about  pmgot  pmsent  visits  banned  ip  topics  articles  demos  files  gallery_pictures  mailonpm  userdescription  activated*
    

    Questi sono tutti i campi della tabella webs_user. Sono tutti qui.


  • User Attivo

    @Kian said:

    *userID  registerdate  lastlogin  username  password  nickname  email  firstname  lastname  sex  country  town  birthday  icq  avatar  usertext  userpic  clantag  clanname  clanhp  clanirc  clanhistory  cpu  mainboard  ram  monitor  graphiccard  soundcard  verbindung  keyboard  mouse  mousepad  newsletter  homepage  about  pmgot  pmsent  visits  banned  ip  topics  articles  demos  files  gallery_pictures  mailonpm  userdescription  activated*
    

    Questi sono tutti i campi della tabella webs_user. Sono tutti qui.

    Perfetto, allora è anche più semplice dato che i dati sono tutti nella stessa tabella.

    Quindi, passando alla risposta del tuo problema, direi che dovresti usare la clausola where come ti ho detto prima.
    Siccome non conosco il codice che hai scritto, ti faccio un esempio banale:

    form di login che punta verso username.php
    [php]
    <form method="post" action="username.php">
    <input type="text" name="username" />
    <input type="password" name="password" />
    </form>
    [/php]username.php
    [php]
    $username = $_POST['username'];
    $password = $_POST['password'];

    //Query che serve per estrapolare solo il record riguardante l'utente loggato
    $query = "SELECT * FROM webs_user WHERE username='$username' AND password = '$password'";
    $result = mysql_query($query);

    //Acquisizione dei valori contenuti nei campi del record dell'utente loggato
    $row = mysql_fetch_array($result);

    //Ora per accedere ai valori del record trovato ti basta inserire la variabile $row più il nome del campo:
    echo "Benvenuto ".$row['username']."<br />";
    echo "La tua e-mail è: ".$row['email'];
    //.... e così via
    [/php]Spero di essere stato chiaro 🙂