Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gandarez

Retorno de Variavel pro PHP

Recommended Posts

Olá pessoal,

 

É o seguinte, eu tenho alguns checkbox todos com o mesmo ID e com NAME diferentes que são gerados de acordo com o nome de cada foto em um loop no PHP, e eu estou querendo quando selecionar os checkbox que algum script pegue o NAME de cada checkbox selecionado e me concatene numa variavel para assim eu passar essa variavel para uma funcao em PHP zipar o conteudo.

 

Alguem pode me dar uma luz ?

 

Estou tentando atraves de funcooes em JavaScript mas nao estao dando muito certo.

 

o código em JvS esta abaixo

 

function VerificaSelecao(){var i = 0;var objInput = document.Selecao.getElementsByTagName("input");var lObj = (objInput != null)? objInput.length : 0;var foto;foto = '';  for(i = 0; i < lObj; i++){	  if ((objInput[i].type == "checkbox")&&(objInput[i].checked))	{	foto += objInput.item(i) + ', ';	}}return (foto); }

A Variavel foto precisa retornar para alguma variavel no PHP. Mas eu nao estou encontrando nenhum método que me retorne o nome do CheckBox.

 

henrique,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não entendi o que você quer fazer, se com js ou com php, mas se for em js, tenta dar uma lida nas especificações nesse site:

 

http://developer.mozilla.org/en/docs/Core_...t_1.5_Reference

 

Se quiser em php, acho que, se tiver só os checboxes no teu form, algo assim ajudaria:

$e = count($_POST);$i = 0;foreach($_POST as $key => $value){	$string_concatenada .= ($i == ($e -1)) ? $key : ";".$key;	$i++;}
assim, a variável $string_concatenada vai ter os valores de name dos seus checkboxes concatenados e separados por ";"(ponto-e-vírgula)

 

qualquer dúvida, posta ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,Vou tentar ser mais claro, é o seguinte eu rpeciso de uma ajuda para criar alguma função em PHP mesmo, que vai ser chamada atraves de um BOTAO e que me "escaneie", faça um LOOP, todos os CHECKBOXES afim de me colocar em um vetor o atributo "name" apenas dos que estiverem checked = true.Como fazer isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem, vamos ver então.

você deve colocar esse botão com o submit() do javascript para que o formulário seja enviado e então o php trate, ou usar ajax para enviar esses dados, e essa função que chama o ajax é chamada pelo botão. certo, então agora preciso saber se você só tem os checkboxes no seu form, senão o loop que eu te passei vai captar também os valores de campos hidden, text, e etc.

 

Se for só os checkboxes, o loop que te passei faz o trabalho, agora se você quer é um array com o nome dos checks selecionados, você troca o loop por esse:

