Angelo Iacubino, Roberto Marmo Creare applicazioni per Facebook Editore FAG, 2009 ISBN 978-88-8233-814-5 File di testo con i principali listati presi dal libro ed elencati nel file http://www.robertomarmo.net/download/codici_creare_applicazioni_con_facebook.txt Versione 28 agosto 2009 Capitolo 3 Paragrafo "Il canvas" $azione = $_GET("ac"); ............. ............. switch($azione) { case 1: echo "CIAO! AZIONE 1"; break; case 2: echo "CIAO! AZIONE 2"; break; case 3: ?> '; $appsecret = ''; $appcallbackurl = ''; // connessione alla piattaforma per recuperare i dati dell'utente $facebook = new Facebook($appapikey, $appsecret); $user = $facebook->require_login(); // gestione della eccezione per session_keys non valido try { // se l'applicazione non θ stata aggiunta allore tenta di farlo if (!$facebook->api_client->users_isAppUser()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { // elimina i cookies e ridirige l'utente verso login $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?>

Primo esempio di applicazione

User ID di utente is: $user

”; // variabile $user definita in appinclude.php per // avere user_id di identificazione utente echo “

Nome di utente is:

”; echo “

Amici di utente:

”; $friends = $facebook->api_client->friends_get(); echo “”; ?> Capitolo 3 Paragrafo "Gestione dati di eventi" '; $appsecret = ''; $Facebook = new Facebook($appapikey, $appsecret); $user_id = $Facebook->require_login(); echo "

Ciao, !

"; echo "

I tuoi amici attuali sono:
"; $friends = $Facebook->api_client->friends_get(); foreach ($friends as $friend) { $d=$Facebook->api_client->users_getInfo($friend, array('last_name', 'first_name', 'birthday')); echo "
"; echo $d[0]['first_name']; echo " "; echo $d[0]['last_name']; echo "(è nato il " . $d[0]['birthday'] . ")"; } echo "

"; ?> echo "

I tuoi amici attuali sono:
"; $friends = $Facebook->api_client->friends_get(); $i = 1; foreach ($friends as $friend) { if ($i == 2) $secondoamico = $friend; $nome=$Facebook->api_client->users_getInfo($friend,array('last_name', 'first_name', 'birthday')); echo "
"; echo $nome[0]['first_name']; echo " "; echo $nome[0]['last_name']; echo " (è nato il " . $nome[0]['birthday'] . ")"; $i++; } $i--; echo "

"; echo "Hai un totale di " . $i . " amici.

"; echo "Nella lista dei tuoi amici, il secondo è "; echo "
"; echo "ed i suoi eventi sono i seguenti:
"; $eventi = $Facebook->api_client->events_get($secondoamico, null, null, null, null); echo "
    "; $i = 1; if ($eventi) { foreach ($eventi as $evento) { if ($i == 3) $terzoevento = $evento['eid']; echo "
  • {$evento['name']} - luogo {$evento['location']}
  • "; $i++; } $i--; echo "
    "; echo "Questo tuo amico ha ben " . $i . " eventi!
    "; $ev1 = $Facebook->api_client->events_get(null, $terzoevento, null, null, null); echo "In particolare, gli utenti che partecipano al terzo evento con id " . $terzoevento . " e nome {$ev1[0]['name']} sono:

    "; $membri = $Facebook->api_client->events_getMembers($terzoevento); echo "

    Attesi

    "; echo "
      "; if ($membri['attending'][0]) { foreach ($membri['attending'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; echo "

    ... in forse:

    "; echo "
      "; if ($membri['unsure'][0]) { foreach ($membri['unsure'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; echo "

    Insicuri:

    "; echo "
      "; if ($membri['not_replied'][0]) { foreach ($membri['not_replied'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; } else { echo "
  • non ci sono eventi per questo tuo amico
  • "; } echo "
"; 12345678 12345679 1234501 1234502 1234503 Capitolo 3 Paragrafo "Gestione dati dei gruppi" Elaborazione dati sui gruppi di utente”; echo “
”; echo “

Elenco dei gruppi iscritti

