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

tsunamidream

erro pk?

12 mensagens neste tópico

Boas

no seguinte codigo dá erro e nao insere os dados na base de dados...

<title>Painel Administração - Inserir DVD</title><body bgcolor="#0066CC">
<center><form action='' method='POST'> 
<p><b>Codigo DVD:</b><br /><input type='text' name='cod_fdvd'/> 
<p><b>Nome DVD:</b><br /><input type='text' name='titulo_fdvd'/> 
<p><b>Genero DVD:</b><br /><input type='text' name='genero_fdvd'/> 
<p><b>Duracao DVD:</b><br /><input type='text' name='duracao_fdvd'/> 
<p><b>Ano DVD:</b><br /><input type='text' name='ano_fdvd'/> 
<p><b>Produtor DVD:</b><br /><input type='text' name='produtor_fdvd'/> 
<p><input type='submit' value='Inserir Filme DVD' /><input type='hidden' value='1' name='submitted' /> 
</form></center>

<?
$dbconn = mysql_connect("localhost","root","");
mysql_select_db("videoteca",$dbconn);
$result = mysql_query($query,$dbconn);
if (isset($_POST['submitted'])) { 
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
$query = "INSERT INTO `videoteca` ( `cod_fdvd` ,  `titulo_fdvd` ,  `genero_fdvd` ,  `duracao_fdvd` ,  `ano_fdvd` ,  `produtor_fdvd`  ) VALUES(  '{$_POST['cod_fdvd']}' ,  '{$_POST['titulo_fdvd']}' ,  '{$_POST['genero_fdvd']}' ,  '{$_POST['duracao_fdvd']}' ,  '{$_POST['ano_fdvd']}' ,  '{$_POST['produtor_fdvd']}'  ) "; 
mysql_query($sql) or die(mysql_error()); 
echo "Adicionado.<br />"; 
echo "<a href='inserirdvd.php'>Inserir</a>";
?>
<center>
<h5><a href="paineladmin.php">Voltar ao Painel de Administração</a></h5>
<h5><a href="index.php">Sair (Logout)</a></h5>
</center>

o que estou a fazer mal?

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei

Mas para ajudar podias:

* continuar o tópico que  já tinhas sobre a videoteca

* usar tag com [ code=php]

* dizer qual o erro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, pelo que vi os erros são:

Falta-te fechar a chaveta } do IF - pelo menos aqui no codigo que tens

a linha $result = mysql_query($query,$dbconn); - não esta ai a fazer nada, podes apagar.

mysql_query($sql) or die(mysql_error()); - aqui deveria ser mysql_query($query) or die(mysql_error()); visto estares a meter os valoes em $query e não em $sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Obrigado pelas ajudas. já funciona, mas agora dá vários avisos...

com o seguinte código...:

<title>Painel Administração - Inserir DVD</title><body bgcolor="#0066CC">
<center><form action='' method='POST'> 
<p><b>Codigo DVD:</b><br /><input type='text' name='cod_fdvd'/> 
<p><b>Nome DVD:</b><br /><input type='text' name='titulo_fdvd'/> 
<p><b>Genero DVD:</b><br /><input type='text' name='genero_fdvd'/> 
<p><b>Duracao DVD:</b><br /><input type='text' name='duracao_fdvd'/> 
<p><b>Ano DVD:</b><br /><input type='text' name='ano_fdvd'/> 
<p><b>Produtor DVD:</b><br /><input type='text' name='produtor_fdvd'/> 
<p><input type='submit' value='Inserir Filme DVD' /><input type='hidden' value='1' name='submitted' /> 
</form></center>

<?php
$dbconn = mysql_connect("localhost","root","");
mysql_select_db("videoteca",$dbconn);
if (isset($_POST['submitted'])) {
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }}
$query = "INSERT INTO `filmesdvd` ( `cod_fdvd` ,  `titulo_fdvd` ,  `genero_fdvd` ,  `duracao_fdvd` ,  `ano_fdvd` ,  `produtor_fdvd`  ) VALUES(  '{$_POST['cod_fdvd']}' ,  '{$_POST['titulo_fdvd']}' ,  '{$_POST['genero_fdvd']}' ,  '{$_POST['duracao_fdvd']}' ,  '{$_POST['ano_fdvd']}' ,  '{$_POST['produtor_fdvd']}'  ) ";
mysql_query($query) or die(mysql_error());
echo "Adicionado.<br />";
echo $query;
echo "<a href='inserirdvd.php'>Inserir Outro</a>";
?>
<center>
<h5><a href="paineladmin.php">Voltar ao Painel de Administração</a></h5>
<h5><a href="index.php">Sair (Logout)</a></h5>
</center>

dá:

Notice: Undefined index: cod_fdvd in C:\wamp\www\inserirdvd.php on line 17

Notice: Undefined index: titulo_fdvd in C:\wamp\www\inserirdvd.php on line 17

Notice: Undefined index: genero_fdvd in C:\wamp\www\inserirdvd.php on line 17

Notice: Undefined index: duracao_fdvd in C:\wamp\www\inserirdvd.php on line 17

Notice: Undefined index: ano_fdvd in C:\wamp\www\inserirdvd.php on line 17

Notice: Undefined index: produtor_fdvd in C:\wamp\www\inserirdvd.php on line 17

Duplicate entry '' for key 'PRIMARY'

o que está mal desta vez?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso é porque na variável $_POST não existem os indexes correspondentes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso é porque na variável $_POST não existem os indexes correspondentes

Boas

podes explicar isso sff? é que nao percebo muito de php e tenho que acabar a PAP.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quando envias um formulário de pelo método post se a campo do formulário for vazio o respectivo index do formulário não existe.

imagina o seguinte formulário de pesquisa

<form method="post" action="search">
     <input type="text" name="key" value="" />
     <input type="submit" value="procurar" />
</form>

se submeteres o formulário em branco a variável $_POST['key'] não vai existir dai o warning. Como podes contornar verificas se a variável existe se não existir introduzes um campo em branco, pegando no teu código:

foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }}
$query = "INSERT INTO `filmesdvd` ( `cod_fdvd` ,  `titulo_fdvd` ,  `genero_fdvd` ,  `duracao_fdvd` ,  `ano_fdvd` ,  `produtor_fdvd`  ) VALUES(  '{isset($_POST['cod_fdvd'])?$_POST['cod_fdvd']:''}' ,  '{isset($_POST['titulo_fdvd'])?$_POST['titulo_fdvd']:''}' ,  '{isset($_POST['titulo_fdvd'])?$_POST['genero_fdvd']:''}' ,  '{isset($_POST['duracao_fdvd'])?$_POST['duracao_fdvd']:''}' ,  '{isset($_POST['ano_fdvd'])?$_POST['ano_fdvd']:''}' ,  '{isset($_POST['produtor_fdvd'])?$_POST['produtor_fdvd']:''}'  ) ";
mysql_query($query) or die(mysql_error())
;

já agora ele esta também a dizer-te que já tem um registo com aquela chave primária

Fica bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Resolvi da seguinte forma:

<title>Painel Administração - Inserir DVD</title><body bgcolor="#0066CC">
<center>


<?php
if (isset($_POST['submitted'])){
$dbconn = mysql_connect("localhost","root","");
mysql_select_db("videoteca",$dbconn);
if (isset($_POST['submitted'])) {
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }}
$sql = "INSERT INTO filmesdvd ( `cod_fdvd` ,  `titulo_fdvd` ,  `genero_fdvd` ,  `duracao_fdvd` ,  `ano_fdvd` ,  `produtor_fdvd`  ) VALUES('{$_POST['cod_fdvd']}'  ,  '{$_POST['titulo_fdvd']}' ,  '{$_POST['genero_fdvd']}' ,  '{$_POST['duracao_fdvd']}' ,  '{$_POST['ano_fdvd']}' ,  '{$_POST['produtor_fdvd']}'  ) ";
mysql_query($sql) or die(mysql_error());
echo "Adicionado:<br />";
echo "'{$_POST['cod_fdvd']}' ,  '{$_POST['titulo_fdvd']}' ,  '{$_POST['genero_fdvd']}' ,  '{$_POST['duracao_fdvd']}' ,  '{$_POST['ano_fdvd']}' ,  '{$_POST['produtor_fdvd']}'";
echo $sql;
echo "<a href='inserirdvd.php'>Inserir Outro</a>";
}


else
{
?>
<form action='' method='POST'> 
<p><b>Codigo DVD:</b><br /><input type='text' name='cod_fdvd'/> 
<p><b>Nome DVD:</b><br /><input type='text' name='titulo_fdvd'/> 
<p><b>Genero DVD:</b><br /><input type='text' name='genero_fdvd'/> 
<p><b>Duracao DVD:</b><br /><input type='text' name='duracao_fdvd'/> 
<p><b>Ano DVD:</b><br /><input type='text' name='ano_fdvd'/> 
<p><b>Produtor DVD:</b><br /><input type='text' name='produtor_fdvd'/> 
<p><input type='submit' value='Inserir Filme DVD' /><input type='hidden' value='1' name='submitted' /> 
</form>
<?php
}
?>

<h5><a href="paineladmin.php">Voltar ao Painel de Administração</a></h5>
<h5><a href="index.php">Sair (Logout)</a></h5>
</center>

funciona, mas gostava de saber se é correcto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só uma pergunta porque usas as chavetas nas variáveis post?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só uma pergunta porque usas as chavetas nas variáveis post?

Porque é assim que funcionam as inline var's no caso de arrays. ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só uma pergunta porque usas as chavetas nas variáveis post?

pk o código foi gerado no www.phpscaffold.com

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, não sabia dessa sempre a aprender lol, como eu uso sempre concatenação nunca senti necessidade de usar isso, mas é sempre bom aprender coisas novas, thanks djthyrax

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