Ir para conteúdo

POWERED BY:

Arquivado

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

André Severino

[Resolvido] Erro php + mysql

Recommended Posts

Boa tarde galera, antes de explicar o erro, o sistema funciona assim:

 

Tenho 3 tabelas:

1- categoria

2- subcategoria

3- produto

 

Ex.:

 

Categoria (programação)

Subcategoria (php, asp)

Produto (Video aulas de php, Video aulas em asp,)

 

É deste jeito que está no banco de dados.

 

O erro está falando que não existe a tabela subcategoria, então eis a questão. A tabela subcategoria existe.

O erro começou a aparecer depois que eu tive que formatar o computador, instalei novamente o wamp, e restaurei o banco de dados, quando fui entrar na parte administrativa do site me deparei com esse problema, refiz as tabelas só que mesmo assim continua com o problema.

Eu consigo inserir os dados na categoria, mas quando eu cadastro um produto na subcategoria, eu não consigo alterar na subcategoria.

 

O código da operação.

 

<?php
include "conexao.php";

$acao	= $_POST["acao"];
$id		= $_POST["id"];

$txt_subcategoria 	= $_POST["txt_subcategoria"];
$id_categoria 	= $_POST["id_categoria"];

if ($acao == "Inserir")
{
$sql = "INSERT INTO subcategoria (id_categoria, subcategoria) VALUES ('$id_categoria', '$txt_subcategoria')";
	mysql_query($sql) or die (mysql_error());
	
	echo "<script type = 'text/javascript'> location.href = 'index.php?link=4'</script>";
	
}

if ($acao==Alterar)
{
	$sql	= "UPDATE categoria SET 
	id_categoria = '$id_categoria', 
	subcategoria = '$txt_subcategoria'
	WHERE id_categoria = '$id' ";
	mysql_query($sql) or die (mysql_error());
	
	echo "<script type = 'text/javascript'> location.href = 'index.php?link=4'</script>";
	
}

