Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo B.A

problema - inserindo no bd com list/menu

Recommended Posts

Olá!

Estou iniciando no php, e me deparei com um problema...

 

segue o codigo abaixo:?

 

<? include "../config.php";?>

<html>
<body>
<?php


$sql_modulos = 'SELECT * FROM categorias ';
$rs_modulos = mysql_query($sql_modulos);
?>
<?
echo"<select name='categorias' id='categorias'>"; ?>
<?php
while ($valores = mysql_fetch_assoc($rs_modulos)) {
print '<option value="'.$valores['nome_categoria'].'">'.$valores['nome_categoria'].'</option>';
}
?>
<form method="POST" action="inserir_anuncio.php">
ensira o nome do anuncio<input type="text" size="20" name="titulo_anuncio" value="<? echo $titulo_anuncio; ?>">
		 <BR>
		descrição: <input type="text" size="20" name="descricao_anun" value="<? echo $descricao_anun; ?>" >
		 <BR>
		  endereço  <input type="text" size="20" name="endereco" value="<? echo $endereco; ?>" >
			<BR>
		   telefone: <input type="text" size="20" name="telefone" value="<? echo $telefone; ?>" >
			<BR>
		   site: <input type="text" size="20" name="site" value="<? echo $site; ?>" >
			<BR>
		   responsável: <input type="text" size="20" name="resposavel" value="<? echo $resposavel; ?>" >
			<BR>
		   <input type="submit" value="inserir">
		   </select></option>
</form>
</body>
</html>

<?
 $sql = "INSERT INTO anuncio (id_anuncio,titulo_anuncio,descricao_anun,endereco,telefone,site,resposavel)values ('','$titulo_anuncio','$descricao_anun','$endereco','$telefone','$site','$resposavel')";
	 $sql_resultado = mysql_query($sql,$conexao) or die ("n foi possivel executar a consulta");
	 ?>

Bom o botão "inserir" não funca ou seja não inserir no bd!

Não descubro o que tem de errado..=/

E aproveitando o post queria perguntar uma coisa, eu estou tentando fazer um sistema de classificados, como eu vou atribuir a categoria no anuncio?

 

acho que perguntei muita coisa^^

 

vlw

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara fiz alguns ajustes, não revisei detalhadamente se código.

 

<form method="post" action="inserir_anuncio.php">
<select name='categorias' id='categorias'>

<?php
include '../config.php';
$rs_modulos = mysql_query('select * from categorias'); // faz assim do modo mais direto pra não precisar ficar atribuindo sempre as variáveis
while ($valores = mysql_fetch_array($rs_modulos)) {
	print "<option value='$valores[nome_categoria]'>$valores[nome_categoria]</option>";
}
?>

</select>

ensira o nome do anuncio:
<input type="text" size="20" name="titulo_anuncio" />
<BR>
descrição:
<input type="text" size="20" name="descricao_anun" />
<BR>
endereço:
<input type="text" size="20" name="endereco" />
<BR>
telefone:
<input type="text" size="20" name="telefone" />
<BR>
site:
<input type="text" size="20" name="site" />
<BR>
responsável:
<input type="text" size="20" name="resposavel" />
<BR>
<input type="submit" value="inserir">
</form>

<!-- imagino que este código abaixo seja o inserir_anuncio.php, correto? -->

<?php
include '../config.php';
$sql = "INSERT INTO anuncio (
	id_anuncio,
	titulo_anuncio,
	descricao_anun,
	endereco,
	telefone,
	site,
	resposavel
	) VALUES (
	'',
	'$titulo_anuncio',
	'$descricao_anun',
	'$endereco',
	'$telefone',
	'$site',
	'$resposavel'
	)";
	 $sql_resultado = mysql_query($sql,$conexao) or die ('n foi possivel executar a consulta');
?>

Tem muitas coisas que deverão ser corrigidas, mas vai fazendo aí que te ajudo, se for o caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo B.A, cara tem alguns pontos que eu gostaria que ajustasse pra um melhor desempenho do teu código, coisa que tu sempre levará contigo.

 

1º - Sempre que puder utilize apóstrofo (aspas simples) ao invés de aspas;

 

2º - Tenta não alternar entre o PHP e HTML muitas vezes, isso torna seu código mais lento pro servidor;

 

3º - Não utilize short_open_tags (<? ......), se tu colocar seu código em algum servidor com esta diretiva off, simplesmente não funcionará perfeitamente, use sempre <?php ....... ;

 

4º - Cuide a identação (organização, espaçamentos etc.) do seu código, isso lhe ajudará e muito na identificação dos erros e organização do código;

 

5º - MUITO IMPORTANTE, programe sempre com register_globals off, isso fará com que o teu código fique mais seguro e correto;

 

6º - Tem infinitas coisas que poderia te passar aqui, mas isso tu vai aprendendo com o tempo, acima de tudo, faça um código limpo, que dê pra reaproveitar o máximo possível das funções, conexões de banco etc.

 

