• User Attivo

    si paoloe gino hanno come valore 0000 nel database


  • User Attivo

    spingerei per questa soluzione...

    modifica il campo "logged" da "date" a "int double" così memorizzi numeri...

    prima della query in cui inserisci l'ora fai:

    $ora_log = time();

    alla query invece di passare NOW() passi '$ora_log' (mi raccomando gli apici che con NOW() non servono mentre con $ora_log servono)

    Fatto questo nel database dovresti trovarti un valore per chi si logga simile a 1532546070, insomma una bella cifrona (sono i secondi passati dal 1970 ad oggi)

    A questo punto nel file utentionline.php prima della query fai

    $ora_scadenza = time()-60*60;

    E nella query metti WHERE 'logged' < '$ora_scadenza'

    In questo modo confronti l'ora di log che se è antecedente all'ora attuale meno un'ora vuol dire che per te è troppo vecchia e non va visualizzato... se uno ancora non si è loggato il valore di logged è 0 quindi di sicuro è < a '$ora_scadenza' e così te la cavi con un solo WHERE

    Prova così...

    keiske


  • User Attivo

    Scusami...e un errore mio...
    cioè
    quei 0000 0000 erano vecchi...cioè me li aveva scritti quando ancora nn funzionava bene lo script che doveva stamparmi l ora del login

    quindi mi ebastato fare un login con i 2 utenti che avevano valore 0000 per far si che scomparisse lo 0000 e comparisse l ora ela data del login...

    ora credo funzioni tutto..
    cioè facendo un esempio se entro un ora nn effettuo il login con l utente paolo..quest ultimo nn dovrebbe piu' apparire nella lista utenti online..:)

    c'è un particolare però..l utente marta ho notato che nel database mi da
    2008-07-10 15:03:43

    quindi nn dovrebbe risultare online..invece risulta


  • User Attivo

    ma hai impostato la query in che modo? solo con 'logged' <> '' non ti controllerà mai se è passata un'ora ma solo se uno non ha mai fatto login... devi confrontare il valore del campo logged con "ora di adesso meno un'ora" e per farlo col campo "logged" in formato date devi fare delle trasformazioni... visto che puoi salvarlo in formato "secondi dal 1970" e che la funzione time() ti restituisce subito "secondi dal 1970" perchè complicarsi la vita? 😄

    keiske


  • User Attivo

    ho fatto cosi'..
    [PHP]
    <?
    session_start(); //avvio l'utilizzo delle sessioni

    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    $ora_scadenza = time()-60*60;
    $query = "SELECT nickname,logged FROM iscritti WHERE 'logged' <'$ora_scadenza'";
    $result = mysql_query($query)
    or (mysql_error());
    if(mysql_num_rows($result) != 0) { ?>
    <div id="contenitore per gente online">
    <ul>

    <?php
    while ($array = mysql_fetch_array($result))
    {
    $arr_stripped = array_map("stripslashes", $array);
    list($nickname) = $arr_stripped;

    ?>
    <li><?echo"Utenti online $nickname";?></li>
    <?php } ?>
    </ul>
    </div>
    <?php } ?>
    [/PHP]

    però nn mi visualizza nulla..


  • User Attivo

    ok, ma adesso il valore logged non può essere 12:23:45 07-07-08 perchè altrimenti viene fuori

    WHERE 12:23:45 07-07-08 < 1543212354670

    E come li confronti quei due valori? Dovresti prendere 1543212354670 e trasformarlo in timestamp ma poi non so se li può confrontare... o prendi il timestamp e lo trasformi in secondi (ma devi farlo dopo una query in cui li estrai tutti e li trasformi in un ciclo uno a uno)...

    Allora con l'altra modifica il valore logged lo memorizzi subito come numerico e lo confronti senza problemi e senza fare troppi sbatti

    keiske


  • User Attivo

    quindi devo modificare il campo logged della tabella in INT

    ho modificato la pagina login cpsi'
    [PHP]
    <?
    session_start(); //avvio l'utilizzo delle sessioni

    session_start(); //avvio l'utilizzo delle sessioni
    if($_POST['nickname'])
    $nickname = mysql_real_escape_string($_POST['nickname']);
    else
    $nickname = "";

    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    $selezione="SELECT nickname,password,logged,sesso FROM iscritti WHERE nickname='$nickname' AND password='". $_POST['password']."'";
    $eseguisel=mysql_query($selezione);
    if (mysql_num_rows($eseguisel) ==1) {
    echo "Login effetuato con successo..Attendi";

    //inserisco nel campo logged l orario del login
    $ora_log = time();
    $query = "
    UPDATE iscritti SET
    logged = '$ora_log'
    WHERE nickname = '$nickname'
    ";
    //ciclo while che mi richiama l'array dei dati selezionati dal database

    while($ROW = mysql_fetch_array($eseguisel))
    {
    //qui vanno settati un po' di SESSIONI
    $_SESSION['logged']=1;//setto che l'utente è loggato
    $_SESSION['nickname']=$ROW[nome];//inserisco una nuova chiave di sessione con il nome utente
    $_SESSION['sesso']=$ROW[sesso];//inserisco una nuova chiave di sessione con il sesso dell'utente
    }

    //eseguo la query che inserisce i dati nel campo logged

    $eseguiquery=mysql_query($query);
    //ora proseguo con l'header
    header("Location: pannellodicontrollo.php");
    exit;
    } else {
    echo "Dati non presenti nei nostri database..Attendi";
    //annullo tutte le chiavi di sessioni se esistono
    session_unset();
    session_destroy();
    header("Location: iscrizionesito.htm");
    exit;
    }
    ?>[/PHP]

    e la pagina utentionline.php cosi'
    [PHP]
    <?
    session_start(); //avvio l'utilizzo delle sessioni

    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    $ora_scadenza = time()-60*60;
    $query = "SELECT nickname,logged FROM iscritti WHERE 'logged' < '$ora_scadenza'";
    $result = mysql_query($query)
    or (mysql_error());
    if(mysql_num_rows($result) != 0) { ?>
    <div id="contenitore per gente online">
    <ul>

    <?php
    while ($array = mysql_fetch_array($result))
    {
    $arr_stripped = array_map("stripslashes", $array);
    list($nickname) = $arr_stripped;

    ?>
    <li><?echo"Utenti online $nickname";?></li>
    <?php } ?>
    </ul>
    </div>
    <?php } ?>
    [/PHP]
    ora sinella tabella al campo logged mi inserisci quella cifra di numero che mi hai detto...ma purtroppo la pagina utentionline.php nn visualizza nulla


  • User Attivo

    sicuro che nella query logged vada tra apici essendo un capo?

    keiske


  • User Attivo

    @Privacy-Impresa said:

    sicuro che nella query logged vada tra apici essendo un capo?

    keiske

    ho lto anche le apici a logged nel file utentionline.php ma continua a nn visualizzarenulla..

    [PHP]
    $query = "SELECT nickname,logged FROM iscritti WHERE logged < '$ora_scadenza'";[/PHP]


  • User Attivo

    fai una cosa... manda in echo $ora_scadenza e controlla sia un numerone come l'altro...

    keiske


  • User Attivo

    @Privacy-Impresa said:

    fai una cosa... manda in echo $ora_scadenza e controlla sia un numerone come l'altro...

    keiske

    si..mi da un numero grande
    1215706959


  • User Attivo

    Prova a mettere > e non <...


  • User Attivo

    @Privacy-Impresa said:

    Prova a mettere > e non <...

    Perfetto...pare che funzioni:D:D

    Grazie:wink3:

    Ora...sempre a utentionline.php proverò ad applicare alcune modifiche che ho fatto già su altri script...
    Cioè ai nomi presenti utenti online assoccierò una piccola thumbnails della loro foto inviata al momento dell iscrizione...e in piu' linkerò i nomi presenti online su cui cliccandoci sopra dovrei andare ai loro profili...e in piu colorerò i nick maschili blu e quelli fwmminili rosa...
    Stavolta sperò di n dover chiedere aiuto..ma credo di farcela.....:)


  • User Attivo

    Direi che adesso le varie personalizzazioni dovrebbero venirti bene... oltre al fatto che adesso hai compreso certe "logiche" che ti saranno d'aiuto 😄

    keiske


  • User Attivo

    Grazie mille...:wink3::smile5:

    ecco appunto come ho personalizzato la pagina...

    [PHP]
    <?

    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    $ora_scadenza = time()-60*60;
    $query = "SELECT nickname,logged,sesso,foto FROM iscritti WHERE logged > '$ora_scadenza'";
    $result = mysql_query($query)

    or (mysql_error());

    if(mysql_num_rows($result) != 0) { ?>

    <div id="contenitore per gente online">
    <ul>

    <?while ($array = mysql_fetch_array($result)) {
    $arr_stripped = array_map("stripslashes", $array);
    list($nickname) = $arr_stripped;
    $str_sesso = $array['sesso'];
    $str_foto = $array['foto']; ?>

    <li>

    <?
    if($array['sesso'] == 'maschio')
    echo "<tr><td><img border="0" src="uomo.gif" width="10" height="10"><font color="#0099FF" face="Comic Sans MS">$nickname<a href="profiloaltri.php?nickname=".$nickname."">visitami...</a><td><a target="_blank" href=\foto/$str_foto><img border="0" src="miniature/$str_foto" width="30" height="30"></td>";
    else
    echo "<tr><td><img border="0" src="donna.gif" width="10" height="10"><font color="#CC99FF" face="Comic Sans MS">$nickname<a href="profiloaltri.php?nickname=".$nickname."">visitami...</a><td><a target="_blank" href=\foto/$str_foto><img border="0" src="miniature/$str_foto" width="30" height="30"></td>"; ?></li>
    <?php } ?>
    </ul>
    </div>
    <?php } ?>
    [/PHP]

    e mi è venuto fuori davvero un bello script:)


  • User Attivo

    ecco adesso ti manca solo di imparare a usare i css per la grafica invece di tag deprecati come <font> o attributi non standard cone height e width, face, color nei tag html 😄

    Invece di target="_blank" devi usare onclick="window.open(this.href);return false"

    keiske

    edit: e poi scusa ma <tr><td>.....</td>?il </tr>? e la <table> dove l'hai aperta e dove la chiudi?

    Alla fine hai ripetuto due righe identiche dove cambia solo una immaginina per maschio o femmina?

    if($array['sesso'] == 'maschio')
    $sesso_gif = "uomo.fig"
    else
    $sesso_gif = "donna.fig"
    echo "<tr><td><img border="0" src="$sesso.gif" width="10" height="10"><font color="#0099FF" face="Comic Sans MS">$nickname<a href="profiloaltri.php?nickname=".$nickname."">visitami...</a><td><a target="_blank" href=\foto/$str_foto><img border="0" src="miniature/$str_foto" width="30" height="30"></td>";

    Saranno solo un po' di byte in meno di "peso" ma è la forma mentis per elaborare algoritmi leggeri che fa la differenzia


  • User Attivo

    @Privacy-Impresa said:

    ecco adesso ti manca solo di imparare a usare i css per la grafica invece di tag deprecati come <font> o attributi non standard cone height e width, face, color nei tag html 😄

    Invece di target="_blank" devi usare onclick="window.open(this.href);return false"

    keiske

    edit: e poi scusa ma <tr><td>.....</td>?il </tr>? e la <table> dove l'hai aperta e dove la chiudi?

    Alla fine hai ripetuto due righe identiche dove cambia solo una immaginina per maschio o femmina?

    if($array['sesso'] == 'maschio')
    $sesso_gif = "uomo.fig"
    else
    $sesso_gif = "donna.fig"
    echo "<tr><td><img border="0" src="$sesso.gif" width="10" height="10"><font color="#0099FF" face="Comic Sans MS">$nickname<a href="profiloaltri.php?nickname=".$nickname."">visitami...</a><td><a target="_blank" href=\foto/$str_foto><img border="0" src="miniature/$str_foto" width="30" height="30"></td>";

    Saranno solo un po' di byte in meno di "peso" ma è la forma mentis per elaborare algoritmi leggeri che fa la differenzia

    onclick="window.open(this.href);return false" questo e codice javascript giusto..?:)purtroppo con il javascript mi sn applicato pochissimo finora...ne so poco o nulla.. window.open mi pare apri una finestra...onclick al clik...
    Hai ragione con i css e molto meglio...ma nn ci ho molto pratica...o meglio nn li ho mai usati..
    Nell if nn mi cambia solo l immagine ma anche il colore del nick ....se e maschio dai questa gif e questo colore...
    else
    dai quest altra gif e quest altro colore..
    Con il tuo codice si semplifica molto...grazie alla variabile in cui hai incluso il valore sesso:)


  • User Attivo

    con window.open ormai apre sempre una tab nuova e non una pagina se usi un browser a tab...

    Allora crei anche $colore = "#xxxxxx"; a seconda dell'if e usi $colore dove c'è il colore 😄

    i css non sono difficili e ti permettono di lavorare un layout grafico con molta più precisione, oltre al fatto che con pochi interventi modifichi tutto invece di scorrere tutto il codice...

    keiske