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

Javascript -> Apresentar informação variável de uma página para outra

Discussão em 'Programação' iniciada por Kwan, 14 de Dezembro de 2012. (Respostas: 25; Visualizações: 1968)

  1. Kwan

    Kwan Power Member

    Boas pessoal,

    Tenho o seguinte código que basicamente me cria uma tabela com alguns números. Se eu clicar num dos números dessa tabela ele abre-me uma nova página html chamada "new.html".

    Código:
    var text = ""
    text = "<form name=calForm>"
    text += "<table border=150>"
    aa = 0
        for (*****=0;*****<=5;*****++){ //este ciclo preenche os dias do calendário
            text += "<tr>"
            for (ii=0;ii<=6;ii++){
                text += "<td align=center><span id=sp" + aa + " [COLOR=#ff0000][B]onClick=\"location.href='new.html'\[/B][/COLOR]"></span> </td>"    
                aa += 1
            }
            text += "</tr>"
        }
    
    text += "</table>"
    text += "</form>"
    
    Eis o meu problema, gostaria que ao clicar num dos números da tabela, para além de me abrir a pagina "new.html" conseguisse também imprimir na "new.html" o numero onde cliquei. Não sei muito bem onde nem como fazer isso.

    Alguém me pode ajudar?
     
  2. fmbp

    fmbp Power Member

    onClick=\"location.href='new.php?nome_variavel=" + aa + "'\">

    em vez de new.html tens de o chamar new.php nesse ficheiro escreves:

    <?php
    $nome_variavel= $_GET['nome_variavel'];
    echo $nome_variavel;
    ?>
     
  3. pesta

    pesta Power Member

    Navega para new.html?page=NUMERO
     
  4. Kwan

    Kwan Power Member

    Não funcionou. A variavel não foi apresentada na pagina new. :(
     
  5. calferreira

    calferreira Power Member

    Kwan, experimenta usar a função $_REQUEST['nome_variavel'];

    Falta-te no form o método que pretendes (Get ou Set).
     
    Última edição: 17 de Dezembro de 2012
  6. Kwan

    Kwan Power Member

    calferreira, podes exemplificar como aplico isso no código pf?
     
  7. calferreira

    calferreira Power Member

    Tens aqui a "cana", agora "pesca" ;)
     
  8. fmbp

    fmbp Power Member

    Em vez de usares o $_GET como indiquei usas o $_REQUEST

    Uma pergunta, depois de carregares no link para a outra página, o que te aparece no URL?
    Ao carregar no 1 devia aparecer: "new.php?nome_variavel=1".

    Não é bem isso que pretende, pelo que percebi ele tem uma tabela como números, e ao carregar num desses números quer passar para a página "new" esse mesmo valor, com esse metodo teria de meter uma checkbox para seleccionar o número pretendido e carregar no botão validar, o que implica 2 cliques em vez de apenas 1.
     
  9. Kwan

    Kwan Power Member

    Mas esse método é para ser utilizado num form. No meu caso creio que não é aplicavel, eu n tenho um form. Queria q a passagem de informação de uma pagina para outra resultasse através do clique apenas e não na tradiciona submissão da informação por parte do user.
     
  10. calferreira

    calferreira Power Member

    O código que ele gera tem um form , ve no topo "text = "<form name=calForm>"" .
    Se ele usa PHP tem que usar uma função do PHP para obter o valor da variável presente na querystring, a lógica é esta.

    Em PHP não sei a 100% porque mal trabalhei com PHP, mas vou tentar ajudar na mesma :)
     
  11. Kwan

    Kwan Power Member

    fmbp,

    Aparece-me isto: ".../new.php?nome_variavel=29"
    Contudo eu cliquei no numero 24, dá me sempre um gap de 5 numeros e não me imprime na new.php

    Tkz
     
  12. fmbp

    fmbp Power Member

    Tenta meter ";" ao fim de cada linha de código e vê se resolve, só reparei agora que não tinhas isso em lado nenhum.

    PS: Consegui por isso a funcionar e a mostrar na outra página o número que cliquei, por isso deve ser mesmo problema de falta do ";".
     
    Última edição: 17 de Dezembro de 2012
  13. Kwan

    Kwan Power Member

  14. fmbp

    fmbp Power Member

    Podes mostrar o código todo para ver o que pode estar a correr mal?
     
  15. Kwan

    Kwan Power Member

    Aqui vai.

    Tenho dois ficheiros, um chamado calendario.html e o outro new.php.

    Esta é uma das funções do calendario.html, a vermelho está a parte que pus aqui anteriormente:

    Código:
    function writeCalendar(){var now = new Date;
    var dd = now.getDate();
    var mm = now.getMonth();
    var dow = now.getDay();
    var yyyy = now.getFullYear();
    var arrM = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var arrY = new Array();
        for (ii=0;ii<=4;ii++){
            arrY[ii] = yyyy - 2 + ii;
        }
    var arrD = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); //dia da semana
    
    
    var text = "";
    text = "<form name=calForm>";
    text += "<table border=1>";
    text += "<tr><td>";
    text += "<table width=1%><tr>";
    text += "<td align=center>";
    text += "<select name=selMonth onChange='changeCal()'>"; 
        for (ii=0;ii<=11;ii++){
            if (ii==mm){
                text += "<option value= " + ii + " Selected>" + arrM[ii] + "</option>"; 
                 
            }
            else{
                text += "<option value= " + ii + ">" + arrM[ii] + "</option>"; 
            }
        }
    text += "</select>";
    text += "</td>";
    text += "<td align=center>";
    text += "<select name=selYear onChange='changeCal()'>";
        for (ii=0;ii<=4;ii++){
            if (ii==2){
                text += "<option value= " + arrY[ii] + " Selected>" + arrY[ii] + "</option>"; // ano actual apresentado por defeito
            }
            else{
                text += "<option value= " + arrY[ii] + ">" + arrY[ii] + "</option>"; // outro ano
            }
        }
    text += "</select>";
    text += "</td>";
    text += "</tr></table>";
    text += "</td></tr>";
    text += "<tr><td>";
    text += "<table border=150>"; //tamanho do quadrado cinzento
    text += "<tr>"; //x+=y  =  x=x+y
        for (ii=0;ii<=6;ii++){
            text += "<td align=center><span class=label>" + arrD[ii] + "</span></td>"; //dias da semana: seg, terça...
        }
    text += "</tr>";
    [COLOR=#ff0000]aa = 0;[/COLOR]
    [COLOR=#ff0000]    for (*****=0;*****<=5;*****++){ //este ciclo preenche os dias do calendário[/COLOR]
    [COLOR=#ff0000]        text += "<tr>";[/COLOR]
    [COLOR=#ff0000]        for (ii=0;ii<=6;ii++){[/COLOR]
    [COLOR=#ff0000]             text += "<td align=center><span id=sp" + aa + " onClick=\"location.href='new.php?asd=" + aa + "'\"></span> </td>";     [/COLOR]
    [COLOR=#ff0000]            aa += 1;[/COLOR]
    [COLOR=#ff0000]        }[/COLOR]
    [COLOR=#ff0000]        text += "</tr>";[/COLOR]
    [COLOR=#ff0000]    }[/COLOR]
    text += "</table>";
    text += "</td></tr>";
    text += "</table>";
    text += "</form>";
    document.write(text);
    changeCal();
    }

    Ficheiro new.php:
    Código:
    <html>
    <body>
    <?php
    $asd= $_GET['asd'];
    echo $asd;
    ?>
    </body>
    </html>
     
    Última edição: 17 de Dezembro de 2012
  16. fmbp

    fmbp Power Member

    Qual é o nome da váriavel do dia que preenche o calendário?


     
    Última edição: 17 de Dezembro de 2012
  17. Kwan

    Kwan Power Member

    Os dias escritos no calendário estão na função seguinte. Linha a vermelho
    A variável é arrN[]

    Código:
    function changeCal(){var now = new Date;
    var dd = now.getDate();
    var mm = now.getMonth();
    var dow = now.getDay();
    var yyyy = now.getFullYear();
    var currM = parseInt(document.calForm.selMonth.value);
    var prevM;
    	if (currM!=0){
    		prevM = currM - 1;
    	}
    	else{
    		prevM = 11;
    	}
    var currY = parseInt(document.calForm.selYear.value);
    var mmyyyy = new Date(); // mmyyyy fica com a data actual (Fri Nov 16 2012 12:02:09 GMT+0000 (GMT Standard Time) )
    mmyyyy.setFullYear(currY); //Set the year to currY
    mmyyyy.setMonth(currM); //Set the month to currM 
    mmyyyy.setDate(1); // muda o dia do mês para o dia 1 e correspondente dia da semana
    var day1 = mmyyyy.getDay(); // retorna o dia da semana, por exemplo seg terça quarta quinta sexta mas em numero.
    	if (day1 == 0){
    		day1 = 7;
    	}
    var arrN = new Array(41);
    var aa;
    	for (ii=0;ii<day1;ii++){
    		arrN[ii] = maxDays((prevM),currY) - day1 + ii + 1; // maxdays retorna o numero dias do mês anterior
    	}
    	aa = 1;
    	for (ii=day1;ii<=day1+maxDays(currM,currY)-1;ii++){
    		arrN[ii] = aa;
    		aa += 1;
    	}
    	aa = 1;
    	for (ii=day1+maxDays(currM,currY);ii<=41;ii++){
    		arrN[ii] = aa;
    		aa += 1;
    	}
    	for (ii=0;ii<=41;ii++){
    		eval("sp"+ii).style.backgroundColor = "#FFFFFF";
    	}
    var dCount = 0;
    	for (ii=0;ii<=41;ii++){
    		
    		if (((ii<7)&&(arrN[ii]>20))||((ii>27)&&(arrN[ii]<20))){
    [COLOR=#ff0000]			eval("sp"+ii).innerHTML = arrN[ii]; //esta expressão escreve o dia certo em cada casa da matriz do calendário[/COLOR]
    			
    			eval("sp"+ii).className = "c3"; // atribui cor aos dias dos meses anterior e posterior
    		}
    		else{
    			eval("sp"+ii).innerHTML = arrN[ii];
    			
    			if ((dCount==0)||(dCount==6)){
    				eval("sp"+ii).className = "c2"; //atribui cor vermelha aos fins de semana
    			}
    			else{
    				eval("sp"+ii).className = "c1"; // cor dos dias normais
    			}
    			if ((arrN[ii]==dd)&&(mm==currM)&&(yyyy==currY)){
    				eval("sp"+ii).style.backgroundColor="#90EE90"; // dia de hoje
    			}
    		}
    	dCount += 1;
    		if (dCount>6){
    			dCount=0;
    		}
    	}
    }
     
  18. fmbp

    fmbp Power Member

    Um dos teus problemas de carregares num dia e passar outro número é porque o que tens a vermelho está a criar uma tabela de 7x6 em que é numerada de 0 a 41. Então ao carregares no 1 no teu calendário e o dia 1 corresponde a sexta, então a váriavel "aa" corresponde ao valor 5, por isso em vez de teres:

    location.href='new.php?asd=" + aa + "

    tens de ter:

    location.href='new.php?asd=" + arrN[ii]+ "

    a variavel_que indica_o_dia é o número que clicas.
    Espero que ter explicado bem.
     
  19. Kwan

    Kwan Power Member

    Corrigido :)
    Mas pq não me apresenta o numero na segunda pagina?
     
  20. fmbp

    fmbp Power Member

    E agora no URL depois de clicares já te aparece o número que clicaste?
     

Partilhar esta Página