Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

[Resolvido] Cadastrar mais de um item no banco de dados

Recommended Posts

Boa tarde pessoal.

 

Tenho vários checkbox onde podem ser cadastrados vários itens de uma só vez, então, transformei em array os valores, vejam:

 

<input type="checkbox" name="selecionaCat[]" value="<?=$rsCategoria->idCategoria?>" />

 

Ai defino a variavel assim:

 

$catsSelecionadas = $_POST['selecionaCat'];
@ksort($catsSelecionadas);
@array_values($catsSelecionadas);
$totalCategorias = count($catsSelecionadas);

 

E para cadastrar está assim:

 

for ($categorias = 0; $totalCategorias > $categorias; $categorias++){
$cats = $categorias . $catsSelecionadas[$categorias];
echo "
<script type=\"text/javascript\">
alert(".$catsSelecionadas.");
</script>
";
$inserir2 = "INSERT INTO noticiascategorias VALUES (NULL, '$ultimoId','$cats')";

 

No alert que coloquei ai para testar, quando testo com a $totalCategorias ele imprimi o valor correto, porém, quando coloco a $cats ela me retorna somente 1.

 

O que está acontecendo?

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção Igor.

 

Com o procedimento informado acima, obtive o seguinte resultado: 0 => '1'1 => '2'2 => '4'

 

Como que ficará o php para receber este conteudo?

 

Mais uma vez, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu codigo fico assim:

 

foreach($_POST['selecionaCat'] as $key => $value){
$inserir2 = "INSERT INTO noticiascategorias VALUES (NULL, '$ultimoId','$value')";

 

Só consigo inserir o primeiro registro selecionado.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$inserir2 = '';
foreach($_POST['selecionaCat'] as $key => $value):
   $inserir2 .= "INSERT INTO `noticiascategorias` VALUES (NULL, '{$ultimoId}','{$value}'); ";
endforeach;
echo $inserir2;//somente para vermos se os dados estão corretos
mysql_query( $inserir2 );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... Me retornou isso:

INSERT INTO 'noticiascategorias' VALUES (NULL, '66','1')INSERT INTO 'noticiascategorias' VALUES (NULL, '66','3')INSERT INTO 'noticiascategorias' VALUES (NULL, '66','4')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 ''noticiascategorias' VALUES (NULL, '66','1')INSERT INTO 'noticiascategorias' VAL' at line 1

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

$inserir2 = '';
foreach($_POST['selecionaCat'] as $key => $value):
   $inserir2 .= sprintf(
       'INSERT INTO `noticiascategorias` VALUES (NULL,%d,%d);',
       $ultimoId,
       $value
   );
endforeach;
echo $inserir2;//somente para vermos se os dados estão corretos
mysql_query( $inserir2 );

Posta o resultado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Matheus...

 

O resultado foi o seguinte:

 

INSERT INTO `noticiascategorias` VALUES (NULL,67,3);INSERT INTO `noticiascategorias` VALUES (NULL,67,4);INSERT INTO `noticiascategorias` VALUES (NULL,67,6);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 'INSERT INTO `noticiascategorias` VALUES (NULL,67,4);INSERT INTO `noticiascategor' at line 1

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Executa essa consulta diretamente no seu PhpMyAdmin e poste o retorno:

INSERT INTO `noticiascategorias` VALUES (NULL,67,3);INSERT INTO `noticiascategorias` VALUES (NULL,67,4);INSERT INTO `noticiascategorias` VALUES (NULL,67,6);

Compartilhar este post


Link para o post
Compartilhar em outros sites

$inserir1			= "INSERT INTO noticias VALUES (NULL, '$data','$titulo','$paragrafos','$img')";
$consulta1			= mysql_query($inserir1);
$sqlCategoriaId		= "SELECT * FROM noticias ORDER BY idNoticias DESC";
$qrCategoriaId		= mysql_query($sqlCategoriaId) or die(mysql_error());
$rsCategoriaId		= mysql_fetch_object($qrCategoriaId);
$ultimoId			= $rsCategoriaId->idNoticias;
$inserir2 = '';
foreach($_POST['selecionaCat'] as $key => $value):
   $inserir2 .= sprintf(
       'INSERT INTO `noticiascategorias` VALUES (NULL,%d,%d);',
       $ultimoId,
       $value
   );
endforeach;
echo $inserir2;//somente para vermos se os dados estão corretos
$consulta2			= mysql_query($inserir2) or die(mysql_error());
$inserir3			= "INSERT INTO noticiassubcategorias VALUES (NULL, '$ultimoId','$subCatSelecionadas')";
$consulta3			= mysql_query($inserir3);
if($consulta1 && $consulta2 && $consulta3) {
       echo "<script>alert('Inserido com sucesso!');location.href='?c=noticias';</script>";
       die();
} else {
		echo "<script>alert('Erro ao cadastrar!');location.href='?c=noticias';</script>";
		die();
}

 

O primeiro insert está ok, cadastro e pego o ID corretamente, o problema está no segundo insert.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que é essa variável? $subCatSelecionadas

 

Tenho dois whiles dentro do form. Um para buscar as categorias e outro para buscar as subcategorias. O usuario poderá postar na categoria Noticias e na subcategoria de noticias Mundo, por exemplo. Isso está no 3º insert, já que é outra tabela. No segundo insert só consigo cadastrar um item por vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
$inserir1 = sprintf( "INSERT INTO noticias VALUES (NULL, '%s', '%s', '%s', '%s')" , $data , $titulo , $paragrafos , $img );
$consulta1 = mysql_query($inserir1) or die(mysql_error());
$sqlCategoriaId = 'SELECT * FROM `noticias` ORDER BY `idNoticias` DESC';
$qrCategoriaId = mysql_query($sqlCategoriaId) or die(mysql_error());
$rsCategoriaId = mysql_fetch_object($qrCategoriaId);
$ultimoId = $rsCategoriaId->idNoticias;

$inserir2 = '';
foreach( $_POST[ 'selecionaCat' ] as $key => $value ):
$inserir2 .= sprintf(
	'INSERT INTO `noticiascategorias` VALUES (NULL, %d, %d);' . PHP_EOL,
	$ultimoId,
	$value
);
endforeach;

echo '<pre>'.$inserir2.'</pre><br />';//somente para vermos se os dados estão corretos
$consulta2 = mysql_query($inserir2) or die(mysql_error());
echo 'Consulta 3:<br />';
$inserir3 = sprintf( 'INSERT INTO `noticiassubcategorias` VALUES (NULL, %d, \'%s\')' , $ultimoId , $subCatSelecionadas );
$consulta3 = mysql_query($inserir3) or die(mysql_error());

if( $consulta1 && $consulta2 && $consulta3 ) {
echo "<script>alert('Inserido com sucesso!');location.href='?c=noticias';</script>";
die();
} else {
echo "<script>alert('Erro ao cadastrar!');location.href='?c=noticias';</script>";
die();
}

 

 

Mete bronca aí..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só esse retorno:

 

INSERT INTO `noticiascategorias` VALUES (NULL, 74, 3);

INSERT INTO `noticiascategorias` VALUES (NULL, 74, 4);

INSERT INTO `noticiascategorias` VALUES (NULL, 74, 6);

 

 

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 'INSERT INTO `noticiascategorias` VALUES (NULL, 74, 4); INSERT INTO `noticiascat' at line 2

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante.. neste caso vamos adotar outra estratégia:

 

$erro = false;

$inserir1 = sprintf( "INSERT INTO noticias VALUES (NULL, '%s', '%s', '%s', '%s')" , $data , $titulo , $paragrafos , $img );
if ( !mysql_query($inserir1) ) $erro = true;
$sqlCategoriaId = 'SELECT * FROM `noticias` ORDER BY `idNoticias` DESC';
$qrCategoriaId = mysql_query($sqlCategoriaId) or die(mysql_error());
$rsCategoriaId = mysql_fetch_object($qrCategoriaId);
$ultimoId = $rsCategoriaId->idNoticias;

foreach( $_POST[ 'selecionaCat' ] as $key => $value ):
$inserir2 = sprintf( 'INSERT INTO `noticiascategorias` VALUES (NULL, %d, %d)' , $ultimoId, $value );
if ( !mysql_query($inserir2) ) $erro = true;
endforeach;

$inserir3 = sprintf( 'INSERT INTO `noticiassubcategorias` VALUES (NULL, %d, \'%s\')' , $ultimoId , $subCatSelecionadas );
if ( !mysql_query($inserir3) ) $erro = true;

if( !$erro ) {
echo "<script>alert('Inserido com sucesso!');location.href='?c=noticias';</script>";
die();
} else {
echo "<script>alert('Erro ao cadastrar!');location.href='?c=noticias';</script>";
die();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Matheus Tavares

 

PHP :seta: mysql_query

 

Parâmetro $query

 

A consulta SQL.

 

A consulta não deve terminar com um ponto e vírgula.

 

Significa que isso não vai funcionar

$inserir2 = '';
foreach( $_POST[ 'selecionaCat' ] as $key => $value ):
       $inserir2 .= sprintf(
               'INSERT INTO `noticiascategorias` VALUES (NULL, %d, %d);' . PHP_EOL,
               $ultimoId,
               $value
       );
endforeach;

 

 

Tente assim

foreach( $_POST[ 'selecionaCat' ] as $key => $value ):
       mysql_query( sprintf( 'INSERT INTO `noticiascategorias` VALUES ( NULL, %d, %d )', $ultimoId, $value ) ) or die( mysql_error( ) );
endforeach;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certinho o segundo. Veja se as adaptações que fiz para o 3º insert se está ok.

 

$erro = false;

$inserir1 = sprintf( "INSERT INTO noticias VALUES (NULL, '%s', '%s', '%s', '%s')" , $data , $titulo , $paragrafos , $img );
if ( !mysql_query($inserir1) ) $erro = true;
$sqlCategoriaId = 'SELECT * FROM `noticias` ORDER BY `idNoticias` DESC';
$qrCategoriaId = mysql_query($sqlCategoriaId) or die(mysql_error());
$rsCategoriaId = mysql_fetch_object($qrCategoriaId);
$ultimoId = $rsCategoriaId->idNoticias;

foreach( $_POST[ 'selecionaCat' ] as $key => $value ):
		$inserir2 = sprintf( 'INSERT INTO `noticiascategorias` VALUES (NULL, %d, %d)' , $ultimoId, $value );
		if ( !mysql_query($inserir2) ) $erro = true;
endforeach;
foreach( $_POST['selecionaSubCat'] as $key => $value ):
		$inserir3 = sprintf( 'INSERT INTO `noticiassubcategorias` VALUES (NULL, %d, \'%s\')' , $ultimoId , $subCatSelecionadas );
		echo $inserir3;
		if ( !mysql_query($inserir3) ) $erro = true;
endforeach;

if( !$erro ) {
		echo "<script>alert('Inserido com sucesso!');location.href='?c=noticias';</script>";
		die();
} else {
		echo "<script>alert('Erro ao cadastrar!');location.href='?c=noticias';</script>";
		die();
}

 

Obrigado. :)

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.