Array
(
)

Uso de TAGS em postagens

Carlos Magno
   - 19 fev 2015

Ola pessoal, venho pedir ajuda num probleminha que esbarrei.
Tenho uma tabela para cadastro de tags e uma outra para o cadastro das postagens.
No formulário de cadastro das postagens recupero as tags e seus ID's com checkbox. Até ae tudo bem. O problema esta em montar o INSERT de modo que recupere e insira os valores selecionados na tabela das postagens.
Nos teste que realizei da erro como se a variável estivesse vazia.
Como resolver isso?

Marisiana
   - 19 fev 2015

Logicamente você tem que buscar o código da tag e atribuir em uma variável e, em seguida, passar essa variável como parâmetro no INSERT da postagem.
Se puder postar os código que estás executando ou o erro q está ocorrendo fica mais fácil de ajudá-lo.

Carlos Magno
   - 19 fev 2015

eu ja tentei da forma simples e sempre captura somente um valor como se eu tivesse selecionado apenas um checkbox mesmo que eu selecione mais de um. No momento estou no trabalho mas a noite eu posto o código do erro.

Carlos Magno
   - 19 fev 2015

Aqui esta o código:

Primeiro resgato as tags que estão cadastradas:
#Código

SELECT * FROM tags ORDER BY tg_nome ASC


Listo elas no formulário:
#Código
<?php do { ?>
<span><input type="checkbox" name="ma_tag" value="<?php echo $row_tgs['tg_id']; ?>" /><?php echo $row_tgs['tg_nome']; ?></span>
<?php } while ($row_tgs = mysql_fetch_assoc($tgs)); ?>


Depois tento resgatar os valores selecionados para inserir na tabela de postagens:
#Código
foreach($_POST['ma_tag'] as $taggs);


Tento inserir com este INSERT:
#Código
INSERT INTO noticia (ma_data, ma_autor, ma_edito, ma_setor, ma_subsetor, ma_cid, ma_chama, ma_titulo, ma_sub, ma_texto, ma_msgfoto, ma_credfoto, ma_foto, ma_pod, '$taggs', ma_sit) VALUES (NOW(), $autor, $edito, $setor, $subsetor, $cidade, $chamada, $titulo, $subtitulo, $texto, $msgfoto, $credfoto, $foto, $pod, $tags, $sit


Mas me retorna esse erro:
#Código
Warning: Invalid argument supplied for foreach() in C:\AppServ\www\scp\scpcgc\notcad.php on line 42
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''', ma_sit) VALUES (NOW(), 'Fulano', 3, '1', '2', 8, 'FESTAS JUNINAS!', 'F' at line 1


Uma luz por favor!

Marisiana
   - 20 fev 2015

O erro deve estar em '$taggs' , ali você tem q informar o nome do campo que vai receber o código da tag
#Código

 INSERT INTO noticia (ma_data, ma_autor, ma_edito, ma_setor, 
                                         ma_subsetor, ma_cid, ma_chama, ma_titulo, ma_sub, 
                                        ma_texto, ma_msgfoto, ma_credfoto, ma_foto, ma_pod, '$taggs', ma_sit) 
           VALUES (NOW(), $autor, $edito, $setor, 
                           $subsetor, $cidade, $chamada, $titulo, $subtitulo, 
                           $texto, $msgfoto, $credfoto, $foto, $pod, $tags, $sit

Carlos Magno
   - 20 fev 2015

Eu percebi esse meu erro após ter colocado aqui. Fiz a correção mas ainda assim fica apresentando um erro no foreach.

Marisiana
   - 20 fev 2015

Qual é o erro que está ocorrendo?

Como você definiu a estrutura das tabelas no banco de dados?
Existe um relacionamento muitos para muitos?

Carlos Magno
   - 20 fev 2015

O erro continua sendo esse:
#Código

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\scp\scpcgc\notcad.php on line 42


Quanto as tabelas:
Uma para as TAGS com os campos:
tg_id int(10) NOT NULL auto_increment,
tg_nome char(40) NOT NULL,
PRIMARY KEY (`tg_id`)

e outra para as postagens onde tem um campo que vai receber os valores selecionados nos checkbox:
ma_tag char(10) default NULL,

Não criei nenhuma chave estrangeira.

Espero que com isso possa resolver.

Marisiana
   - 22 fev 2015

Se você tem um cadastro das tags e você vai cadastrar postagens e vincular tags a elas, como você pretende tratar isso sem criar o vinculo entre os dados?
Isso deixa tua modelagem desnormalizada...

Carlos Magno
   - 23 fev 2015

Vou corrigir isso e depois retorno com alguma posição.

Marisiana
   - 23 fev 2015

Ok.. aguardo!