• User

    Php e Graph Api

    Ciao a tutti.
    Ho un sito di eventi e band.
    Per quanto riguarda l'inserimento degli eventi ho pensato di prendere i dati dell'evento direttamente da facebook in modo tale che all'utente basti inserire il link dell'evento di facebook al posto di compilare un lungo form.
    Sono riuscito a prendere i dati dal graph api il problema è che mi prende tutti i dati tranne la descrizione dell'evento.
    Ho usato questo codice:

    dove $link è l'url dell'evento
    [PHP]$position=strpos($link,'eid=')+4;
    $ID=substr($link, $position);
    $url="graph.facebook.com/$ID"; (ho tolto http...x evitare il linkattivo)
    $homepage = file_get_contents($url);
    $obj=json_decode($homepage,true);

    $location=$obj["location"];

    $descrizione=$obj["description"];

    etc...

    $query_sql="INSERT INTO EVENTI VALUES('$conta','$id','$titolo','$band','$loc','$valore','$descrizione','$google ','$face','$logo',1)";
    $result=mysql_query($query_sql,$myconn);[/PHP]

    Se visualizzo i dati passati ci sono ma non li inserisce nel database.
    Ho notato che in un evento la cui descrizione era molto corta (stava su una riga di testo) mi inseriva tutti i dati negli altri casi no...
    Altra cosa notata è che nella query se inserisco un campo vuoto al posto di $descrizione mi inserisce nel database tutto correttamente.

    Spero qualcuno possa aiutarmi.


  • User

    Forse il numero dei caratteri della descrizione supera il massimo consentito che hai impostato alla creazione della tabella ...


  • User

    No quello non dovrebbe essere in quanto già nell'inserimento col form vecchio potevo inserire testi molto lunghi...


  • Consiglio Direttivo

    Ciao mikbr,
    potresti postare due esempi di testo, uno di quelli che inserisce ed uno di quelli che non inserisce?
    Il campo in questione com'è impostato?


  • User

    L'evento che mi ha inserito aveva un testo molto corto("Inizio della rassegna") la maggior parte non me li inseriva. tipo questo:

    "E' iniziato BAREZZI LIVE 2011, uno dei maggiori appuntamenti dedicati alla musica d'autore, ormai a livello nazionale.
    Venerdì 7 ottobre, alle ore 21.00, GUIDO MARIA GRILLO in concerto nello splendido Teatro Comunale di Fontanellato.
    Biglietti in prevendita presso Parma Point o al botteghino.
    Su antoniobarezzilive.it info e l'intero programma degli eventi.
    Serate da non perdere!"

    Se intendi nel database il campo descrizione è impostato come "text"


  • User

    Ho provato a cambiarlo in varchar in quanto i campi del titolo(che ho come varchar sul db) me li inseriva senza problemi ma non è cambiato nulla.
    Ho anche provato anche se dovrebbe già farlo in automatico a fare il

    (string)$descrizione;
    Ma anche in questo caso nulla


  • User

    non capisco...
    ho provato questo evento e me lo inseriva.
    evento con id 183066481767606

    Il fatto che fosse un problema di \n mi è crollato


  • Consiglio Direttivo

    Ciao e scusa il ritardo nella risposta.

    A colpo d'occhio non comprendo neanch'io dove possa essere il problema, fermo restando che il campo dovrà essere TEXT perché con VARCHAR non puoi andare oltre i 255 caratteri.

    Farei un paio di prove:

    • stamparmi a video la query e vedere anche il sorgente
    • usare htmlentities()
    • spezzare in due/tre parti la descrizione che non viene inserita e fare delle prove di inserimento dei tre pezzi separatamente, magari riesci ad isolare il "pezzo" che da noie.

    😉


  • User

    Grazie mille Samyorn! 😃
    Avevo visto poche ore fa che con una pulizia del testo da caratteri strani me lo inseriva. NOn riuscivo però a lasciare apostrofi e caratteri accentati.
    con htmlentities() sembra andare tutto perfettamente!
    Grazie ancora


  • Consiglio Direttivo

    Bene così 😉
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile


  • User Newbie

    Funzione molto interessante, è possibile avere uno snippet, uno script di prova?

    Ho visto che facebook non utilizza più il parametro get "eid=" e che se tento di eseguire una richiesta a un evento ( Es. graph.facebook.com/360454664087492 ) da browser appare questo:

    
    
    {    "error": {       "message": "An access token is required to request this resource.",       "type": "OAuthException",       "code": 104    } }
    

    Potete aiutarmi?
    Grazie mille!!