Ajuda - Busca - Membros - Calendário
Versão Completa: Opinião sobre cadastros múltiplos
Fórum Script Brasil > Programação & Desenvolvimento > PHP
viejoyo
Presciso de uma opinião sobre algo ..vejam ...

to fazendo um cadastro de um produto que tem 12 tipos diferentes de tamanho, uso checkbox

...e fiz um campo tamanho no banco de dados e na hora de inserir eu uso um implode e pá ..

so que como no cadastro nem todos os tamanhos são preeenchidos tem ficado assim (1,,,,10,,M,,GG) .. e na hora que eu vou exemplo alterar esse produto pra mim fazer uma checagem de quais estão marcados eu vou usar um explode, ..

..minha dúvida é de como fazer que esse loop seja válido pra cada checkbox ..porque exmplo se eu fosse fazer pra cada tamanho seria algo do tipo :
CODE
..
<?php if ($row['tamanho_2']=="sim") echo "checked"; ?>
..


mais o lance é que ao usar o explode, vai me gerar um array, e queria saber como manipular o valor de cada um fora do loop ou será melhor (ainda que vai maior meu código) fazer de maneira individual e no banco de dados colocar os 12 tamanhos ?
ESerra
Primeiro que eu não gravaria ,,,, gravaria apenas os valores separados por vírgula, no seu exemplo passaria de 1,,,,10,,M,,GG para 1,10,M,GG. Assumindo que você assim você resgataria o valor, daria um explode nas vírgulas, isso criaria um array, ai bastaria checar com o in_array, se fosse verdadeiro mandava o selected, caso contrário não, algo do tipo:

CODE
$salvo = explode(',','1,10,M,GG');

$sql = mysql_query... //Busca os tamanhos

while($monta = mysql_fetch_assoc($sql)){
$sel = (in_array($monta['tamanho'],$salvo))?'selected:'';
echo '<INPUT TYPE="checkbox" NAME="xxxx" VALUE="iiiii" '.$sel.'> ';
}
viejoyo
Beleza entendido cara, so uma dúvida e como eu faço pra mim não inserir do tipo 1,,,10 ? Porque eu dou um implode em todos, tem maneira de se fazer isso sem ter que checar um por um se ta ou não vazio ?
ESerra
Use a função array_filter para remover os elementos vazios do array, claro que isso deve ser feito antes de dar o implode no array.
viejoyo
Eu tentei fazer igual ao manual , mais não deu resultado, que parametros eu tenho que passar ..pois fiz assim :
CODE
$t = array( $_POST['2'], $_POST['4'], $_POST['10'], $_POST['16'], $_POST['P'],  $_POST['M'], $_POST['G'], $_POST['GG']);
$d = array_filter ($t);
$tamanho=implode("," , $t);

ESerra
Porque você não coloca os campos com os nomes em forma de array? Lembre-se de que o checkbox só existe se for selecionado, logo se o nome estiver em forma de array você já resolve o problema...
<INPUT TYPE="checkbox" NAME="tamanho[]" VALUE="2">
<INPUT TYPE="checkbox" NAME="tamanho[]" VALUE="4">
<INPUT TYPE="checkbox" NAME="tamanho[]" VALUE="10">

Ai no action você colocar implode("," , $_POST['tamanho']);

----

No caso do array_filter não tem que passar parâmetro algum pra remover...
viejoyo
Ótima ideia essa de deixar o nome em forma de array wink.gif, um lance eu testei da maneira que te disse com o array_filter e não funcionou, porque ?
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.