Combinar JavaScript com MySQL

khaluh

Power Member
Viva

Estou a fazer um site onde tenho de colocar um pequeno sistema de noticias e o que quero saber é se é possivel fazer uma combinação de JavaScript (JS) com MySQl, de modo ao JS ir buscar as noticias mais recentes ao MySQL e ao clicar no resumo, abrir uma página com a noticia inteira.

O código que tenho em JS ( e pretendo que onde se veem as instruções fcontent[X] o conteudo seja o resultado da pesquisa à base de dados, mostrado depois do código JS ):

Código:
<script type="text/javascript">
                                            // Fading Menu
            var delay = 1500; //set delay between message change (in miliseconds)
            var maxsteps=30; // number of steps to take to change from start color to endcolor
            var stepdelay=50; // time in miliseconds of a single step
            //**Note: maxsteps*stepdelay will be total time in miliseconds of fading effect
            var startcolor= new Array(255,255,255); // start color (red, green, blue)
            var endcolor=new Array(0,0,0); // end color (red, green, blue)
            var fcontent=new Array();
            begintag='<div style="font: normal 14px Arial; text-align:justify; padding: 5px; >'; //set opening tag, such as font declarations
                fcontent[0]=" 1. Lorem ipsum dolor sit amet, consectetur adipscing elit, sed diam nonnumy eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</a>";
                fcontent[1]=" 2. Lorem  adipscing elit, sed diam nonnumy eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.";
                fcontent[2]=" 3. Lorem ipsum dolor sit amet,  sed diam nonnumy eiusmod tempor incidunt ut labore et dolore magna aliquam erat volupat.</a>";
            closetag='</div>';
            var fwidth='140px'; //set scroller width
            var fheight='140px'; //set scroller height
            var fadelinks=1;  //should links inside scroller content also fade like text? 0 for no, 1 for yes.
            ///No need to edit below this line/////////////////
            var ie4=document.all&&!document.getElementById;
            var DOM2=document.getElementById;
            var faderdelay=0;
            var index=0;
            
            //function to change content
            function changecontent()
            {
            if (index>=fcontent.length)
            index=0
            if (DOM2)
            {
                document.getElementById("fscroller").style.color="rgb("+startcolor[0]+", "+startcolor[1]+", "+startcolor[2]+")"
                document.getElementById("fscroller").innerHTML=begintag+fcontent[index]+closetag
                if (fadelinks)
                      linkcolorchange(1);
                colorfade(1, 15);
              }
             else if (ie4)
            document.all.fscroller.innerHTML=begintag+fcontent[index]+closetag;
              index++
            }

            function linkcolorchange(step)
            {
            var obj=document.getElementById("fscroller").getElementsByTagName("A");
            if (obj.length>0)
            {
                for (i=0;i<obj.length;i++)
                obj[i].style.color=getstepcolor(step);
            }
            }

            var fadecounter;
            function colorfade(step) 
            {
            if(step<=maxsteps) 
            {    
                document.getElementById("fscroller").style.color=getstepcolor(step);
                if (fadelinks)
                  linkcolorchange(step);
                step++;
                fadecounter=setTimeout("colorfade("+step+")",stepdelay);
              }
            else
            {
                clearTimeout(fadecounter);
                document.getElementById("fscroller").style.color="rgb("+endcolor[0]+", "+endcolor[1]+", "+endcolor[2]+")";
                setTimeout("changecontent()", delay);
            }   
        }

        function getstepcolor(step) 
        {
          var diff
          var newcolor=new Array(3);
          for(var i=0;i<3;i++) 
          {
            diff = (startcolor[i]-endcolor[i]);
            if(diff > 0) 
            {
            newcolor[i] = startcolor[i]-(Math.round((diff/maxsteps))*step);
              }
              else 
              {
              newcolor[i] = startcolor[i]+(Math.round((Math.abs(diff)/maxsteps))*step);
              }
           }
             return ("rgb(" + newcolor[0] + ", " + newcolor[1] + ", " + newcolor[2] + ")");
        }

        if (ie4||DOM2)
          document.write('<div id="fscroller" style="border:0px solid black; width:'+fwidth+';height:'+fheight+'"></div>');

        if (window.addEventListener)
        window.addEventListener("load", changecontent, false)
        else if (window.attachEvent)
        window.attachEvent("onload", changecontent)
        else if (document.getElementById)
        window.onload=changecontent
 </script>
A pesquisa à base de dados é a seguinte:
Código:
$sql =     "
                SELECT resumo 
                FROM noticias 
                WHERE ver = '1' 
                ORDER BY id DESC 
                LIMIT 3
            ";
É possivel fazer isto? Como?

Obrigado
 
Última edição:
Javascript é uma linguagem do lado do cliente, não interage com bases de dados..para fazeres o que pretendes tens dwe usar uma linguagem de servidor, como o PHP,asp,asp.net,jsp....
 
Fil79

Obrigado pela resposta e pelo tempo dispendido na mesma

Essa parte eu já sabia, mas tinham-me dito que era possivel combinar as 2.

Então, como posso fazer o que pretendo? Alguem sabe?
 
Viva

Acabei por não me explicar correctamente, da 2ª vez.

Ao dizer
Então, como posso fazer o que pretendo? Alguem sabe?
queria dizer uma maneira alternativa de fazer o mesmo, então sem o JavaScript.

E fazendo apenas com PHP, é possivel?
 
Claro que sim :)
Em PHP resume-se a ires buscar os dados à base de dados, fazer um trim para mostrares apenas um excerto da notícia, e fazer um link, para outra página onde mostras a notícia completa para o id pretendido :)

EDIT:
Depois de olhar para a tua query SQL dá para ver que já tens um campo para o resumo por isso não precisas do Trim :)

Esse nick não tem nada a ver com o "Na Roça com os Tachos" não :P ?
 
O que pretendo fazer é do género do encontrado em www.foresp.pt , onde aparecem as noticias.

Para que as noticias sejam "consultadas" na BD e apareçam ali (numa funcionalidade com o mesmo efeito).
 
Quickfire:

quickfire disse:
Esse nick não tem nada a ver com o "Na Roça com os Tachos" não :P ?
Não (apesar de nunca me terem falado nessa, falaram foi no membro dos Xutos :-D que tem o nome que se pronuncia dessa forma ), é o nome da minha cadela :lol:


quickfire disse:
Em PHP resume-se a ires buscar os dados à base de dados, fazer um trim para mostrares apenas um excerto da notícia, e fazer um link, para outra página onde mostras a notícia completa para o id pretendido :)
Essa parte eu sei, eu pretendia era ter algo a mostrar os resumos do que de mais recente há nas noticias, como referi no post em que digo:
khaluh disse:
O que pretendo fazer é do género do encontrado em www.foresp.pt , onde aparecem as noticias.
Mas obrigado na mesma
 
Última edição:
Exacto, segundo o que me pareceu o site que mostraste é algo deste género:

MySQL
noticias
- id
- titulo
- conteudo
(adicionar mais a gosto :P)

PHP

Código:
<?php
$query = mysql_query("SELECT titulo from noticias ORDER by id DESC");
while ($row = mysql_fetch_array($query))
{
  echo $row['titulo']."<br />";
}
?>
Para aquilo ter o efeito de "rodar", tens de por tudo dentro de um marquee.

Se for para ires buscar as notícias a outro site já envolve mais trabalho, dependendo da forma como as fores buscar :P
 
Viva

1/2 problema resolvido.

PHP:
<?php 
    include 'ligar_a_bd.php';
        
            $sql =     "
                SELECT * 
                FROM publicacoes 
                WHERE pub_ver = '1' 
                ORDER BY pub_id DESC 
            ";
            
            $ultimas = mysql_query($sql)  
            or  die ("Não foi possível realizar a consulta");
?>
            <marquee behavior="scroll" direction="up" align="absmiddle" scrollamount="3">
<?php 
            while ($ult=mysql_fetch_array($ultimas))
            {
                echo "{$ult['pub_resumo']} <br />";
            }
?>
            </marquee>
A outra metade:

quickfire disse:
e fazer um link, para outra página onde mostras a notícia completa para o id pretendido
Isto eu sei, mas neste caso concreto
PHP:
echo "{$ult['pub_resumo']} <br />";
como é que faço?
 
Neste caso fazes algo do género:
Código:
echo "<a href='ler_noticia.php?id=".$ult['id']."'>".$ult['pub_resumo']."</a>";
Em seguida crias um ficheiro, com o nome ler_noticia.php (por exemplo), onde fazes uma query do género:
Código:
$id = $_GET['id'];
if (is_numeric($id))
  $query = mysql_query("SELECT * from publicacoes WHERE pub_ver = '1' AND id = '".$id."' LIMIT 1");


Onde podes mostrar o conteúdo da notícia completa ;)
 
Back
Topo