”; $uid = null; // $uid = xx; per avere i dati solo di utente con user_id xx $gid = null; $groups = $facebook->api_client->groups_get($uid,$gid); echo “
Output grezzo:
”; echo “
”;
print_r($groups);
echo “
”; echo “
Output leggibile:
”; echo “

Gruppi attivi per :

”; echo “
    ”; if($groups){ foreach ($groups as $group) { echo “
  • {$group['name']}
  • ”; } }else{ echo “
  • Utente non si iscrive ai gruppi!
  • ”; } echo “
”; echo “
”; echo “

Informazioni sui gruppi iscritti:

”; $uid = null; $gid = array(ID1, ID2, ...); // richiamare codici identificativi $groups = $facebook->api_client->groups_get($uid,$gid); echo “
Output grezzo::
”; echo “
”;
print_r($groups);
echo “
”; ?> Elaborazione dati sui gruppi”; echo “
”; echo “

Elenco degli iscritti al gruppo (grouped by type)

”; $gid = xxx; // da sostituire con il numero identificativo $uid = null; $members = $facebook->api_client->groups_getMembers($gid); $groups = $facebook->api_client->groups_get($uid, $gid); echo “
Output grezzo:
”; echo “
”;
print_r($members);
echo “
”; echo “
Output leggibile:
”; echo “

Membri di {$groups[0]['name']}

”; echo “

Membri regolari:

”; echo “
    ”; if ($members['members'][0]) { foreach ($members['members'] as $member){ echo “
  • ”; } } else { echo “
  • nessun membro!
  • ”; } echo “
”; echo “

Amministratori:

”; echo “
    ”; if ($members['admins'][0]) { foreach ($members['admins'] as $member) { echo “
  • ”; } } else { echo “
  • Nessun amministratore!
  • ”; } echo “
”; echo “

Ufficiali:

”; echo “
    ”; if ($members['officers'][0]) { foreach ($members['officers'] as $member){ echo “
  • ”; } } else { echo “
  • Nessun ufficiale
  • ”; } echo “
”; echo “

Ancora senza risposta:

”; echo “
    ”; if ($members['not_replied'][0]){ foreach ($members['not_replied'] as $member){ echo “
  • ”; } } else { echo “
  • Nessuno senza risposta
  • ”; } echo “
”; ?> 1234567 1234568 8765432 8765431 1234567 8765431 1234568 Capitolo 3 Paragrafo "Gestione delle foto" api_client->photos_getAlbums('5032',null); foreach ($albums as $album){ $photos = $facebook->api_client->photos_get(null,$album['aid'],null); foreach ($photos as $photo) { echo "{$photo[ "; } } ?> Capitolo 3 Paragrafo "Gestione delle pagine" '); echo “

Esempio uso pages_isAppAdded

”; echo “
”; echo “

Verifica se una applicazione θ stata aggiunta alla pagina

”; echo “
Output grezzo:
”; print_r($facebook->api_client->pages_isAppAdded('6829493713')); echo(''); ?> Capitolo 3 Paragrafo "Gestione delle pagine" echo "Dettaglio in formato grezzo delle info sul tuo PRIMO amico della tua lista

"; $dettagli = array('first_name', 'last_name', 'birthday', 'movies', 'pic', 'status', 'affiliations', 'current_location', 'books', 'music', 'sex', 'about_me'); $dettaglioutente = $Facebook->api_client->users_getInfo($primoamico, $dettagli); echo "
";
print_r($dettaglioutente);
echo "
"; Capitolo 3 Paragrafo "Gestione utenti applicazione" ”; echo “

Esempio di uso chiamata friends_getAppUsers

”; echo “
”; echo “

Obiettivo: trovare gli amici dell'utente corrente che sono utenti di questa applicazione

”; echo “
Risultato con user_id:
”; print_r($facebook->api_client->friends_getAppUsers()); // chiamata echo “
Risultato leggibile:
”; echo “

Gli amici utenti di:

”; $friends = $facebook->api_client->friends_getAppUsers(); echo “
    ”; if($friends){ foreach ($friends as $friend) { echo “
  • ”; } }else{ echo “
  • Nessun amico sta usando l'applicazione.
  • ”; } echo “
