• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Umbus

Lista

13 mensagens neste tópico

Boas, então o que quero fazer é o seguinte, tenho uma lista (<select>), e quero colocar na base de dados o resultado do clique do utilizador, pelo método post, o codigo que tenho é o seguinte:

<form method="post">
<select name"categorias"
                 <option name="Categorias">
                 <option>Musica, CD's e Vinyls</option>
                 <option>Instrumentos Musicais</option>
                 <option>Componentes</option>
         </select>
</form>

  <?
	global $ligar;
$enviar = $_POST[enviar];

if(!$enviar)
	{
echo "\n";
	}
else
	{
	$Categorias = $_POST[Categorias];
		$query = "INSERT INTO lista(conteudo) VALUES('$Categorias', NOW())";
	        $result = mysql_query($query) or die("Erro na query: $query. " .mysql_error());

		echo "<p>Mensagem adicionada!<br />";
		echo "\n";
		echo "<a href=\"administrador.php\"><font color=#AD585C>Menu Principal</font></a></p>";
		}
	}

O que eu quero saber é se o codigo está bem feito e se assim a escolha na lista fica na base de dados. Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja tive a testar, e tenho dois problemas, o mais grave é que os dados não vão para a base de dados não sei porque :S. Depois o código esta com um bug esquesito em que o link fica www.qualquercoisa.com/"\administrador.php\":

echo "<a href=\"administrador.php\"><font color=#AD585C>Menu Principal</font></a></p>";

O que posso fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O lnk ja esta bom mas os dados não vão para a base de dados :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso do value penso que seja so para o checkbox e o radio para as listas penso que não e preciso (posso estar errado, pois nunca coloquei nada na base de dados com listas mas penso que não) :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hey Swen, não era para me levares a mal XD. Eu sou mesmo assim quando estou a aprender sou assim, mas ate que e bom, que é a maneira que aprendo melhor e outras coisas :). Já vi que tinhas razão, o que eu estava a dizer não tinha sentido já que o "name" e só para a função POST, os "values" e que são para ir para a base de dados :P.

Mesmo assim os dados não estão a ir apra a base de dados :S. Bahh alguma sugestão?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo código que mostras, no form não tens acção nenhuma...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já fiz umas modificações, o meu código esta assim, a form e o envio estão na mesma pagina):

<?
function Adicionarstock()
{
	global $ligar;
$enviar = $_POST[enviar];

if(!$enviar)
	{


	?>
<div class="formholder">
<p class="titulo">Adicionar ao stock</p>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
         Titulo:
         <input type="text" name= "Titulo" size="20"><BR>
         Preço:
         <input type="text" name= "Preco" size="20"> <BR>
         Transporte:
         <input  type="text" name= "Precoenvio" size="20"> <BR>
         Categoria:
         <select name"Categorias"
                 <option name="Categorias">
                 <option value= "Musica, CDs e Vinyls">Musica, CDs e Vinyls</option>
                 <option value= "Instrumentos Musicais">Instrumentos Musicais</option>
                 <option value= "Componentes">Componentes</option>
         </select>  <BR>
         Descrição:
	<textarea name="Descricao" rows="15" cols="70">
	</textarea>
	<input type="submit" value="enviar" />
</form>
</div>
   <?
   	echo "\n";
	}
else
	{


	$titulo = $_POST[Titulo];
	$preco = $_POST[Preco];
	$precoenvio = $_POST[Precoenvio];
	$categoria = $_POST[Categorias];
	$descricao = $_POST[Descricao];


		$query = "INSERT INTO shopumbus_stock(titulo, preco, precoenvio, categoria, descricao) VALUES('$titulo', '$preco', '$precoenvio', '$categoria', '$descricao', NOW())";


	        $result = mysql_query($query) or die("Erro na query: $query. " .mysql_error());


if ($result==1){
echo "<p>Dados Enviados</p><br>";
}
   else {
"<p>Dados não enviados</p><br>";}
}
   echo "<a href=\"administrar.php\"><font color=#AD585C>Menu Principal</font></a>";
  }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

primeiro

não é $_post[enviar], mas sim $_POST['enviar']

põe no action do form

"?enviar=sim"

depois o check fazes assim

if($enviar=='sim')

porque da forma como fazes as coisas o $_POST['enviar'] nunca vai estar definido e o if deve avaliar a expressão sempre como false

falta-te por > na tag do select

e essa <option name="categorias"> não esta fechada nem serve para nada

devias no php.ini por opção show_errors = E_ALL e o display errors a on, assim tens warnings e erros e não andas à nora a tentar adivinhar o que se passa

O sql do insert tambem esta com erros não podes dar 5 campos como argumento e depois fazer o insert de 6

Não te vou poder ajudar mais porque vou amanha passar 1 mes no brasil para matar saudades da minha mulher que está lá de castigo à espera que o juiz decida se a filha pode vir para portugal connosco ou nao

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Do que percebi tinha que mudar para o seguinte (a ver se tenho alguma coisa mal):

function Adicionarstock()
{
	global $ligar;
	$enviar = $_POST[enviar];
	?>
<div class="formholder">
<p class="titulo">Adicionar ao stock</p>
<form action="?enviar=sim" method="post">
         Titulo:
         <input type="text" name= "Titulo" size="20"><BR>
         Preço:
         <input type="text" name= "Preco" size="20"> <BR>
         Transporte:
         <input  type="text" name= "Precoenvio" size="20"> <BR>
         Categoria:
         <select name"Categorias">
                 <option value= "Musica, CDs e Vinyls">Musica, CDs e Vinyls</option>
                 <option value= "Instrumentos Musicais">Instrumentos Musicais</option>
                 <option value= "Componentes">Componentes</option>
         </select>  <BR>
         Descrição:
	<textarea name="Descricao" rows="15" cols="70">
	</textarea>
	<input type="submit" value="enviar" />
</form>
</div>
   <?
   	
    if($enviar=='sim')
	{





	$titulo = $_POST[Titulo];
	$preco = $_POST[Preco];
	$precoenvio = $_POST[Precoenvio];
	$categoria = $_POST[Categorias];
	$descricao = $_POST[Descricao];


		$query = "INSERT INTO shopumbus_stock(titulo, preco, precoenvio, categoria, descricao) VALUES('$titulo', '$preco', '$precoenvio', '$categoria', '$descricao', NOW())";


	    $result = mysql_query($query) or die("Erro na query: $query. " .mysql_error());
        echo "Dados enviados";
                         	}

   else {
"<p>Dados não enviados</p><br>";}
}
   echo "<a href=\"administrar.php\"><font color=#AD585C>Menu Principal</font></a>";

}

Não percebi a parte do insert ter 5 campos como argumento e depois ter 6. E como faço para o show_errors = E_ALL?

Sven obrigado pela ajuda ate agora e boa viagem e sorte :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$query = "INSERT INTO shopumbus_stock(5 campos) VALUES( 6 campos)";

ta te a faltar adicionar o field para o NOW()

faltam-te as aspas em todos os $_POST, tem que ser $_POST[ 'texto'] incluindo na segunda linha $_POST['enviar']

faz uma pesquisa no forum o que não falta é informação para o show_errors

podes também fazer var_dump($_REQUEST) para veres o que esta a ser passado para a pagina

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora