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

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

Não funcionou. A variavel não foi apresentada na pagina new. :(
 
Kwan, experimenta usar a função $_REQUEST['nome_variavel'];

Falta-te no form o método que pretendes (Get ou Set).
 
Última edição:
calferreira, podes exemplificar como aplico isso no código pf?

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".

Tens aqui a "cana", agora "pesca" ;)

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

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 :)
 
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".

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
 
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:
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:
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;
		}
	}
}
 
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.
 
Back
Topo