DIV\`s\` dinamicamente no Browser.
Transcrição
DIV\`s\` dinamicamente no Browser.
Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by Sérgio Maia - 2007/11/20 16:46 _____________________________________ Estou a tentar implementar uma aplicação que deverá exibir algumas DIV's de maneira dinâmica, semelhante a Página Principal do Technorati (www.technorati.com), onde os dados exibidos dentro das DIV's serão oriundos do BD, sendo estes atualizados em tempo real a cada nova inserção de dados pelo utilizador. Ou seja, melhor explicando, toda vez que o utilizador inserir os dados no BD, estes serão exibidos na Pagina Principal da aplicação dinâmicamente. Gostaria da saber como poderia fazer isso utilizando PHP??? Desde já agradeço. Sérgio Maia. ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by miguelp - 2007/11/21 05:35 _____________________________________ olá sergio, vamos la ver se eu percebi bem o que queres fazer, 1 tens de pesquisar a base de dados e limitar os resultados. no caso da technorati o que eles fazem é simples têm um select deste genero: SELECT * FROM 'posts' ORDER BY 'id' DESC LIMIT 0,5 ou claro, algo similar. recolhes os resultados num array (mysql_fetch_array) e começas por criar uma div principal, que vai segurar todo o conteudo e uma lista ordenada: <div id="conteudo"> <ol> </ol> </div> até aqui tudo ok e bastante simples simples, vamos imaginar que recebeste da base de dados os dados e os armazenaste num array chamado $dbresult, algo deste genero: Array ( => Array ( => titulo1 => 123456789abcd => conteudo 1 bla bla bla ) => Array ( => titulo 2 => 248585545abcd => conteudo 2 bla bla bla ) => Array ( => titulo 3 => 787443516abcd => conteudo 3 bla bla bla ) => Array ( PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33 => titulo 4 => 164646558abcd => conteudo 4 bla bla bla ) => Array ( => titulo 5 => 987653215abcd => conteudo 5 bla bla bla ) ) ok então o que nos resta fazer para mostrar os resultados é algo tipo: <?php function buildPostList(){ // Aqui teriamos de colocar a chamada a DB e construir o array com os dados..... // o que nao vou fazer para nao tornar isto muito grande presumo que essa parte será simples de fazeres. // aqui armazenamos o ultimo ID para mais tarde verificarmos se existem alterações $maxId = $dbresult; // agora vamos construir o HTML da listagem //ok aqui garantimos que a variavel começa sempre sem conteudo $conteudo = ''; //vamos abrir a lista $conteudo .= '<ol>'; for($i=0; $i < count($dbresult); $i++) { // vamos iniciar o elemento da lista, e incluir o conteudo desse elemento numa div interna $coneudo .= '<li><div id="item">'; //agora vamos listar o titulo o link e o conteudo deste item vou nomear cada uma das divs com nomes diferentes desta forma podes aplicar a formatação diferente a cada uma via CSS assim como o seu posicionamento $conteudo .= '<div id="titulo">' . $dbresult . '</div>'; $conteudo .= '<div id="link"><a href="post.php?ref=' . $dbresult . '"> titulo link </a></div>'; $conteudo .= '<div id="conteudo">' . $dbresult . '</div>'; $conteudo .= '</div></li>'; } //vamos terminar a nossa lista $conteudo .='</ol>'; //vamos retornar o resultado return $conteudo; } //ok chamemos a esta div o involocru do nosso conteudo echo '<div id ="conteudo">'; //mostremos o conteudo echo buildPostList(); //vamos fechar a div echo '</div>'; //ok o que nos resta agora? passar o valor da variavel $maxId para uma variavel de javascript para que possamos com uma função periodica e utilizando ajax verificar se a nossa DB foi alterada echo '<script type="text/javascript"> lastid = ' . $maxId .'; </script>'; // ok agora so te falta colocares no header um include a um ficheiro JS com a função de executar pedidos de X em X tempo a DB a ver se o ultimo ID é diferente da var lastid se for diferente usas um //callback á função buildPostList para te actualizar a div conteudo podes fazer isso facilmente usando a libraria prototype.js ?> PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33 espero ter respondido a tua duvida. se precisares de mais ajuda ou esclarecimentos, ou caso eu nao tenha percebido bem a tua duvida diz. abraço, Miguel Pinto ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by tiago - 2007/11/22 00:35 _____________________________________ Viva Sérgio, a technorati usa a pseudo-tecnologia AJAX (Asynchronous Javascript And XML) para efectuar a actualização em tempo real. Aconselho-te a veres no www.google.pt sobre: prototype (a última versão desta framework já suporta AJAX nativamente), Sajax (uma framework muito simplicista feita também em PHP). Se conseguires resolver o teu problema com as informações acima indicadas (conjuntamente com o que o miguelp disse), perfeito. Caso contrário, avisa que eu coloco pequenos exemplos funcionais/simples para tentar resolver as tuas dúvidas. Abraços, Tiago Lopes ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by Sérgio Maia - 2007/11/23 02:26 _____________________________________ Miguel, Suas dicas serão de grande valia, olhando agora, acredito ser isso mesmo o que preciso.Obrigado. Tiago, Já estou a consultar as referências indicadas por ti, obrigado. ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by miguelp - 2007/11/24 07:37 _____________________________________ caro sergio, Sendo que era isso que pretendia então aqui vai mais umas dicas, vamos pegar na função e vamos coloca-la separado num ficheiro chamado por exemplo "postsUpdater.php" e o que resta do código que fizemos anteriormente vamos colocalo num ficheiro chamado por exemplo "index.php", desta forma vamos fazer uma melhor separação entre o "User interface" e a parte de lógica da aplicação. Agora vamos pegar no postsUpdater.php e vamos acrescentar umas coisas: <?php // vamos verificar qual o valor de Update para sabermos o que actualizar // neste caso é so uma função mas imaginemos que mais tarde queres acrescentar outras funções para // outras secções podes usar o mesmo codigo sem teres de andar a alterar a estrutura. if(isset($_GET)){ switch ($_GET){ case "posts": buildPostList(); break; } PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33 } function buildPostList(){ // Aqui teriamos de colocar a chamada a DB e construir o array com os dados..... // o que nao vou fazer para nao tornar isto muito grande presumo que essa parte será simples de fazeres. // aqui armazenamos o ultimo ID para mais tarde verificarmos se existem alterações $maxId = $dbresult; //Ok aqui vamos comparar os IDS e sempre que o ID que vem do utilizador for igual ou // inferior ao da base de dados a função nao vai retornar nada, caso contrario, ou caso // o array $_POST nao contenha um elemento lastid retorna o novo HTML com os novos posts if((isset($_POST)&($_POST <= $maxId)){ return false; }else{ // agora vamos construir o HTML da listagem //ok aqui garantimos que a variavel começa sempre sem conteudo $conteudo = ''; //vamos abrir a lista $conteudo .= '<ol>'; for($i=0; $i < count($dbresult); $i++) { // vamos iniciar o elemento da lista, e incluir o conteudo desse elemento numa div interna $coneudo .= '<li><div id="item">'; //agora vamos listar o titulo o link e o conteudo deste item vou nomear cada uma das divs com nomes //diferentes desta forma podes aplicar a formatação diferente a cada uma via CSS assim como o seu //posicionamento $conteudo .= '<div id="titulo">' . $dbresult . '</div>'; $conteudo .= '<div id="link"><a href="post.php?ref=' . $dbresult . '"> titulo link </a></div>'; $conteudo .= '<div id="conteudo">' . $dbresult . '</div>'; $conteudo .= '</div></li>'; } //vamos terminar a nossa lista $conteudo .='</ol>'; // ok passei $conteudo .='<script type=\"text/javascript\"> lastid = ' . $maxId .'; </script>'; //vamos retornar o resultado return $conteudo; } } ?> e por fim vamos ver como fica o index.php <?php //incluimos o ficheiro que contem as funções include("postsUpdater.php"«»); //iniciamos a variavel dos posts $maxId = 0; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="javascript/prototype.js"></script> <script type="text/javascript" src="javascript/effects.js"></script> <script type="text/javascript"> // vamos iniciar a variavel que vai aculumar o maxID vindo da BD var lastid = 0; /*O k aqui vamos usar umas das funções do prototype e vamos dizer que PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33 queremos executar o pedido ao ficheiro postsUpdater.php de 300 em 300 segundos, e que queremos que apenas a div 'conteudo' seja actualizada, o metodo a utilizar é post. O que vai acontecer aqui é que a div conteudo mas apenas ela vai ser actualizada de 5 em 5 minutos. */ new Ajax.PeriodicalUpdater('conteudo', '/postsUpdater.php?update="Posts"', { method: 'post', frequency: 300, decay: 2 , parameters: { lastid: lastid }, }); </script> </head> <body> <h1> Ok aqui ficaria Mais HTML</h1><br /> <div id ="conteudo"> <?php /* executamos esta função aqui porque caso o utilizador nao tenha activado o JS a listagem será apresentada na mesma apenas nao executá as actualizações dinâmicas. */ echo buildPostList(); ?> </div> </body></html> e com estes 2 pequenos scripts penso que tens algo muito similar ao que pretendias... vê la se assim serve, se tiveres duvidas ou questões avisa. ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by Sérgio Maia - 2007/12/07 02:33 _____________________________________ Viva Miguel, Como sempre, acertastes tudo o que eu precisava. Estou implementando conforme suas instruções e tudo caminha para aquilo que preciso em minha aplicação. Mais uma vez agradeço o apoio.;) Sérgio Maia. ============================================================================ Re:Exibição de \'DIV\'s\' dinamicamente no Browser. Posted by miguelp - 2007/12/10 16:46 _____________________________________ Viva sérgio, Ainda bem que pude ser útil, é para isso que cá estamos para ajudar e tirar duvidas. a comunidade foi criada exactamente com o objectivo de unir os programadores de PHP e todos os que pretendem ajudar, aprender e partilhar conhecimentos e experiencias. Abraço, PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33 Miguel Pinto ============================================================================ PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 30 September, 2016, 04:33
Documentos relacionados
PDF, AJUDA!
procurei.Agora é o seguinte,como faço para imprimir esse mesmo resultado para pdf.Ja tive a ver várias librarias mas não sei como começar.Eu sei fazer pdf,s mas so não consigo nem sei é como vou bu...
Leia mais