Ir para conteúdo

POWERED BY:

Arquivado

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

conseld

[RESOLVIDO] Como cadastrar mais IDs no mesmo campo do maysql

Recommended Posts

Olá Galera mais uma vez.

 

Estou tentando cadastrar varios id no mesmo campo no mysql.

Bom, estou usando um list menu, segurando o CTRL, você está selecionado varias IDs

 

O list menu eu coloquei uma array tipo assim

categoria[]

 

E depois estou usando o scritp abaixo para listar as categorias selecionada.

 

foreach ($_POST["categoria"] as $idCategoria){

echo $idCategoria."|"; // aqui mostra os campos selecionados

}

 

O problema seguinte, não estou conseguindo armazenar esses ids no mesmo campo.

Veja meu MYSQL

 

id int(30) auto_increment

id_categoria varchar(100)

 

Agora veja o que estou fazendo

 

foreach ($_POST["categoria"] as $idCategoria){

 

$query_rs = "INSERT INTO produtos(id_categoria)

VALUES

('".$idCategoria."'');";

mysql_query($query_rs);

 

}

 

Nesse caso acima está cadastrando varios registros, eu só quero armazenar apenas um campo como

id_categoria ----> 1|2|5|8|9

 

Já tentei gravar uma session antes de cadastrar

 

foreach ($_POST["categoria"] as $idCategoria){

 

$_SESSION["grava_ID"] = $idCategoria."|";

 

}

 

$query_rs = "INSERT INTO produtos(id_categoria)

VALUES

('".$_SESSION["grava_ID"]."'');";

mysql_query($query_rs);

 

 

O resposta vem assim quando eu seleciono as categorias --->> 2|

 

 

Bom será que tem uma solução para isso? Estou quebrando a cabeça.. alguém poderia me ajudar??

 

 

Abração a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve os IDs num array e use serialize(). Veja:

http://forum.idone.com.br/index.php?showtopic=992

 

Mas se esse campo for utilizado numa busca, seria melhor você criar uma tabela relacionada, que armazenaria esses IDs em linhas diferentes.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola beraldo eu usei o esquema serialize ele separou certinho, mas não armazenou mais IDs.O resuldado deu assim no MYSQLid - id_categoria57 s:1:"3"; 56 s:1:"2"; 55 s:1:"1"; 54 s:1:"1"; 53 s:1:"1"; Codigo baixoforeach ($_POST["categoria"] as $idCategoria){echo $generos = serialize($idCategoria);$query_rs = "INSERT INTO produtos(id_categoria) VALUES ('".$generos."'');";mysql_query($query_rs);}Não deu certo.. esse esquema de relacionar, não tem como pois quando vou buscar eu vou usar um LIKEcampo LIKE '".$_GET["id"]."'Mas valeu pela força.mas estou pesquisando!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve serializr o array inteiro, não cada índice dele:

$arr = array("Beraldo", "iMasters", "Internet");
$arr_s = serialize($arr);

//veja que aqui será exibida uma string
echo $arr_s;

//para transformar a string em array
$arr2 = unserialize($arr_s);

 

Como você fará buscas nesse ID, acho melhor separar em registros. Exemplo:

 

tabela pedidos

id -> ido do pedido

demais dados

 

tabela itens

id_pedido -> id do pedido (campo relacionado à tabela "pedidos")

id_produto -> id dos produtos do pedido.

 

Cada ID de produto é inserido num registro diferentes, implicando a existência de vários registros ligados a um único pedido. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae galera achei uma solução pesquisando e falando com Programadores *** Falei com amigo Perfect Lion

E deu uma solução que você um dia pode usar aqui vai o codigo completo

 

 

 

foreach ($_POST["categoria"] as $idCategoria){// função deixar a array em uma string$cat = (is_array($_POST["categoria"])) ? implode("|",$_POST["categoria"]) : null;}$query_rs = "INSERT INTO produtos(id_categoria) VALUES ('".$cat."'');";mysql_query($query_rs);//**************************************************************// separando na hora de alterar$arrCat = explode("|",$row["categoria"]);echo "<pre>";print_r($arrCat);echo "</pre>";

Bom e isso que estava precisando, caso alguém precise está..

 

Valeu pela atenção

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.