Abração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olhando pro seu codigo eu posso assumir q id_anuncio eh chave primaria e tem auto_increment, por isso você deixa ele como ' ' no VALUES....

 

aih o q acontece: ele quebra o poder de auto_increment e entra uma vez no banco como ' ' (e nao como 1 , 2 , 3 , 4 , 5....)

 

aih na segunda tentativa de inserir algo na tabela ele bate ' ' com ' ' e ve q esse valor de chave ja existe entao nao cria a linha

 

 

pra arrumar isso eh facil, você troca o ' ' por NULL

 

 

 

 

$sql = "INSERT INTO anuncio (

id_anuncio,

titulo_anuncio,

descricao_anun,

endereco,

telefone,

site,

resposavel

) VALUES (

NULL,

'$titulo_anuncio',

'$descricao_anun',

'$endereco',

'$telefone',

'$site',

'$resposavel'

)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiramente obrigado pela atenção de vocês!^^

 

intendi, mas o seguinte, a ideia é, quando o usuario for incluir o anuncio ele escolhe a categoria pelo list menu, só que ele não pega o a id da categoria, ele só muda o nome e não insere valor algum, como eu faço para ao mudar o nome da categoria ele também pegar o id da categoria, ja que o anuncio é atribuido a categorias..

 

obrigado pela ajuda

 

 

att Rodrigo B.A

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo, mas nós nunca mencionamos pegar ID de categoria, sinceramente não lembro mesmo de ter comentado algo.

 

Vamos começar do zero.

 

Responda por ordem, ok?

 

1º - Este teu sistema está cadastrando algo novo ou está alterando dados já cadastrados?

 

2º - Tu tem uma página onde cadastra todas as categorias, correto? Depois disso, tu tem esta página onde tu está listando todas as categorias juntamente com os campos para que sejam gravados juntos na tabela anuncio, correto?

 

3º - Essa coisa que " ja que o anuncio é atribuido a categorias.. " não precisa do ID da categoria, sabe porque, digamos que você tenha uma página onde lá estão listadas todas as categorias existentes na tua tabela de categorias, tu vai apertar em alguma, abrirá uma nova página listando todos os anúncios daquela categoria e não daquela ID, entende? A ID, neste caso, é dispensável.

 

4º - Tu quer alterar a categoria? Mas onde está esta categoria? Na propria tabela de categorias ou em algum anúncio cadastrado?

 

Cara desculpa estar te fazendo estas perguntas, mas preciso saber quais são as tuas idéias.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aew galera bom dia!!! (Se algo não estiver de acordo comente ok)

Espero que eu possa te ajudar, acho que o que você quer é que antes de qualquer coisa o usuário tenha que escolher o tipo de categoria que ele quer registrar certo?

Bom, se for isso você precisará de uma página de cadastro para cada categoria... tipo: categoria futebol (página futebol.php)... e assim sucessivamente, após isso você vai criar seu select da seguinte forma:

 

<form method="post" action="selecionacategoria.php">

<select name="cat">

<option value=0></option>

<option value=1>FUTEBOL</option> (e assim sucessivamente)

</select>

<input type="submit" value="selecionar">

</form>

 

Esse pequeno formulário pode ser incluso na página em que o usuário irá começar a realizar o cadastro.

 

Na página selecionacategoria.php você vai pegar o item que foi selecionado, e de acordo com sua numeração utilizando if's e else's vai fazer com que o usuário seja levado até a página respectiva, tipo:

 

$tip = $_post['cat'];

 

function selecionar() {

if ($tip==0) {

print "É necessário selecionar o tipo!";

}

if ($tip==1) {

header('location:futebol.php'); \\ou pode usar o include

}

}

selecioar();

 

E assim por diante. Fazendo com que ele seja levado de acordo com o tipo que ele escolher a página que contém o formulário para cadastro dos anúncios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo, mas nós nunca mencionamos pegar ID de categoria, sinceramente não lembro mesmo de ter comentado algo.

 

Vamos começar do zero.

 

Responda por ordem, ok?

 

1º - Este teu sistema está cadastrando algo novo ou está alterando dados já cadastrados?

 

2º - Tu tem uma página onde cadastra todas as categorias, correto? Depois disso, tu tem esta página onde tu está listando todas as categorias juntamente com os campos para que sejam gravados juntos na tabela anuncio, correto?

 

3º - Essa coisa que " ja que o anuncio é atribuido a categorias.. " não precisa do ID da categoria, sabe porque, digamos que você tenha uma página onde lá estão listadas todas as categorias existentes na tua tabela de categorias, tu vai apertar em alguma, abrirá uma nova página listando todos os anúncios daquela categoria e não daquela ID, entende? A ID, neste caso, é dispensável.

 

4º - Tu quer alterar a categoria? Mas onde está esta categoria? Na propria tabela de categorias ou em algum anúncio cadastrado?

 

Cara desculpa estar te fazendo estas perguntas, mas preciso saber quais são as tuas idéias.

 