if ($acao==Excluir)
{
	$sql	= "DELETE FROM subcategoria WHERE id_subcategoria = '$id' ";
	mysql_query($sql) or die ("Não foi possível excluir a categoria");

	echo "<script type = 'text/javascript'> location.href = 'index.php?link=4'</script>";

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom colocar a estrutura das tabelas, e também o form que você faz os inserts.

mas sabe como é programação ne eheheh

 

Apenas uma observação:

Eu consigo excluir e inserir os dados, só que ele não altera a subcategoria, pois ele insere todos os dados na categoria Programação.

 

Então tirei uma ss da estrutura, segue abaixo a imagem, e os código dos formulario.

 

Imagem Postada

 

 

frm_subcategoria.php

<?php 
include "conexao.php"; 

$acao 	= $_GET["acao"];
$id 	= $_GET["id"];

if ($acao != "")
{
	$sql 	= "SELECT c.*, s.* FROM categoria c, subcategoria s WHERE c.id_categoria = s.id_categoria and id_subcategoria = '$id' "; 
	$qry 	= mysql_query($sql);
	$linha 	= mysql_fetch_array($qry);
	
	$subcategoria 	= $linha[subcategoria];
	//$id_categoria 	= $linha[id_categoria];
	}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link rel="stylesheet" href="css/adm_css.css" type="text/css" />

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Cadastro de categorias</td>
  </tr>
  <tr>
    <td><form id="form1" name="form1" method="post" action="op_subcategoria.php">
      <table width="350" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="79">Categoria</td>
          <td width="271"><label>
            <select name="id_categoria" id="id_categoria">
            <option> </option>
            <?php
			$sql = "SELECT * FROM categoria ORDER BY categoria";
			$qry = mysql_query($sql);
			while ($linha = mysql_fetch_array($qry)){
			
			$valor = $linha[id_categoria];
			
			if ($id_categoria = $valor)
			{
				$selecionado = "selected";
			}
			 else 
			 {
				 $selecionado = "";				 				 
			 }
				echo "<option value = \"$valor\" $selecionado > $linha[categoria] </option>";
				
			}
            ?>
            </select>
          </label></td>
        </tr>
        <tr>
          <td>Subcategoria</td>
          <td width="271"><input name="txt_subcategoria" type="text" id="txt_subcategoria" value="<?php echo $subcategoria; ?>" size="40" /></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input name="button" type="submit" id="button" value="<?php if ($acao !="") {echo $acao;} else { echo "Inserir";} ?>" />
            <input name="acao" type="hidden" id="acao" value="<?php if ($acao !="") {echo $acao;} else { echo "Inserir";} ?>" />
            <input name="id" type="hidden" id="id" value="<?php echo $id; ?>" /></td>
          </tr>
      </table>
    </form></td>
  </tr>
  <tr>
    <td> </td>
  </tr>
</table>



</body>
</html>

frm_categoria.php

<?php 
include "conexao.php"; 

$acao 	= $_GET["acao"];
$id 	= $_GET["id"];

if ($acao != "")
{
	$sql 	= "SELECT * FROM categoria WHERE id_categoria = '$id' ";
	$qry 	= mysql_query($sql);
	$linha 	= mysql_fetch_array($qry);
	
	$categoria 	= $linha[categoria];
	}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link rel="stylesheet" href="css/adm_css.css" type="text/css" />

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Cadastro de categorias</td>
  </tr>
  <tr>
    <td><form id="form1" name="form1" method="post" action="op_categoria.php">
      <table width="350" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="79">Categoria</td>
          <td width="271"><label>
          <input name="txt_categoria" type="text" id="txt_categoria" value="<?php echo $categoria; ?>" size="40" /></label></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input name="button" type="submit" id="button" value="<?php if ($acao !="") {echo $acao;} else { echo "Inserir";} ?>" />
            <input name="acao" type="hidden" id="acao" value="<?php if ($acao !="") {echo $acao;} else { echo "Inserir";} ?>" />
            <input name="id" type="hidden" id="id" value="<?php echo $id; ?>" /></td>
          </tr>
      </table>
    </form></td>
  </tr>
  <tr>
    <td> </td>
  </tr>
</table>



</body>
</html>

op_categoria.php

<?php
include "conexao.php";

$acao	= $_POST["acao"];
$id		= $_POST["id"];

$txt_categoria 	= $_POST["txt_categoria"];

if ($acao == "Inserir")
{
	$sql = "INSERT INTO categoria (categoria) VALUES ('$txt_categoria')";
	mysql_query($sql) or die ("Não foi possível inserir os dados");
	
	echo "<script type = 'text/javascript'> location.href = 'index.php?link=2'</script>";
	
}

if ($acao==Alterar)
{
	$sql	= "UPDATE categoria SET categoria = '$txt_categoria' WHERE id_categoria = '$id' ";
	mysql_query($sql) or die ("Não foi possível alterar os dados");
	
	echo "<script type = 'text/javascript'> location.href = 'index.php?link=2'</script>";
	
}

if ($acao==Excluir)
{
	$sql	= "DELETE FROM categoria WHERE id_categoria = '$id' ";
	mysql_query($sql) or die ("Não foi possível excluir a categoria");

	echo "<script type = 'text/javascript'> location.href = 'index.php?link=2'</script>";

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dei uma olhada por alto aki e vi o que segue,

 

observe essas duas linhas

if ($acao==Alterar)
if ($acao==Excluir)

você pode usar "else" evitando de testar todos os if's e também como se trata de uma string usar aspas "" nas palavras

 

ficando assim assim, altere as duas linhas

 

else if ($acao=="Alterar")
else if ($acao=="Excluir")

olha se ajudou alguma coisa e se continuar, qual tipo de erro que tá dando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Unknown column 'subcategoria' in 'field list'

O erro está falando que não existe a tabela subcategoria, então eis a questão. ?????????

 

Poderia dizer exatamente o que tem de errado, mas se você ler com mais atenção vai descobrir sozinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Unknown column 'subcategoria' in 'field list'

O erro está falando que não existe a tabela subcategoria, então eis a questão. ?????????

 

É @Jaime_Pinheiro, pelo visto você também passaria pelo mesmo problema, porque o erro fala que não existe a coluna 'subcategoria' na lista de campos, não tem nada a ver com tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria ter colocado em quotes... agora parece que foi minha resposta.

 

Caros amigos, o erro diz:

Unknown column 'subcategoria' in 'field list'

 

A conclusão inicial do amigo André da Silva foi:

O erro está falando que não existe a tabela subcategoria, então eis a questão.

 

Conclusão que tirei:

 

O tópico não precisaria existir se houvesse mais atenção na hora de interpretar o erro. Leiam com mais atenção, por favor. subcategoria é o nome de uma tabela e está sendo utilizada como uma coluna em um comando de sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria ter colocado em quotes... agora parece que foi minha resposta.

 

Caros amigos, o erro diz:

Unknown column 'subcategoria' in 'field list'

 

A conclusão inicial do amigo André da Silva foi:

O erro está falando que não existe a tabela subcategoria, então eis a questão.

 

Conclusão que tirei:

 

O tópico não precisaria existir se houvesse mais atenção na hora de interpretar o erro. Leiam com mais atenção, por favor. subcategoria é o nome de uma tabela e está sendo utilizada como uma coluna em um comando de sql.

 

"eis a questão ?" Você leu a questão com atenção? eu não estou pergutando sobre a coluna, estou perguntando porque aconteceu isso de 1 dia para o outro, porque no dia anterior estava funcionando normalmente.

Quando eu digitei 'tabela' ao invés de 'coluna' eu errei, estava com muito sono, não prestei muita atenção, pois como eu coloquei o erro do mysql o pessoal que iria ler ia perceber e ia passar despercebido esse erro de portugues.

 

E a conclusão que eu tirei é que você não sabe resolver esse problema, e para não ficar de fora de ganhar alguns post resolver falar que não precisava desse tópico, se não precisasse desse tópico eu já teria resolvido sozinho, criei este tópico para ver se alguem ja se deparou com esse problema alguma vez e que pudessse me ajudar, e quem sabe até outros futuros programadores.

Ninguém que cria tópicos sabe o suficiente. Por isso que existe esse fórum.

 

dei uma olhada por alto aki e vi o que segue,

 

observe essas duas linhas

 

if ($acao==Alterar)

if ($acao==Excluir)

 

 

 

você pode usar "else" evitando de testar todos os if's e também como se trata de uma string usar aspas "" nas palavras

 

ficando assim assim, altere as duas linhas

 

else if ($acao=="Alterar")

else if ($acao=="Excluir")

 

 

 

olha se ajudou alguma coisa e se continuar, qual tipo de erro que tá dando.

fiz isto que você sugeriu Victor e não consegui :(

 

Não sei o que está acontecendo isso começou de 1 dia para o outro, antes estava funcionando normalmente, e agora aparece isso, não alterei nenhum código nesse intervalo de tempo.

 

O nome da tabela é subcategoria, e tem uma coluna também chamada subcategoria, vocês acham que está gerando conflito no mysql ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

André,

 

Chegaste a testar estes comandos diretamente num cliente mysql? Já tive problemas semelhantes, não sei exatamente porque razão, mas o nome das colunas era case sensitive: o erro era o mesmo (só que para tabela desconhecida) e tinha de escrever o nome capitalizado. Outra questão interessante é: tens uma coluna com o mesmo nome da tabela. Não que você não possa, mas no geral seria algo como subcategoria.nome e não subcategoria.subcategoria. Quando escrever seus comandos sql, escreva-os da melhor maneira possivel. Use alias para as colunas (se achar melhor) e identifique para todas as colunas o nome de sua tabela.

 

De qualquer forma, tente reproduzir o problema diretamente em um cliente de mysql para excluir a possibilidade de ser um problema com o PHP ou o seu código. Se o problema persistir, tente o comando novamente, porém capitalizado.

 

Abraço

 

Tem certeza que isso está certo?

if ($acao==Alterar)
{
       $sql    = "UPDATE [b]categoria[/b] SET 
       id_categoria = '$id_categoria', 
       [b]subcategoria[/b] = '$txt_subcategoria'
       WHERE id_categoria = '$id' ";
       mysql_query($sql) or die (mysql_error());

       echo "<script type = 'text/javascript'> location.href = 'index.php?link=4'</script>";

}

Ainda penso que houve pouca atenção sobre o que o erro diz... Como diz noa estrutura, coluna subcategoria não existe em categoria.

 

Minha intenção não foi ofender ninguém, mas a falta de atenção as vezes é pior do que a falta de lógica, pois na revisão em busca de erros tomamos alguns pontos como certos, uma falsa certeza...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, então eu vi especificamente essas linhas do código e percebi que eu esqueci de alterar o id do botão estava ainda id_categoria, e escrevi id_subcategoria, e o update era subcategoria.

 

Só que agora aconteceu outro problema, vou criar outro tópico. Porque em relação ao erro já está tudo OK, está fucionando normal, agora o problema é que não está alterando o ID só isso.

 

obrigado a todos pela ajuda e se algum moderador quizer por como resolvido, pode colocar.

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.