1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Combinar JavaScript com MySQL

Discussão em 'Web Development' iniciada por khaluh, 18 de Junho de 2007. (Respostas: 12; Visualizações: 17683)

  1. khaluh

    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: 18 de Junho de 2007
  2. fil79

    fil79 Power Member

    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....
     
  3. khaluh

    khaluh Power Member

    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?
     
  4. K0mA

    K0mA Power Member

    Como já disseram atrás javascript corre do lado do cliente e não do servidor pelo que não dá.
     
  5. QuickFire

    QuickFire What is folding?

  6. khaluh

    khaluh Power Member

    Viva

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

    Ao dizer
    queria dizer uma maneira alternativa de fazer o mesmo, então sem o JavaScript.

    E fazendo apenas com PHP, é possivel?
     
  7. QuickFire

    QuickFire What is folding?

    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 ?
     
  8. khaluh

    khaluh Power Member

    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).
     
  9. khaluh

    khaluh Power Member

    Quickfire:

    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:


    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:
    Mas obrigado na mesma
     
    Última edição: 18 de Junho de 2007
  10. QuickFire

    QuickFire What is folding?

    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
     
  11. khaluh

    khaluh Power Member

    Obrigado, desconhecia o marquee 8|

    Vou experimentar a ver se funciona como pretendo.
     
  12. khaluh

    khaluh Power Member

    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:

    Isto eu sei, mas neste caso concreto
    PHP:
    echo "{$ult['pub_resumo']} <br />";
    como é que faço?
     
  13. QuickFire

    QuickFire What is folding?

    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 ;)
     

Partilhar esta Página