Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Recuperando array do MySQL


rutger2007

Pergunta

Amigos...

Usando um pequeno script PHP, eu gero um array com categorias e valores, e insiro em um campo TEXTO em um BD MySQL 4.1.2.

Se antes de inserir eu mandar imprimir, ele aparece:

CATEGORIA 1 VALOR 1

CATEGORIA 2 VALOR 2

...ETC

No MYSQL ele aparece no campo apenas como "Array".

Pois bem... quando eu recupero o valor a partir de outro PHP, ele lê apenas a palavra ARRAY... e não mostra mais os pares. Observem que estou usando a mesma rotina de impressão dos pares que gerou a listinha acima... uso antes de inserir e mostra os pares, uso depois de recuperar e NÃO mostra os pares...

foreach ($c_vlr as $key => $value){

echo "<table>\n";

echo "<tr>\n";

echo "<td >$key</th>\n";

echo "<td >$value</td>\n";

echo "</tr>\n";

echo "<table>\n";

}

resumindo, eu crio, gero o array, imprimo para checar e insiro no banco. mas na hora de recupera-lo, ele desapareceu... minhas perguntas:

1 - INSERINDO UM ARRAY NO BD EM CAMPO TEXTO, ELE SERIA LEGÍVEL[ALGO TIPO " CATEGORIA1 -> 30, CATEGORIA2 -> 40, CATEGORIA3 -> 60??] OU DEVERIA ESPERAR MESMO A PALAVRA ARRAY NO BD?

2 - AO LER O CONTEÚDO DO CAMPO TEXTO QUE CONTÉM O ARRAY E ENTÃO QUERENDO USAR ESTAS CATEGORIAS E VALORES EU TENHO DE FAZER ALGUM TIPO DE CONVERSÃO DE TIPO OU qualquer OUTRA COISA PARA RECUPERAR MEU ARRAY?

Quem puder me dar uma luz...estou aqui!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Como dizia o meu prof, se aparece somente "ARRAY" é o PHP te avisando que fez caca... quando aparece somente a palavra ARRAY é por algum erro, para não deixar o cara na mão o PHP exibe o "ARRAY" e isso quer dizer "Olha, você tentou exibir uma informação que está em um array, mas tentou errado"...

Bom, coloca ai o script completo pra dar uma analisada (apesar de já ter mais ou menos em mente o que você fez)...

Link para o comentário
Compartilhar em outros sites

  • 0
Como dizia o meu prof, se aparece somente "ARRAY" é o PHP te avisando que fez caca... quando aparece somente a palavra ARRAY é por algum erro, para não deixar o cara na mão o PHP exibe o "ARRAY" e isso quer dizer "Olha, você tentou exibir uma informação que está em um array, mas tentou errado"...

Bom, coloca ai o script completo pra dar uma analisada (apesar de já ter mais ou menos em mente o que você fez)...

serra... OBRIGADO PELA FORÇA... eu achei a "caca"... eu havia pensado que o PHP inseriria o array de forma automatica... apenas criei o campo texto, o array e mandei um pro outro... depois de inserir minha duvida, como estava pensando, fui dar uma olhada em outras duvidas do forum mais detalhadamente [já tinha feito isto mas tinha me passado um pequeno detalhe] lendo "> Erro ao cadastrar array no MySQL, Script Recomende este site - para vários e-mails" achei o que TINHA ESQUECIDO... SERIALIZE / UNSERIALIZE... ou seja, eu preciso pegar os valores, serializa-los em uma string e salvar no banco... na volta, converto ao contrario... eu não uso estas funções com freqüência... acho que nunca usei na verdade, precisei ir verifica-las no manual...

considero RESOLVIDO O PROBLEMA...

ACRESCENTO OS SCRIPTS PARA AJUDAR OS PROXIMOS... [eu desenvolvo pequenos programas nesta fase de testes, verificando detalhes... antes de meter as caras no scriptão.. portanto, não reclamem ...heheheh :rolleyes:

<?
   // eu recebo um número variavel de pares CATEGORIA-VALOR [meu form usa um JS para criar N campos e os envia para ser processado aqui...

        $nct=$_POST['ncat']; // isto é o numero de pares, definido pelo cliente.
    $c_vlr = array();
    
    for ($i=0; $i<$nct;$i++)
    {
        $categoria = $_POST['categ'.$i];
        $valor =  $_POST['vcat'.$i];
        $c_vlr[$categoria] = $valor;
    }
    
        // só para verificar se o array veio mesmo....
    foreach ($c_vlr as $key => $value){
    echo "<table>\n";  
      echo "<tr>\n";
      echo "<td >$key</th>\n";
      echo "<td >$value</td>\n";
      echo "</tr>\n";
      echo "<table>\n";  
    }
    // bom, aqui foi a caca... preciso serializar os valores... antes de enviar para o BD...
    $s_cvlr = serialize ($c_vlr);
    
    include("acessbd.php"); 
    $entra_dados= "INSERT INTO testes (id, cvlr) VALUES (NULL, '$s_cvlr')";
    $cad_dados = mysql_query($entra_dados) or die ("problema de acesso");
    echo "inserido com êxito \n";
    echo "<a href='recupera.php'>Recupero e imprimo os dados inseridos</a>\n";
    
        
    ?>

// BOM... NESTE PONTO OS DADOS ESTÃO NO BD, PRECISO RECUPERA-LOS E IMPRIMI-LOS...

<?

// resposta 
        include("acessbd.php"); 

            $SQL2 = "SELECT * FROM testes";
            $clt_query = mysql_query($SQL2) or die ("problema na consulta");
            $row2  =  mysql_fetch_array($clt_query);
            $id= $row2['id'];
            $s_cvlr =$row2['cvlr'];

                        // AQUI EU DESERIALIZO A STRING, RECUPERANDO O ARRAY CATEGORIA->VALOR.
            $c_vlr = unserialize($s_cvlr);
            
    
?>

<!-- AQUI É APENAS A IMPRESSÃO DOS RESULTADOS EM UMA TABELA -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<style>

table {width: 400px; padding: 5px; margin: 5px;}
th.col , th.row {background-color:#ffd; border: 1pt solid #999;width: 200px;}
td.dats {text-align: right; background-color:#fff; border: 1pt solid #999;}
th.col {text-align: center;}
th.row {text-align: left;}

</style>
</head>

<body>
<H3>VALOR </H3>
<table >
  <tr>
    <th class="col">CATEGORIA</th>
    <th class="col">VALOR R$</th>
    <th class="col">SOMA R$</th>
  </tr>
  
 <? 
 $total =0;
  foreach ($c_vlr as $key => $value){
      
  echo "<tr>\n";
  echo "<th class='row'>$key</th>\n";
  echo "<td class='dats'>$value</td>\n";
  $total += $value;
  echo "<td class='dats'>$total</td>\n";
  echo "</tr>\n";
    }
 ?>
</table>
</body>
</html>

Resumindo meu problema era criar uma forma que interação com os clientes do site, permitindo que eles definissem um certo numero de categorias e valores, em seguida salvar esta informação no BD [junto com outras, claro, mas isto ainda está em desenvolvimento] e depois recuperar esta informação para uso quando consultado. Isto era necessário porque cada cliente terá um número de categorias diferentes, com descrição de nome das categorias e valores tb diferentes... é para um site que monta sites...

Obrigado de novo!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...