Ir para conteúdo

Arquivado

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

marcelobbt

serialize problemas para exibir valores

Recommended Posts

Usei o camando serialize para gravar um vetor no bd, mas estou com problemas para exibir os valores novamente. Onde estou errando?

 

Abaixo os códigos:

 

Página de confirmação do form

//comando para obter valores do form
while ($a < $totalitens) {
	$variavel = "item".$a; //obtem valor do nome do campo no form
	$variavel2 = "qtd".$a; //obtem valor do nome do campo no form
	$itens['$a'] = isset ($_POST[$variavel])? $_POST[$variavel] : '';
	$qtd['$a'] = htmlspecialchars ($_POST[$variavel2]);
	$a++;
}
$itenstotais = serialize($itens);
$qtddositens = serialize($qtd);

// após grava dados no form
 

Página para exibição dos dados gravados no form:

//obtem os dados do bd
$itens = unserialize($sql['Itens']); //vetor
$qtddositens = unserialize($sql['Qtditens']); //vetor

//insere campo com os valores no form
$query = mysql_query("SELECT * FROM itens_festa ORDER BY Item"); //seleciona itens da festa em ordem alfabética
$sql2 = mysql_num_rows($query); //conta quantos itens existem
$a = 0;
while ($a < $sql2) {
      $sql = mysql_fetch_array($query);
      $itenstotais = $sql[$a];

	if ($itenstotais[$a] == $itens[$a]) {  //verifica se foi marcado ou não 
		echo '<input type="checkbox" id="item',$a,'" checked="" name="item',$a,'" value="',$itens[$a],'">',$sql['Item'];
	} else {
		echo '<input type="checkbox" id="item',$a,'" name="item',$a,'" >',$sql['Item'];
	}

	echo 'Qtd:
		<input type="text" style="text-align: center" readonly="" name="qtd',$a,'" id="qtd',$a,'" value="',$qtddositens[$a],'" class="text" size="3px" />',$qtddositens[$a];
							   	
	$a ++;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Deixa-me entender:


Você está varrendo sua tabela itens_festa pra pegar todo o tipo de itens de festa para montar a tela com todos

os checkbox.


Em seguida você varre um registro serializado pra dar um checked em todos os itens do array.


Certo?


Eu mudaria muita coisa neste seu script, mas só a titulo de teste substitua o segundo código por:





<?php
//obtem os dados do bd
$itens = unserialize($sql['Itens']); //vetor
$qtddositens = unserialize($sql['Qtditens']); //vetor

//insere campo com os valores no form
$query = mysql_query("SELECT * FROM itens_festa ORDER BY Item"); //seleciona itens da festa em ordem alfabética
$sql2 = mysql_num_rows($query); //conta quantos itens existem
$a = 0;

while ($a < $sql2)
{
$sql = mysql_fetch_array($query);
$itenstotais = $sql[$a];

$checked = ($itenstotais[$a] == $itens[$a]) ? 'checked' : ''; //verifica se foi marcado ou não

echo "<input type='checkbox' id='item{$a}' {$checked} name='item{$a}' value='{$itens[$a]}' /> {$sql['Item']}" ;

if(!empty($checked))
echo "Qtd: <input type='text' style='text-align: center' readonly='true' name='qtd{$a}' id='qtd{$a}' value='{$qtddositens[$a]}' class='text' size='3px' />{$qtddositens[$a]}";

$a ++;
}

?>



Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi quase isso, mas sua sugestão me ajudou a chegar no resultado, obrigado.

Abaixo o código que ficou no final:

 

$chequed = ""; //zera para nova leitura
$chequed = ($itens[$a] != '') ? 'checked=""' : ''; //verifica se foi marcado ou não 
if ($chequed == '') {
       echo "<input type='checkbox' id='item{$a}' name='item{$a}' value='{$itens[$a]}' /> {$sql['Item']}" ;
} else {
	echo "<input type='checkbox' id='item{$a}'",$chequed," name='item{$a}' value='{$itens[$a]}' /> {$sql['Item']}" ;
}

Obs: Parte do problema também estava no serialize que estava sendo gerado de forma errada.

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.