Ir para conteúdo

POWERED BY:

Arquivado

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

NIKESLB

[Resolvido] Variável com vírgula

Recommended Posts

Boas!

 

Surgiu-me um problema.

 

Tenho através de uma base dados uma lista de informações em uma tabela, cada linha tem uma checkbox. Se eu fizer check à uma checkbox e fizer enviar, tá tudo bem, ele envia o value da checkbox para a outra página que devolve outros resultados.

O problema é na página da listagem, se eu fizer check em 2 checkbox, para enviar o valor é complicado, se forem vários o serviço só aceita os valores do tipo: "2,5" e não ",2,5" ou "2,5,".

 

$cod = $test["tests"];

//checkbox
<input name=\"s1[]\" type=\"checkbox\" value=\"$cod\" />

 

A minha pergunta é: Como enviar/ receber os valores tendo uma virgula entre dois ou mais valores enviado?

 

Por favor ajuda ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, eu consigo enviar os valores das checkbox, mas se forem enviadas mais do que uma, para aquilo funcionar tem que ter uma virgula entre os valores.

 

Por exemplo, vamos supor que tenho uma checkbox com valor = 1, e outra checkbox com valor = 2 (esses dois valores pertencem a variável $cod), para eu poder enviar mais do que um valor, terá que ser enviado da seguinte forma: "1,2". Com uma virgula entre os valores, o serviço que estou a usar só aceita desta forma. Como poderei por uma virgula entre os valores, sabendo que esses valores estão todos numa variável?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando os valores da checkbox são enviados, eles chegam como um array na página que recebe.

 

Você precisa pegar os valores, um a um, dessa array e transformá-los em um só, algo como

$stringFinal = "";

for($contador=0;$contador>TAMANHO_DO_ARRAY;$contador++){
	$stringFinal = $stringFinal . " " . $arrayCheckbox[$contador] . ",";
}

Isso retorna seus valores, separador por vírgula: "1,2,3,4,5,6,7,8,9,"

 

Aí sobra uma vírgula no final, e você tira ela com o "substr()":

$stringFinal = substr($stringFinal, 0, -1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas mas continuo ainda com algumas dificuldades.

 

Página de envio

echo ("<table border=\"0\" style=\"border: solid 1px #D4D4D4;\" width =\"100%\" cellpadding =\"2\" cellspacing =\"2\">
			<tr>					
				<th align=\"center\" bgcolor=\"#F3F3F3\" width=\"5%\">| S1</th>
				<th align=\"center\" bgcolor=\"#F3F3F3\" width=\"5%\">| S2</th>
			</tr>");	

		if(!isset($tests["CD_test"])):
			foreach($tests as $index=>$test){
			$cod = $test["CD_test"];//variável que contém o código para ser implementando no campo Hidden		

				echo("
				<tr style=\"width:100%; background-color:\" onMouseover=\"this.style.backgroundColor='#F0F0F0';\" onMouseout=\"this.style.backgroundColor='';\">

					<td align=\"center\" width=\"\"><input type=\"hidden\" name=\"cod[]\" /><label><input name=\"s1[]\" type=checkbox value=\"$cod\" /></label></td>
					<td align=\"center\" width=\"\"><label><input name=\"s2[]\" type=checkbox value=\"$cod\" /></label></td>
				<tr/>");				
					}		
echo ("</table></center>");

 

Página que recebe

<?php
function test($string) //função que permite concatenar os valores do array, separar por virgulas e eliminar a ultima virgula
{
$stringFinal = "";	
		for( $contador = 0; $contador > $string.length; $contador++ )
		{
   	$stringFinal = $stringFinal . " " . $string[$contador] . ",";
	}
$stringFinal = substr($stringFinal, 0, -1); 
}
?>


if (isset($_POST['cod']) AND isset($_POST['s1']))//se a variável cod e S1 existe, cod recebido da primeira pagina
{
	foreach ($_POST['s1'] as $key =>$value1)
	{

echo test($value1);

	}
}

 

Será que fiz mal a função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, cara, o que você está fazendo aí é só jogar um valor numa função a cada loop, não está nem retornando nada.

 

Primeiro, receba o array

$array_checkbox = $_GET["checbox"];
Depois, ache o tamanho do array

$tamanho_do_array = count($array_checkbox);
Agora, tendo o array em mãos, bem como o seu tamanho, faça um loop baseado nesse tamanho

for($contador=0;$contador<$tamanho_do_array;$contador++){ }
E quebre o array, acumulando o resultado na string

$string_final_com_virgulas = $string_final_com_virgulas . $array_checkbox[$contador] . ", "
E, do mesmo jeito que falei antes, tire a última vírgula que sobra

$string_final_com_virgulas = substr($string_final_com_virgulas, 0, -1);
EDIT: achei a função que faltava

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Evandro já postou uma dica legal. Não precisa fazer isso tudo aí não, um for() depois concatena as virgulas e no final de tudo utilizar substr para retirar o ultimo caractere.

Utilizando a dica do Evandro, vejam como fica:

 

<?php
$str = '2138721788971210214';

# 2,1,3,8,7,2,1,7,8,8,9,7,1,2,1,0,2,1,4
echo implode( ',', str_split( $str ) );
?>

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.