$e = count($_POST);$i = 0;foreach($_POST as $key => $value){	$array_concatenada[$i] = $key; //key tem o nome dos campos do formulário que vem com post.	$i++;}

Se ainda não conseguir sanar suas dúvidas posta denovo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, de uma olhada na pagina fica mais facil assim : [link]http://www.dp36.com/eventos/unipimenta/I/[/link].Eu quero que esses checkbox que estiverem marcados sejam colocados num array o nome interno de cada um, que eu atribui através de um loop com o nome de cada foto correspondente, feito isso eu irei passar essa variavel para uma funcao ZIPAR e reotrnar pro client.entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, mas o que eu te passei pega o nome dos campos marcados e coloca em um array numérico.

Vou mudar os nome pra te explicar:

$checks_selecionados = count($_POST);$i = 0;foreach($_POST as $nome_do_check => $valor_do_check){	$array_com_nomes_de_checks[$i] = $nome_do_check; //nome_do_check tem o nome dos campos do formulário que vem com post.	$i++;}

Testa esse código, eu tenho quase certeza que vai funcionar.

Ele vai te dar os nomes dos campos checkboxes dentro do $array_com_nomes_de_checks e você pode usá-los num loop depois

 

testa ai e então me fala

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa minha inexperi~encia, estou meio perdido ainda...Eu preciso colocar os checkboxes dentro de um FORM ? ok, se a resposta for sim, eu coloco um botao SUBMIT e no onsubmit do FORM eu coloco esse script dentro de um funcao ? mas nao existira ACTION nesse form, ou existira ? Se nao for preciso um FORM eu coloco no onclick do botao essa funcao, mas ai nao existira o POST em si, como ele vai capturar os dados.OBS:. eu nao mudo de pagina, a pagina continua a mesma quando clicar no botao, ele nao seredirecionaria pra nenhuma outa pagina!henrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, não tem que se desculpar por sua inexperiência, você está aqui exatamente para mudar isso.

 

Bom, na sua página você tem o form já setado, antes de fazer o loop do php que mostra as fotos com os checkboxes, você só tem que mudar algumas coisas:

na sua página o form está da seguinte forma:

<form name="Selecao" >

 

troque por:

<form name="Selecao" method="post" action="o endereço da página php que vai receber o seu formulário">

 

agora no botão, você coloca o seguinte:

<input type="submit" value="Download" size="10" />

 

pronto, ai, já que não deve mudar de página, no final do seu script php que faz o loop das fotos, você coloca o seguinte:

if(getenv("REQUEST_METHOD") == "POST"){	$checks_selecionados = count($_POST);	$i = 0;	foreach($_POST as $nome_do_check => $valor_do_check){		$array_com_nomes_de_checks[$i] = $nome_do_check; //nome_do_check tem o nome dos campos do formulário que vem com post.		$i++;	}[b]agora você tem os valores dos checkboxes, você pode chamar a função que você quer:[/b]$fotos_zipadas = funcao_que_zipa_arquivos($array_com_nomes_de_checks);//simulei a chamada da função, mas você coloca como deve fazer para sua função}
Bom, acho que é isso. Se não entendeu posta ai denovo, será um prazer ajudar...

flw

[editado]

Esqueci, se você for chamar a função que zipa arquivos da sua página que mostra as fotos você deve colocar o nome da página de exibição no action do seu form. Ex.:

<form ... action="<?php echo $_SERVER['PHP_SELF'];?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu certo ainda :(Ele me retorna isso ArrayArrayArrayArrayArray Array Array Array Array Array Array Array Não tem como deixar de usar o FORM e criar por exemplo um botao que no onclick dele eu coloque a chamada para uma funcao em PHP ou JS que pegue todos os nomes dos checks selecionados? Ou entao melhor ainda, o PHP nao consegue tratar o checks como Objetos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao eu consegui com JS mesmo, agora eu preciso saber como retornar para uma variavel em PHP o RETURN dessa funcao do JS, me de um exemplo SIMPLES ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você teria de colocar esse valor em um campo hidden no seu form. Após o submit, esse valor estaria disponível na sua página PHP ($_POST['campo_hidden']).

Compartilhar este post


Link para o post
Compartilhar em outros sites

O LINK é esse http://www.dp36.com/eventos/unipimenta/I/

 

A Função em JS que pega os nomes dos Checks é esse

function VerificaSelecao(){var i = 0;var objInput = document.Selecao.getElementsByTagName("input");var LObj = (objInput != null)? objInput.length : 0;var foto;foto = '';  for(i = 0; i < LObj; i++){		if ((objInput[i].type == "checkbox")&&(objInput[i].checked))	{	foto += objInput.EFoto[i].name + ', ';	}  }return foto;}
o botão que chama a função esta assim

<input type="button" onclick="VerificaSelecao()" size="10" value="DOWNLOAD">
Minhas Dúvidas são:

 

1. Como retornar a variavel foto do JS para uma variavel em PHP, por exemplo $array ?

2. É Possivel uma função em JS chamar uma função em PHP, como ?

 

Por enquanto, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha não me lembro o que você deve fazer para inserir um novo campo hidden dinamicamente mas, então, cria um campo hidden na sua página:

 

<input type="hidden" name="fotos_selecionadas" id="fotos_selecionadas" />

 

Modifique sua função que é chamada qndo clica no checkbox para alterar o valor do campo:

 

function VerificaSelecao(){var i = 0;var objInput = document.Selecao.getElementsByTagName("input");var LObj = (objInput != null)? objInput.length : 0;var foto;foto = '';  for(i = 0; i < LObj; i++){		if ((objInput[i].type == "checkbox")&&(objInput[i].checked))	{		foto += objInput.EFoto[i].name + ', ';	}}document.getElementById("fotos_selecionadas").value += foto;//return foto;}
E ae você manda o formulário para sua página php, mudando o botão para um do tipo submit.

 

Na sua página php você vai pegar o valor que está no hidden com a variável $_POST['fotos_selecionadas']

 

Bem, acho que assim vai...

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal valeu pela dica, estou conseguindo, na verdade consegui!Preciso de mais uma ajuda, eu tenho uma variavel no PHP com um monte de nome de foto por exemplo

$foto = "foto1, foto4, foto45, foto67, foto88,";

Dessa maneira, mas preciso separar elas em um vetor que fique mais ou menos assim

vetor[1] = foto1vetor[2] = foto4vetor[3] = foto45vetor[4] = foto67vetor[5] = foto88

Como separar, contando que as virgulas nao entram nesse vetor, entram apenas nos nomes das fotos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com um grande problema, toda vez que clico no botao por ele ser um submit a minha pagina eh recarregada, eu queria que quando ela fosse recarregada ou outra coisa, a funcao que esta em PHP para zipar as fotos fosse chamada, como ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,O Problema anterior eu ja consegui solucionar, agora eu tenho esse trecho de codigo

header('Content-Type: application/x-zip');header('Content-Disposition: inline; filename="' . $filename . '"');header('Expires: 0');header('Cache-Control: must-revalidate, post-check=0, pre-check=0');header('Pragma: public');
e ele me retorna esses erros

Warning: Cannot modify header information - headers already sent by (output started at /home/dp36com/public_html/eventos/unipimenta/I/zipar.php:7) in /home/dp36com/public_html/eventos/unipimenta/I/zipar.php on line 63Warning: Cannot modify header information - headers already sent by (output started at /home/dp36com/public_html/eventos/unipimenta/I/zipar.php:7) in /home/dp36com/public_html/eventos/unipimenta/I/zipar.php on line 64Warning: Cannot modify header information - headers already sent by (output started at /home/dp36com/public_html/eventos/unipimenta/I/zipar.php:7) in /home/dp36com/public_html/eventos/unipimenta/I/zipar.php on line 65Warning: Cannot modify header information - headers already sent by (output started at /home/dp36com/public_html/eventos/unipimenta/I/zipar.php:7) in /home/dp36com/public_html/eventos/unipimenta/I/zipar.php on line 66Warning: Cannot modify header information - headers already sent by (output started at /home/dp36com/public_html/eventos/unipimenta/I/zipar.php:7) in /home/dp36com/public_html/eventos/unipimenta/I/zipar.php on line 67

Alguem pode me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.