”; echo “”; ?> Capitolo 3 Paragrafo "Notifiche e News" $templateid = // ottenuto dal sistema di creazione dei Feed template, prima veniva utilizzata la funzione feed_registerTemplateBundle, ma θ meglio utilizzare la Console di creazione dei Feed template, per una compatibilitΰ verso l'intero sistema di FB ed una piω semplice creazione del template stesso $tokens = array( 'album'=>'the dark side of the moon', 'artist'=>'Pink Floyd', 'images'=>array(array('src'=>'http://www.quituosito/dsmoon.jpg','href'=>'http://www.quituosito/descrizionealbum.htm'))); //$target_ids puς essere un array di user IDs $target_ids = array(); $body_general = ''; $Facebook->api_client->feed_publishUserAction($templateid, $tokens , implode(',', $target_ids), $body_general); Capitolo 3 Paragrafo "Una prima applicazione completa" Principale Azione 1 Azione 2 Bottone 1 require_login(); echo "

Ciao, !

"; echo "

I tuoi amici attuali sono:
"; $friends = $Facebook->api_client->friends_get(); $i = 1; foreach ($friends as $friend) { if ($i == 1) $primoamico = $friend; if ($i == 2) $secondoamico = $friend; $nome = $Facebook->api_client->users_getInfo($friend, array('last_name', 'first_name', 'birthday')); echo "
"; echo $nome[0]['first_name']; echo " "; echo $nome[0]['last_name']; echo " (è nato il " . $nome[0]['birthday'] . ")"; $i++; } $i--; echo "

"; echo "Hai un totale di " . $i . " amici.

"; echo "Nella lista dei tuoi amici, il secondo è "; echo "
"; echo "ed i suoi eventi sono i seguenti:
"; $eventi = $Facebook->api_client->events_get($secondoamico, null, null, null, null); echo "
    "; $i = 1; if ($eventi) { foreach ($eventi as $evento) { if ($i == 3) $terzoevento = $evento['eid']; echo "
  • {$evento['name']} - luogo {$evento['location']}
  • "; $i++; } $i--; echo "
    "; echo "Questo tuo amico ha ben " . $i . " eventi!
    "; $ev1 = $Facebook->api_client->events_get(null, $terzoevento, null, null, null); echo "In particolare, gli utenti che partecipano al terzo evento con id " . $terzoevento . " e nome {$ev1[0]['name']} sono:

    "; $membri = $Facebook->api_client->events_getMembers($terzoevento); echo "

    Attesi

    "; echo "
      "; if ($membri['attending'][0]) { foreach ($membri['attending'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; echo "

    ... in forse:

    "; echo "
      "; if ($membri['unsure'][0]) { foreach ($membri['unsure'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; echo "

    Insicuri:

    "; echo "
      "; if ($membri['not_replied'][0]) { foreach ($membri['not_replied'] as $membro) { echo "
    • "; } } else { echo "....non ce ne sono"; } echo "
    "; } else { echo "
  • non ci sono eventi per questo tuo amico
  • "; } echo "
"; echo "
"; echo "Dettaglio in formato grezzo delle info sul tuo PRIMO amico della tua lista