Abraços.

1º R: Estou cadastrando algo novo, não desenvolvi as páginas para editar ainda...

 

2º R: Na verdade, eu criei uma página para criar categoria, e uma para inserir o anuncio (onde ocorre o erro), então eu não dei continuidade, pois isto seria o básico do sistema como um todo, logo eu prefiro aprender o que estou com dúvida para depois processeder com o resto do sistema.

 

3º R:Sei, mas como vou "ligar" a tabela "categorias" a tabela "anuncios" ? Por exemplo quando eu inserir um anuncio, como vou diferenciar os anuncios na categoria selecionada?

 

4º R: Criei uma tabela para categorias e outra para anuncios.

 

att

 

Rodrigo B.A

Compartilhar este post


Link para o post
Compartilhar em outros sites

<form method='post' action='inserir_anuncio.php'>

<select name='categorias' id='categorias'>
<?php
include '../config.php';
$qr_cat = mysql_query('select id, nome from categorias'); // seleciona somente a ID e NOME da CATEGORIAS
while ($val = mysql_fetch_array($qr_cat)) {
	print "<option value='$val[id]'>$val[nome]</option>"; // vai gravar a ID ao invés do NOME
}
?>
</select>

ensira o nome do anuncio:
	<input type='text' size='20' name='titulo_anuncio' /><BR>
descrição:
	<input type='text' size='20' name='descricao_anun' /><BR>
endereço:
	<input type='text' size='20' name='endereco' /><BR>
telefone:
	<input type='text' size='20' name='telefone' /><BR>
site:
	<input type='text' size='20' name='site' /><BR>
responsável:
	<input type='text' size='20' name='resposavel' /><BR>
	<input type='submit' value='inserir'>
</form>


<!-- abaixo, inserir_anuncio.php -->

<?php

include '../config.php';

// validamos os dados com $_POST pra não precisarmos de register_globals, ok?

$titulo_anuncio		= $_POST['titulo_anuncio'];
$descricao_anun		= $_POST['descricao_anun'];
$endereco			= $_POST['endereco'];
$telefone			= $_POST['telefone'];
$site				= $_POST['site'];
$resposavel			= $_POST['resposavel'];
$id_categoria		= $_POST['categorias']; // será gravado a ID e não o NOME da categoria, ok?

/*

Se bem entendi tu quer fazer uma associação das IDs das categorias com os anúncios, certo?

Isso vai facilitar pro banco, tu vai ter um trabalhinho a mais, mas nada que não se possa fazer.

Cara faz esta parte primeiro, edita teus arquivos, este que estou postando aqui está bem enxuto e funcional,

organize de acordo com a tua necessidade.

Presta bem a atenção no que vai ser gravado, exemplo: id_categoria, se tu não tiver este campo na tabela anuncio, então cria, do mesmo tipo da id da categorias, preferencialmente do mesmo tamanho, ex.: INT(4).

*/

$sql = "INSERT INTO anuncio (
	id_anuncio,
	titulo_anuncio,
	descricao_anun,
	endereco,
	telefone,
	site,
	resposavel,

	id_categoria

	) VALUES (
	NULL,
	'$titulo_anuncio',
	'$descricao_anun',
	'$endereco',
	'$telefone',
	'$site',
	'$resposavel',

	'$id_categoria'

	)";
	 $sql_resultado = mysql_query($sql,$conexao) or die ('Não foi possível gravar os dados.');
?>

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funco, não pega as categorias.........

Estou tendo outras dúvidas também....

 

Vou tentando..

 

mas mesmo assim muito obrigado pela ajuda, ajudou muito^^

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oh Rodrigo, cara desculpa mesmo não ter ajudado, mas vai tentando, muda algumas partes do teu código cara, te dou uma força.

 

PHP é uma linguagem de fácil interpretação e super poderosa pra muitas coisas.

 

Não desisti velho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não desisti^^

Tenho algumas dúvidas e tal mas vo fazendo...

só uma coisa, pra eu mostrar os anuncios, eu dou um while neh, e ai dentro do while eu boto o echo com uma tabela dentro pra organizar os dados que serão resgatados do banco, mas não tem como eu organiza-las de outra forma?

dentro do php?

 

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem algumas formas nas quais tu pode mostrar seu conteúdo, o while é o mais usado, porque ele pega tudo que tu marcaste no SELECT de uma vez.

 

Tu também podes usar o mysql_result, só que um pouco mais complicado, pois tu tem que colocar célula a célula.

 

Ex.:

print mysql_result($query,0,'nome');
Assim ele irá imprimir o primeiro (0) nome da $query (SELECT * FROM .......)

 

Se quiseres imprimir o segundo nome tens que fazer: print mysql_result($query,1,'nome');

 

Etc.

 

Tu podes usar outros métodos, mas o while com fetch_array é mais apropriado, no teu caso, já mostra tudo, se não existir não mostra erro, é super tranquilo.

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.