Uso de TAGS em postagens

19/02/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?

Carlos Magno

Respostas

19/02/2015

Marisiana

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.
Responder Citar

19/02/2015

Carlos Magno

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.
Responder Citar

19/02/2015

Carlos Magno

Aqui esta o código:

Primeiro resgato as tags que estão cadastradas:
SELECT * FROM tags ORDER BY tg_nome ASC


Listo elas no formulário:
<?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:
foreach($_POST['ma_tag'] as $taggs);


Tento inserir com este INSERT:
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:
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!
Responder Citar

20/02/2015

Marisiana

O erro deve estar em '$taggs' , ali você tem q informar o nome do campo que vai receber o código da tag
 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
Responder Citar

20/02/2015

Carlos Magno

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

20/02/2015

Marisiana

Qual é o erro que está ocorrendo?

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

20/02/2015

Carlos Magno

O erro continua sendo esse:
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.
Responder Citar

22/02/2015

Marisiana

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...
Responder Citar

23/02/2015

Carlos Magno

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

23/02/2015

Marisiana

Ok.. aguardo!
Responder Citar