"; $dettagli = array('first_name', 'last_name', 'birthday', 'movies', 'pic', 'status', 'affiliations', 'current_location', 'books', 'music', 'sex', 'about_me'); $dettaglioutente = $Facebook->api_client->users_getInfo($primoamico, $dettagli); echo "
";
print_r($dettaglioutente);
echo "
"; } else { switch($azione) { case 1: echo "CIAO! AZIONE 1"; break; case 2: echo "CIAO! AZIONE 2"; break; case 3: ?> "; } ?> Capitolo 4 CREATE TABLE videogioco ( idgioco INT UNSIGNED NOT NULL AUTO_INCREMENT, nomegioco VARCHAR(250) NOT NULL, anno INTEGER UNSIGNED NOT NULL, produttore VARCHAR(200) NOT NULL, aggiuntoil TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (idgioco) ); CREATE TABLE recensione ( recid INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, fbuid BIGINT UNSIGNED NOT NULL, recensione TEXT, idgioco INTEGER UNSIGNED NOT NULL, datarecensione TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (recid), FOREIGN KEY (idgioco) REFERENCES videogioco (idgioco) ); INSERT INTO videogioco(nomegioco, anno, produttore) VALUES ('Super Mario Bros', 1985, 'Nintendo'); ...... INSERT INTO recensione(fbuid, recensione, idgioco) VALUES (123456788 // il proprio user_id di fb, 'Gioco molto bello, ma non rilassante!', 1); require_login(); $conn = mysql_connect(, , ); mysql_select_db(); $rs1 = “SELECT v.nomegioco, r.recid, r.datarecensione, r.fbuid, rc.rtot FROM recensione r, videogioco v, (SELECT count(*) AS rtot FROM recensione) AS rc WHERE r.idgioco = g.idgioco ORDER BY datarecensione DESC”; $recensioni_recenti = mysql_query($rs1); $quante_recensioni = mysql_fetch_row($recensioni_recenti); $giochi1 = “SELECT * FROM videogioco ORDER BY aggiuntoil DESC”; $giochi_recenti = mysql_query($giochi1); echo “

Recensioni

”; while ($righe = mysql_fetch_assoc($recensioni_recenti)) { echo '' . $righe['nomegioco'] . '
'; echo 'inserita il ' . $righe['datarecensione']; $fql1 = “SELECT first_name, last_name FROM user WHERE uid=” . $righe['fbuid']; $re1= $fb->api_client->fql_query($fql); echo “ da “ . $re1[0]['first_name'] . “ “ . $re1[0]['last_name']; echo “
”; } Capitolo 6 paragrafo "Esempio in C++" #define API_KEY "YOUR_API_KEY" #define SECRET "YOUR_SECRET" #include "Facebookrestclient.h" #include #include #include #include int main(int argc, char** argv) { QCoreApplication app(argc, argv); FacebookRestClient client = FacebookRestClient(QString(API_KEY), QString(SECRET)); client.setIsDesktop(true); QString auth = client.auth_createToken(); printf("http://www.facebook.com/login.php?v=1.0&api_key= %s&auth_token=%s\n", API_KEY, auth.toUtf8().data()); getchar(); client.auth_getSession(auth); .......... .......... return 0; } Capitolo 7 Paragrafo "Costruire la pagina sociale" Pagina Cross-Domain Receiver Esempio Facebook Connect

Benvenuti!

var corpo = null; var titolo= "Come valuto la pizzeria?"; var messaggio = {value: "La pizzeria θ "}; FB.ensureInit(function() { FB.Connect.showFeedDialog(, template_data, null, titolo, null, FB.RequireConnect.require, FB.RequireConnect.promptConnect, titolo, messaggio); }); Capitolo 7 Paragrafo "Gestione degli eventi" CREATE TABLE `compiti` ( `idcompito` bigint(20) NOT NULL auto_increment, `idev` bigint(20) default NULL, `idcollaboratore` bigint(20) default NULL, `stato` int(10) default NULL, `nomecompito` varchar(250) default NULL, PRIMARY KEY (`idcompito`), KEY `eventi_key` (`idev`), CONSTRAINT `compiti_ibfk_1` FOREIGN KEY (`idev`) REFERENCES `eventi` (`idev`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1; CREATE TABLE `eventi` ( `idev` bigint(20) NOT NULL auto_increment, `capo` bigint(20) default NULL, `nomeev` varchar(250) default NULL, `dataini` date default NULL, `datafine` date default NULL, `descrizione` text, PRIMARY KEY (`idev`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; CREATE TABLE `logstato` ( `idcompito` bigint(20) default NULL, `dataora` datetime NOT NULL, `stato` int(10) NOT NULL, PRIMARY KEY (`dataora`,`stato`), KEY `compiti_key` (`idcompito`), CONSTRAINT `logstato_ibfk_1` FOREIGN KEY (`idcompito`) REFERENCES `compiti` (`idcompito`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=latin1; "; echo "Con questa applicazione puoi gestire gli eventi che vuoi realizzare insieme con i tuoi collaboratori."; echo "

"; echo "

"; echo "Scegli dai link in alto l'azione che vuoi intraprendere!"; echo "

"; if ($fbid > 0) { $q1 = "SELECT idev, nomeev, descrizione FROM eventi WHERE capo=" . $fbid; $sq1 = mysql_query($q1); echo "

Sei il Capo dei seguenti eventi:

 

"; while ($dato02 = mysql_fetch_assoc($sq1)) { $t1 = $dato02["nomeev"]; $t2 = $dato02["descrizione"]; echo ""; echo ""; echo $t1; echo ""; echo $t2; echo ""; echo "

Manda un'invito ad altri tuoi amici per collaborare su questo evento

"; echo ''; echo ''; echo " "; echo " "; $q2 = "SELECT idcollaboratore, nomecompito, stato FROM compiti WHERE idev=" . $dato02["idev"]; $sq2= mysql_query($q2); echo "

Collaboratori

"; echo "
    "; while ($dato03 = mysql_fetch_assoc($sq2)) { echo "
  • "; echo "

     "; echo $dato03["nomecompito"] . " "; echo "  completato a " . $dato03["stato"] ."%

    "; echo "
  • "; } echo "
"; } } } function aggiungicompiti($fbid) { echo "

"; echo "Aggiungi compiti agli eventi"; echo "

"; echo ''; $q1 = "SELECT idev, nomeev, descrizione FROM eventi WHERE capo=" . $fbid; $sq1 = mysql_query($q1); $i = 1; while ($dato02 = mysql_fetch_assoc($sq1)) { $t1 = $dato02["nomeev"]; $t2 = $dato02["descrizione"]; echo "

Nome evento: "; echo $t1; echo "   Descrizione: "; echo $t2; echo "

"; echo ''; echo ''; $i++; } echo ' '; echo ''; echo ' '; echo ' '; echo ' '; echo '
'; } function barraprogresso($valore) { if ($valore>0 && $valore<10) $p=1; if ($valore>=10 && $valore<20) $p=2; if ($valore>=20 && $valore<30) $p=3; if ($valore>=30 && $valore<40) $p=4; if ($valore>=40 && $valore<50) $p=5; if ($valore>=50 && $valore<60) $p=6; if ($valore>=60 && $valore<70) $p=7; if ($valore>=70 && $valore<80) $p=8; if ($valore>=80 && $valore<90) $p=9; if ($valore>=90) $p=10; echo "0% |"; for ($i=1; $i<=$p; $i++) { echo "X"; } for ($i=1; $i<=(10-$p); $i++) { echo "_"; } echo "| 100%"; } require_once 'client/facebook.php'; ?> Home servizio Crea Evento Aggiungi Compiti a Evento Collabora per l'evento Status Eventi a cui partecipo Logs compiti require_login(); $userdbsql = "UTENTE_MYSQL"; $pwdbsql = "PASSWORD_MYSQL"; $connmysql = mysql_connect('localhost',$userdbsql,$pwdbsql) or die("non posso connettermi al db di MySQL"); mysql_selectdb('testfb',$connmysql); if (!isset($azione) || $azione == 0) { defaction($user_id); } else { switch($azione) { case 1: echo "

CREA EVENTO

"; ?> api_client->friends_get(); $i = 1; foreach ($friends as $friend) { $nome = $facebook->api_client->users_getInfo($friend, array('last_name', 'first_name', 'birthday')); echo ''; echo ''; $i++; } $i--; echo ''; ?> COLLABORA PER L'EVENTO"; $dataoggi = date('Y-m-d'); $q1 = "SELECT nomeev,capo,descrizione,idcompito,idcollaboratore,nomecompito,compiti.idev FROM compiti LEFT JOIN eventi ON compiti.idev = eventi.idev WHERE compiti.idcollaboratore = 0 AND eventi.capo <> " . $user_id . " AND eventi.datafine > '" . $dataoggi . "'"; $sq1 = mysql_query($q1); ?> '; echo ""; echo ""; echo $dato04["nomeev"] . " - Capo: " . " "; echo ""; echo "Compito: " . $dato04["nomecompito"]; echo ""; } ?>

 

STATUS PER GLI EVENTI A CUI PARTECIPO"; $q1 = "SELECT idcollaboratore, nomecompito, stato, nomeev,idcompito FROM compiti LEFT JOIN eventi ON compiti.idev = eventi.idev WHERE idcollaboratore = " . $user_id; echo ''; $i = 1; $sq1= mysql_query($q1); while ($dato06 = mysql_fetch_assoc($sq1)) { echo "

"; echo $dato06["nomeev"]; echo " - compito: "; echo $dato06["nomecompito"]; echo " - stato attuale: "; echo $dato06["stato"] . "% - nuovo stato  "; echo ''; echo ''; echo "

"; $i++; } $i--; echo ''; ?>
0) { $creaquery = "INSERT INTO compiti (idev,idcollaboratore,stato,nomecompito) VALUES (" . $idgenerato . ", " . $dato02 . ", 0, '" . $dato01 . "')"; $sq1 = mysql_query($creaquery); } } defaction($user_id); break; case 5: aggiungicompiti($user_id); break; case 6: $verificaform = $_POST["fb_sig_captcha_grade"]; if ( $verificaform == 1 ) { $codicecompito = $_POST["sceltacompito"]; if (isset($codicecompito) || $codicecompito>0) { $q1 = "UPDATE compiti SET idcollaboratore=" . $user_id . " WHERE idcompito=" . $codicecompito; $sq1= mysql_query($q1); echo "

Grazie per la tua adesione!

"; echo "

Cerca di completare il tuo compito per tempo!

"; } else { echo "

Peccato! Non hai voluto scegliere nessun compito per aiutarmi!

"; echo "

Saragrave; per la prossima volta!

"; } } else { // ERRORE INSERIMENTO CAPTCHA echo "

ERRORE INSERIMENTO VERIFICA!!

"; echo "

Scegli nuovamente la funzione di Collaborazione ad un evento

"; } break; case 7: $nagg = $_POST["numaggiunte"]; for ($k=1; $k<=$nagg; $k++) { $pr1 = "nuovocompito" . $k; $pr2 = "idevaggcomp" . $k; $dato01 = $_POST[$pr1]; $dato02 = $_POST[$pr2]; if (strlen($dato01) > 0) { $creaquery = "INSERT INTO compiti (idev,idcollaboratore,stato,nomecompito) VALUES (" . $dato02 . ", 0, 0, '" . $dato01 . "')"; $sq1 = mysql_query($creaquery); } } echo "

Avevi bisogno di altri compiti per i tuoi eventi?

"; echo "

Bene!

"; break; case 8: $dataora = date('Y-m-d h:m:s'); $nummodi = $_POST["nummodifiche"]; for ($k=1; $k<=$nummodi; $k++) { $pr1 = "nuovostato" . $k; $pr2 = "idcompito" . $k; $nuovostato = $_POST[$pr1]; $idcompito = $_POST[$pr2]; if ($nuovostato > 0) { $q1 = "UPDATE compiti SET stato = " . $nuovostato . " WHERE idcompito=" . $idcompito; $sq1 = mysql_query($q1); $q2 = "INSERT INTO logstato (idcompito, dataora, stato) VALUES (" . $idcompito . ", '" . $dataora . "', " . $nuovostato . ")"; $sq2 = mysql_query($q2); } } echo "

Grazie per aver aggiornato lo stato del tuo compito!

"; break; case 9: $q1 = "SELECT idcollaboratore, nomecompito, stato, nomeev,idcompito FROM compiti LEFT JOIN eventi ON compiti.idev = eventi.idev"; $sq1= mysql_query($q1); echo ""; while ($v1 = mysql_fetch_assoc($sq1)) { echo ""; } echo "
"; echo $v1["nomecompito"]; echo ""; echo ""; echo ""; barraprogresso($v1["stato"]); echo "
"; break; default: defaction($user_id); break; } echo "
"; } ?>