• User Attivo

    Script php

    Salve a voi tutti,
    Ho in mente di realizzare il seguente script...
    In pratica voglio munire l utente che si iscrive al sito di una propria bacheca dove gli altri utenti possono lasciare dei messaggi ect...
    Creo il form e fin qui' ok...ciò che nn ho ancora capito come fare e se per esempio:
    Io Marco scrivo sulla bacheca di Paolo voglio che nella bacheca di Marco esca scritto che io ho appunto scritto sulla bacheca di Paolo...sembra una banalità ma non ho capito come fare questa cosa...simile a facebook per intenderci meglio...
    Consigli?


  • User

    Perdonami se dico una stupidaggine (è il mio primo intervento...)

    Però non potresti semplicemnte affiancare ad ogni utente una variabile di sessione contenente il numero di risposte effettuate?


  • User Attivo

    Ciao carlitos1982,
    con le variabili di sessione non è fattibile poichè le sessioni sono individuali. L'utente X non può condividere variabili di sessioni con altri utenti.

    Supponiamo che la tabella degli utenti siano così strutturata:
    Utente: ID , username, altreInfo

    Si può creare una tabella Bacheca e la possiamo strutturare così:
    bacheca: ID, utente_ID,writer_ID,testo

    Adesso mettiamo che X voglia scrivere sulla bacheca di Y.
    Si esegue una query inserendo nella tabella Bacheca la seguente tupla:
    -> bacheca: [ID autoincrementato], ID di Y, ID di X, Testo scritto da X

    Per visualizzare la bacheca di Y è sufficiente eseguire una select di questo tipo:
    Query:"SELECT testo,writer_ID as scritto_da FROM bacheca WHERE utente_ID = [ID di Y]"

    Questa può essere una struttura elementare di partenza.

    Ciao 🙂


  • User Attivo

    Si può creare una tabella Bacheca e la possiamo strutturare così:
    bacheca: ID, utente_ID,writer_ID,testo

    Adesso mettiamo che X voglia scrivere sulla bacheca di Y.
    Si esegue una query inserendo nella tabella Bacheca la seguente tupla:
    -> bacheca: [ID autoincrementato], ID di Y, ID di X, Testo scritto da X

    Ciao 🙂

    Ciao,e grazie della risposta
    Volevo chiederti nella tabella bacheca nel campo utente_ID e **writer_ID
    andrò a inserire gli id unici relativi alla tabella utenti..giusto?
    **


  • User Attivo

    @Bazarop said:

    Per visualizzare la bacheca di Y è sufficiente eseguire una select di questo tipo:
    Query:"SELECT testo,writer_ID as scritto_da FROM bacheca WHERE utente_ID = [ID di Y]"

    Questa può essere una struttura elementare di partenza.

    Ciao 🙂

    Qui visualizzo la bacheca di Y con ciò che ho scritto nella sua bacheca,allo stesso tempo però io dovrei visualizzare nella bacheca di X una sorta di notifica che tenga conto che ho scritto nella bacheca di Y
    Del tipo "Hai appena scritto sulla bacheca di Y"


  • User Attivo

    @carlitos1982 said:

    Ciao,e grazie della risposta
    Volevo chiederti nella tabella bacheca nel campo utente_ID e writer_ID
    andrò a inserire gli id unici relativi alla tabella utenti..giusto?

    Giusto.

    @carlitos1982 said:

    Qui visualizzo la bacheca di Y con ciò che ho scritto nella sua bacheca,allo stesso tempo però io dovrei visualizzare nella bacheca di X una sorta di notifica che tenga conto che ho scritto nella bacheca di Y
    Del tipo "Hai appena scritto sulla bacheca di Y"

    Così strutturata la tabella non va più bene, perchè bisognerebbe creare una struttura leggermente più complessa in grado di ordinare cronologicamente elementi diversi.
    Bacheca: ID, user_ID, post_ID, notification_ID, altri tipi e/o dati...
    Post: ID, content,writer_ID
    Notification: ID, content

    notifacion_ID e post_ID fanno riferimento all'azione in bacheca, e di default hanno valore 0.

    ES:
    X scrive sulla bacheca di A

    //serisco il post nel DB
    1.query: " INSERT into Post (content,writer_ID) VALUES ("Ciao, come stai?",[ID di X])"

    //inserisco la notifica nel DB
    2.query: "INSERT into Notification (content) VALUES ("X ha scritto sulla bacheca di Y")"

    //collego il post alla bacheca di Y
    3.query:"INSERT into Bacheca (user_ID,post_ID) VALUES ([ID di Y],[ID del Post scritto]);

    //collego la notifica alla bacheca di X
    4.query:"INSERT into Bacheca (user_ID,notification_ID) VALUES ([ID di X],[ID della notifica])

    Questa può essere una soluzione di PARTENZA.
    Ciao 🙂


  • User Attivo

    Comincio con il progettare la cosa secondo la tua base...se ho problemi posto....:)


  • User Attivo

    Scusami...per conoscere l id del profilo della bacheca su cui sto scrivendo devo usare get?Cioè se io Marco scrivo sulla bacheca di Paolo per ricavarmi Paolo devo usare il Get giusto?


  • User Attivo

    Si, se hai nell'url l'id utente del proprietario della bacheca.

    Per esempio, se sono sulla bacheca di Paolo, potrei avere un url di questo tipo: http ://nwww.miosito.net/?page=wall&profile=IDPAOLO
    Dove al posto di IDPAOLO vi è ovviamente l'id di Paolo.

    Ciao


  • User Attivo

    Sono arrivato qui

    //collego il post alla bacheca di Y
    3.query:"INSERT into Bacheca (user_ID,post_ID) VALUES ([ID di Y],[ID del Post scritto]);

    Come faccio a recuperarmi l id dell ultimo post inserito??

    Avevo fatto cosi'

    [PHP]
    $query = "INSERT into post (content,writer_id) VALUES ('$testo', '$id')";
    $result = @mysql_query($query) or die (mysql_error());
    $ultimo_id = mysql_insert_id();

    [/PHP]
    Mi da valore 0 però $ultimo_id nel database


  • User Attivo

    Strano, se la query va a buon fine, mysql_insert_id() dovrebbe restituirti giusto l'id(chiave primaria autoincrementata) dell'ultimo inserimento.

    Il problema potrebbe essere questo, tratto dal manuale ufficiale:

    "The ID generated for an AUTO_INCREMENT column by the previous query on success, 0 if the previous query does not generate an AUTO_INCREMENT value, or FALSE if no MySQL connection was established. "Post ha un campo id(o il nome che gli hai dato) settato come chiave primaria e con autoincremento?


  • User Attivo

    Ho risolto...ora che ho terminato con gli insert non mi resta che cominciare con la visualizzazione


  • User Attivo

    Ottimo!
    Solo per curiosità, qual'era il problema?


  • User Attivo

    Ho risolto diciamo in maniera "casareccia"
    Ho creato due query separate

    [PHP]
    //qui recupero l id dell ultimo post inserito
    $strsqlultima100="SELECT id FROM post ORDER BY id DESC LIMIT 1";
    $query100=mysql_query("$strsqlultima100") or die("Errore query database: " . mysql_error());

    while ($riga100 = mysql_fetch_array($query100)) {

    $ultimoid=$riga100['id'];

    //inserimento in bacheca
    $query33 = "INSERT into bacheca (user_id,post_id) VALUES ('$idamico','$ultimoid')";
    $result33 = mysql_query($query33) or die (mysql_error());

    }
    }[/PHP]
    Con mysql id mi dava sempre 0 come risultato


  • User Attivo

    Però così sprechi risorse.
    Qualcosa non va nel codice o nel database(molto più probabilmente).

    Se id è con autoincremento, non dovrebbe restituire 0.
    0 lo restituisce solo quando la query eseguita non comprende un campo che viene incrementato automaticamente.


  • User Attivo

    Ora funziona
    [PHP]
    if (isset($_POST['message_wall']))
    {

    //inserisco nella tabella post il contentuto l id unico di chi scrive e l id unico di chi riceve il messaggio
    $testo=addslashes($_POST['message_wall']);
    $query = "INSERT into post (content,writer_id,id_ricevente) VALUES ('$testo', '$id','$idamico')";
    $result = mysql_query($query) or die (mysql_error());
    $ultimo_id = mysql_insert_id();

    //inserisco in bacheca l id dell ultimo post inserito e l id univoco di chi scrive
    $query33 = "INSERT into bacheca (user_id,post_id) VALUES ('$idamico','$ultimo_id')";
    $result33 = @mysql_query($query33) or die (mysql_error());

    [/PHP]