• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Vnepomuceno

Problema com Arrays

8 mensagens neste tópico

Olá antes de mais  ;)

Estou a desenvolver um backoffice, em que tenho uma quatidade considerável de checkboxes que precisam de ser verificadas ou não, para poderem ser inseridas ou não na base de dados, na coluna 'extras' de uma tabela:

semttuloro9.jpg

Assim, se por exemplo, eu escolher Bancos Eléctricos e Estofos em Couro, quero que estes sejam inseridos nessa tal coluna, para depois poderem ser usados como output. Pensava que conseguia resolver a questão, mas pelos vistos está difícil. O que fiz:

if(isset($_POST['slt_bancos_electricos'])) { $BancosElectricos = $_POST['slt_bancos_electricos']; } else { $BancosElectricos = ""; }
if(isset($_POST['slt_estofos_couro'])) { $EstofosCouro = $_POST['slt_estofos_couro']; } else { $EstofosCouro = ""; }
$extras = array($BancosElectricos, $EstofosCouro);

E para fazer o output directo disso, uso:

echo "<ul>";
foreach($extras as $key => $val) { if($val == "") {} else { echo "<li>$val</li>"; } }
echo "</ul>";

E dá-me a listinha tal e qual como queria. O problema é que o que vai para a base de dados, é um simples "Array", literalmente, e não consigo fazer nada com aquilo, pelo menos que eu saiba. Alguém tem alguma solução sobre como resolver este problema?

Obrigado pela disposição  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a estudar essas duas funções, mas não sei se percebi bem qual a finalidade delas. Alterações que fiz:

$array = "$BancosElectricos, $ComandoVelocidade, $EstofosPele, $EstofosCouro, $FaroisNevoeiro, $FechoCentralizado, $JantesLeve, 
$PinturaMetalizada, $RadioCD, $TCS, $ABS, $TectoAbrir, $ArCondAutomatico, $BancosAquecidos, $ComputadorBordo, $VidrosElectricos2, 
$VidrosElectricos4, $KitTelemovel, $SistemaParqueamento, $ApoioBraco, $VolanteCouro, $SistemaNavegacao, $DVD, $Xenon, $BiXenon, 
$ControloEstabilidade, $GPS, $EspelhosRebativeis, $SuspensaoDesportiva, $SistemaSom, $Alarme, $EspelhosElectricos, $BarrasTejadilho, 
$BancosMemoria, $CaixaCD";
$extras = array(serialize($array));

E no output:

$query__ = mysql_fetch_array(mysql_query("SELECT * FROM carros WHERE id=25"));
$query = $query__['extras'];
$extras = unserialize($query);
echo $extras;

Erro:

Notice: unserialize(): Error at offset 0 of 5 bytes in d:\programas\easyphp1-8\www\ritmo\index.php on line 32

Line32:$extras = unserialize($query);

Podes me dar uma ajudinha nisto? É que não sou assim tão avançado em código PHP

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
if(isset($_POST['slt_bancos_electricos'])) { $BancosElectricos = $_POST['slt_bancos_electricos']; } else { $BancosElectricos = ""; }
if(isset($_POST['slt_estofos_couro'])) { $EstofosCouro = $_POST['slt_estofos_couro']; } else { $EstofosCouro = ""; }
$extras = array($BancosElectricos, $EstofosCouro);
$paradb = serialize($extras);

enviaparaabd($paradb);

// receber

$var = recebedabd();
$extras = unserialize($var); // $extras é uma array com os dados que tinhas antes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a seguir os passos que me deste, tudo muito certinho, até que na BD a tal coluna aparece, "serializada" ou encriptada:

a:35:{i:0;s:0:"";i:1;s:0:"";i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";i:5;s:0  [...]

Mas ao fazer o output disso com:

$query = mysql_fetch_array(mysql_query("SELECT * FROM carros WHERE id=28"));
$extra = $query['extras'];
$extras = unserialize($extra);
echo $extras;

Aparece-me apenas a seguinte palavra Array, grrr  :cheesygrin:

Alguma solução?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol. O resultado do unserialize() é uma array. Experimenta usar um var_dump() ou um print_r() :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epa.... está aqui uma grande confusão. Vou responder ao tópico de abertura que já estás a comaçar a ficar emaranhado em soluções e complicações.

Ora bem... é muito simples, não afixaste o código de inserção na base de dados mas já estou a ver qual é o problema.

estás a inserir o array no meio do query em vez de inserires um elemento do array.

Por exemplo:

Isto nao funciona:

$sopa = "caldo verde";
$sobremesa = "feijoada";
$o_meu_menu = ($sopa,$sobremesa);
$sql = "insert into ementa values($o_meu_menu)";
mysql_query($sql);

Isto funciona:

$sopa = "caldo verde";
$sobremesa = "feijoada";
$o_meu_menu = ($sopa,$sobremesa);
$sql = "insert into ementa values(".$o_meu_menu[0].",".$o_meu_array[1].")";
mysql_query($sql);

Já que cá estamos, isto em relação ao html.

Poe a descrição e as checkboxes numa tabela para ficar tudo alinhadinho, podes usar alternancia de cor para evitar má visibilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui resolver o problema. O código de output fica apenas:

$query = mysql_fetch_array(mysql_query("SELECT * FROM carros WHERE id=28"));
$extra = $query['extras'];
$extras = unserialize($extra);

echo "<ul>";
foreach($extras as $key => $val) { if($val == "") {} else { echo "<li>$val</li>"; } }
echo "</ul>";

Então já percebi, o serialize faz com que possa ser armazenado uma variável complexa como um array, para poder depois ser utilizada.

Obrigado a todos pela ajuda  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora