Ir para conteúdo

POWERED BY:

Arquivado

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

MuitoCurioso

[Resolvido] Como inserir dados em duas tabelas simultaneamente

Recommended Posts

Amigos,

Publico texto com esse script na tabela notícias. Agora, preciso incrementar cada publicação na tabela CATEGORIAS. Como sou novato, estou arrancando os cabelos, e nada...!

 

A tabela CATEGORIAS tem os campos nome_categoria e numero-artigo, além de id, claro. As categorias cadastradas no DB são 1. Notícias, 2. Fotos, 3. MP3 e 4. Mídis.

 

Será que alguém poderia me ajudar?

 

.........

 

<?php 
session_start();
if (isset($_POST['enviar'])) { 

$nome = $_POST['nome']; 
$data = date("Y-m-d - H:i:s"); 
$categoria = $_POST['categoria'];
$resumo = $_POST['resumo'];
$notas = $_POST['notas'];

if($nome == ''){
echo "Preencha nome";
}elseif($notas == ''){
echo "Preencha notas";
}elseif($categoria == ''){
echo "Marque uma categoria";
}else{

$inserir = mysql_query("INSERT INTO noticias (nome, data, categoria, resumo, notas) VALUES ('$nome','$data','$categoria','$resumo','$notas')");
$post_id = mysql_insert_id();

if($inserir =='') {
echo mysql_error();;
}else {
echo "Publicado com sucesso";
}
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Primeiro,

Nesta sua validação de erro da query, ao inves de verificar se a variavel (da conculta) e vazia [ if($inserir =='') ], valide-a com FALSE [ if($inserir !== False) ], pois e isto que mysql_query() retona em caso de falha ou erro.

 

Quanto a sua questao, corrija-me se eu nao entendi direito:

 

Quer inserir os mesmos dados ja inseridos em "noticias" noutra tabela?

Se for isso, e so fazer uma nova query inserindo os dados na outra tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, obrigado por tentar ajudar, mas não deu certo,

com certeza, porque meu texto não foi claro

e você não o entendeu.

Explico de novo, abaixo:

 

Os posts são registrados na tabela NOTICIAS, que tem os campos nome, data, categoria, resumo e notas

 

Preciso - e não consigo - indicar o acréscito de cada um desses posts na tabela CATEGORIAS, que tem como os campos: nome_categoria e numero_artigo.

 

Em nome_categoria criei as categorias Notícias, Fotos, MP3 e MÍdis e quero contar a quantidade de posts existentes em cada uma delas, com os números aparecendo em numero_artigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oxe,então.. é só voce fazer um novo insert com os dados puxados da tabela anterior, ai tu faz uma nova consulta dessa tabela e mandar exibir aonde tu quiser..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummmm!

 

Então, no caso em categorias voce quer contar todos os posts que existem em "noticias" de cada categoria?

 

Se entendi, voce pode fazer um consulta, apos o insert da nova noticia, de todas as noticias da categoria x e lancar o resultado na tabela "categoria", um exemplo:

 

<?php
$inserir = mysql_query("INSERT INTO noticias (nome, data, categoria, resumo, notas) VALUES ('$nome','$data','$categoria','$resumo','$notas')");
$post_id = mysql_insert_id();

// COLETA DO TOTAL
$sql = 'SELECT IF (count(id_noticia) > 0, count(id_noticia), 0) AS Total FROM noticias WHERE categoria = "'.$categoria.'"';
$noticias_consulta = mysql_query($sql);
$noticias = mysql_fetch_array($noticias_consulta);

// UPDATE DA TABELA CATEGORIAS
$sql = 'UPDATE categorias SET num_noticias = '.$noticias['Total'].' WHERE categoria = "'.$categoria.'"';
mysql_query($sql);
?>

 

Adapte os campos e poste a estrutura das duas tabelas se tiver problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá: publica em NOTÍCIAS, mas não insere a contagem em CATEGORIAS. Ocorre o seguinte erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

 

Abaixo reproduzo as duas tabelas:

 

CREATE TABLE IF NOT EXISTS `noticias` (
 `id` int(11) NOT NULL auto_increment,
 `nome` varchar(255) character set latin1 collate latin1_general_ci default NULL,
 `data` date default NULL,
 `categoria` varchar(255) NOT NULL default '0',
 `resumo` text character set latin1 collate latin1_general_ci,
 `notas` text character set latin1 collate latin1_general_ci,
 `visitas` int(11) NOT NULL default '0',
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=133 ;


CREATE TABLE IF NOT EXISTS `categorias` (
 `id` int(11) NOT NULL auto_increment,
 `nome_categoria` varchar(255) collate latin1_general_ci NOT NULL default '0',
 `num_noticias` varchar(255) collate latin1_general_ci NOT NULL default '0',
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adaptando:

 

<?php
$inserir = mysql_query("INSERT INTO noticias (nome, data, categoria, resumo, notas) VALUES ('$nome','$data','$categoria','$resumo','$notas')");
$post_id = mysql_insert_id();

// COLETA DO TOTAL
$sql = 'SELECT IF (Count(id) > 0, Count(id), 0) AS Total FROM noticias WHERE categoria = "'.$categoria.'"';
$noticias_consulta = mysql_query($sql) or die (mysql_errno().' - '.mysql_error());
$noticias = mysql_fetch_array($noticias_consulta) or die (mysql_errno().' - '.mysql_error());

// UPDATE DA TABELA CATEGORIAS
$sql = 'UPDATE categorias SET num_noticias = '.$noticias['Total'].' WHERE nome_categoria = "'.$categoria.'"';
mysql_query($sql) or die (mysql_errno().' - '.mysql_error());
?>

 

Se der erro, post o mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm. Sem erros ja e um bom comeco, rs! Vamos la...

 

Existe registros na tabela categorias?

 

Tem certeza que o valor de $categoria (vindo do seu form, [ $categoria = $_POST['categoria']; ]) existe na tabela categorias?

 

Esse campo no form, é um select?

 

----------------------------------------

 

Que louco! Agora ficou dificil saber onde ta o "erro".

 

O que foi gravado no campo categoria da tabela noticias na ultima vez que voce usou o script?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha! O erro ta na codificao da tua pagina!

 

Na img do erro2. Problema com a codificação do texto Notícias!

 

Qual codificacao voce ta usando no form?

 

A pagina com o php é a mesma do form?

 

Posta a pagina completa ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php 
session_start();
if (isset($_POST['enviar'])) { 

$nome  = $_POST['nome']; 	
$data = date("Y-m-d - H:i:s"); 
$categoria = $_POST['categoria'];
$resumo = $_POST['resumo'];
$notas = $_POST['notas'];

         if($nome == ''){
	   echo "Preencha nome";
	}elseif($notas == ''){
	   echo "Preencha notas";
	}elseif($categoria == ''){
	   echo "Marque uma categoria";
	}else{

$inserir = mysql_query("INSERT INTO noticias (nome, data, categoria, resumo, notas) VALUES ('$nome','$data','$categoria','$resumo','$notas')");
  $post_id = mysql_insert_id();

           if($inserir =='') {
              echo mysql_error();;
           }else {
              echo "Publicado com sucesso";

// COLETA DO TOTAL 
$sql = 'SELECT IF (Count(id) > 0, Count(id), 0) AS Total FROM noticias WHERE categoria = "'.$categoria.'"'; 
$noticias_consulta = mysql_query($sql) or die (mysql_errno().' - '.mysql_error()); 
$noticias = mysql_fetch_array($noticias_consulta) or die (mysql_errno().' - '.mysql_error()); 

// UPDATE DA TABELA CATEGORIAS 
$sql = 'UPDATE categorias SET num_noticias = '.$noticias['Total'].' WHERE 

nome_categoria = "'.$categoria.'"'; 
mysql_query($sql) or die (mysql_errno().' - '.mysql_error()); 

     }
}
}
?>

<script src="http://www.vitubo.com/mediacenter/nicEd/js/nicEdit.js" type="text/javascript"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function() {
new nicEditor().panelInstance('resumo');
});
bkLib.onDomLoaded(function() {
new nicEditor().panelInstance('notas');
});
</script>
<table width="400" border="0" align="center" cellpadding="1" cellspacing="1" class="midias">
         <form name="teste" action="" method="post" enctype="multipart/form-data">
           <tr>
             <td width="121" class="style2">Título</td>
             <td width="532"><input type="hidden" name="data" value="$data" /><input name="nome" type="text" size="55" /></td>
           </tr>
           <tr>
             <td class="style2">Categoria</td>
             <td><input name="categoria" type="checkbox" value="Notícias" /><input name="categoria" type="checkbox" value="Fotos" /><input name="categoria" type="checkbox" value="MP3" /><input name="categoria" type="checkbox" value="Midis" /></td>
           </tr>
           <tr>
             <td class="style2">Resumo</td>
             <td><textarea name="resumo" cols="65%" rows="6" id="resumo"></textarea></td>
           </tr>
           <tr>
             <td class="style2">Texto</td>
             <td><textarea name="notas" cols="65%" rows="20" id="notas"></textarea></td>
           </tr>
            <tr>
             <td><input type="submit" name="enviar" value="Enviar" /></td>
             <td>..</td>
           </tr>
         </form>
       </table></td>
   <td width="180" valign="top" bgcolor="#F0F0F0"> </td>
 </tr>
</table></td>
 </tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, funcionou perfeitamente!

Não sei como agradecer por sua colaboração,
e, sobretudo, dedicação à causa de ajudar desinteressadamente!

Quero dizer que, se você não me ajudasse repetidas vezes,
eu jamais resolveria essa dificuldade, com certeza.

Parabéns por sua competência. Obrigado. E muito sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 07/03/2011 at 05:00, MuitoCurioso disse:

Agora, funcionou perfeitamente!

Não sei como agradecer por sua colaboração,
e, sobretudo, dedicação à causa de ajudar desinteressadamente!

Quero dizer que, se você não me ajudasse repetidas vezes,
eu jamais resolveria essa dificuldade, com certeza.

Parabéns por sua competência. Obrigado. E muito sucesso!

 

Vixi! :D Fiquei orgulhoso agora! Hauahauaha.

Vlw meu rei! Obrigado pelos comentários.

Precisando, estamos aqui no forum pra isso mesmo, ajudar. Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Citar
Amigo, se não é pedir demais, gostaria de colocar o seguinte:

 

Meu conhecimento engatinha. Enquanto se trata de TABELAS e CAMPOS DE TABELA, tudo bem. Mas, agora, preciso exibir o conteúdo das CATEGORIAS (Notícias, Fotos, MP3 e Mídis) da tabela NOTÍCIAS.

 

O conhecimento bateu no teto. No máximo, consegui listar as categorias e o conteúdo de todas conjuntamente. O que há dentro de cada uma, separadamente, nem pensar. E isso é fundamental pra mim.

 

Se puder me ajudar, ficarei muito grato!

 

Abaixo, cóndigo usado para exibir o que conseguir fazer...

 

<?php
$p = $_GET["p"];
if(isset($p)) {
$p = $p;
} else {
$p = 1;
}
$qnt = 20;
$inicio = ($p*$qnt) - $qnt;
$sql_select = "SELECT * FROM noticias ORDER BY id DESC LIMIT $inicio, $qnt";
$sql_query = mysql_query($sql_select);

while($array = mysql_fetch_array($sql_query)) {

$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

echo "$categoria - $nome - $visitas<br>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 07/03/2011 at 19:48, InterPlanet disse:

Agrupado por categoria?

 

Sim. Quando clicar em quaisquer das categorias, entrar na lista de suas respectivas publicações.

As categorias funcionariam como MENU, para dar acesso à lista de textos da categoria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok! Edito ja este post com um exemplo.

 

Veja

 

<?php
// CATEGORIA das noticias a serem exebidas, suponho que receba por GET ou POST

$Categoria = isSet($_GET["cat"]) && !empty($_GET["cat"]) ? $_GET["cat"] : ''; // Exempo por GET
// OU
$Categoria = isSet($_POST["cat"]) && !empty($_POST["cat"]) ? $_POST["cat"] : ''; // Exempo por POST

// CORRECAO - Procure sempre validar dados passados pelo usuario, GET e POST, isto melhora a seguranca do sistema
$p = isSet($_GET["p"]) && is_numeric($_GET["p"]) ? $_GET["p"] : 0;


if(isset($p)) {
$p = $p;
} else {
$p = 1;
}
$qnt = 20;
$inicio = ($p*$qnt) - $qnt;


// SQL que condiciona a coleta das boticias da categoria passada ou, se nao passar, exibe todas
$sql_select = "SELECT * FROM noticias ". ( empty($Categoria) ? '' : " WHERE categoria = '".$Categoria."' " ) ." ORDER BY id DESC LIMIT $inicio, $qnt";
$sql_query = mysql_query($sql_select);


while($array = mysql_fetch_array($sql_query)) {

$id = $array["id"];
$nome = $array["nome"];
$data = $array["data"];
$categoria = $array["categoria"];
$notas = $array["notas"];
$resumo = $array["resumo"];
$visitas = $array["visitas"];

echo "$categoria - $nome - $visitas<br>";
}
?>

Adapte a verifique se atende sua necessidade.

 

Uma dúvida:

 

Sempre serao exibidas as noticias de uma categoria especifica (o usuario escolhe) ou sera um menu fixo exibindo sempre todas as noticias agrupadas por categoria

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Citar
Não sei o que seria melhor:

1. Sempre exibir as noticias de uma categoria especifica (o usuario escolhe)?

2. Ou ter um menu fixo exibindo sempre todas as noticias agrupadas por categoria?

 

O script deu esse erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

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.