problemas no cadastro de livros

1. problemas no cadastro de livros

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 12/06/2008 - 16:52h

Ae galera, to implementando este script em PHP+MySQL, mas to tendo alguns problemas,
no campo 'editora' é um combox (consulta no bd e mostra no combox), só que ta acusando erro nesta parte, e não to achando o erro.
Segue o script de cadastro de livros
Livros.php
<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form>
<center>
<h2> Cadastro de Livros </h2>
<form method="POST" action="livros.php">
<font face="Arial" size="2">
Codigo do livro: <input type="text" name="cdlivro"> <br><br>
Titulo: <input type="text" name="titulo"> <br><br>
ISBN: <input type="text" name="isbn"> <br><br>
Autor: <input type="text" name="autor"> <br><br>
<?php include "mysqlconecta.php";
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro!" .mysql_error()); ?>
Editora: <select name="editora">
<option value="0"> <<Selecione uma editora>> </option>
<?php include "mysqlconecta.php"; while($array = mysql_fetch_array($sql_editora))
{ ?>
<option value= <?php include "mysqlconecta.php"; echo $array['cd_editora'];
echo $array['desc_editora']; ?> </option>
<?php } ?>
</select> <br><br>
Data:
dia <input type="text" name="dia" size="7"> /
mes <input type="text" name="mes" size="7"> /
ano <input type="text" name="ano" size="7"> <br><br>

Numero de paginas: <input type="text" name="numpag"> <br><br>
Numero de edicao: <input type="text" name="numedicao"> <br><br>

<br> <input type="submit" value="Incluir" name="cadastralivros">
<input type="hidden" name="cadastralivros" value="1">
<input type="submit" value="Alterar">
<input type="hidden" name="alteralivros" value="1">

<input type="reset" value="Limpar">

</form>

</body>
</html>
<?php
include "mysqlconecta.php";
if($_POST["cadastralivros"])
{
$cdlivro = $_POST['cdlivro'];
$titulo = $_POST['titulo'];
$isbn = $_POST['isbn'];
$autor = $_POST['autor'];
$editora = $_POST[$array['cd_editora']];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_publicacao = $dia .$mes .$ano;
$numpag = $_POST['numpag'];
$numedicao = $_POST['nomedicao'];
/*verifica os dados digitados*/
$erro=0;
if($cdlivro < 0)
echo "Erro! codigo do livro negativo!"; $erro=1;
if(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500))
echo "Erro! Data incorreta!"; $erro=1;
if($numpag <0)
echo "Erro! campo numero de paginas negativo!"; $erro=1;
if($numedicao <0)
echo "Erro! campo numero de edicao negativo!"; $erro=1;
if($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) || $dia=""||$mes=""||$ano=""||$numpag=""||$numedicao="")
echo "Erro! H&#65533; campos em branco que devem ser preenchidos!"; $erro=1;
if($erro == 0) //verifica se n&#65533;o houve erro
{
$sql_insert = mysql_query("insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao) values('$cdlivro','$titulo','$isbn','$autor','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}
?>
Obs:. Já inserir no bd as editoras, mas não esta aparecendo no combox.
Onde estou errando?


  


2. Re: problemas no cadastro de livros

William Chitto
pintofree

(usa Debian)

Enviado em 12/06/2008 - 18:40h

nessa parte
<option value= <?php include "mysqlconecta.php"; echo $array['cd_editora'];
echo $array['desc_editora']; ?> </option>
<?php } ?>

tira o "include "mysqlconecta.php"; "
fica assim
<option value= <?php include "mysqlconecta.php"; echo $array['cd_editora'];
echo $array['desc_editora']; ?> </option>
<?php } ?>

vc so precisa fazer a chamada a funcão de conexao bd uma unica vez no script. a menos q tenha fecahdo antes né


3. Re: problemas no cadastro de livros

André Silva
mestrekame

(usa Outra)

Enviado em 13/06/2008 - 13:01h

A primeira coisa é tirar esses includes (nclude "mysqlconecta.php";) , deixa só um antes da primera conexão.

A segunda coisa é adicionar " (aspas) no parametro value (value="").

<option value=" <?php echo $array['cd_editora'];
echo $array['desc_editora']; ?>" > </option>

Lembrar de usar > (simbolo maior) depois de ?> que no seu caso o codigo está assim

<option value= (CODIGO PHP) </option>

Note que está faltando ">" depois do codigo.


Uma ultima observação é que mysql_fetch_array associa a um array numérico, e vc está acessando a posição no array pelo nome $array['desc_editora']
,para acessar dessa forma vc utiliza mysql_fetch_assoc

<?php while($array = mysql_fetch_assoc($sql_editora))
{ ?>

Para terminar, um conselho, tente estruturar melhor o codigo, aprender como se usa classes, funcoes e etc.

Boa sorte

Abraço


4. Re: problemas no cadastro de livros

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 13/06/2008 - 16:00h

Vlw, pela ajuda!
arrumei, mas agora esta dando um erro na último linha 73 (parse error, unexpected $ in on line 73)

Segue o script novamente:
<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form>
<center>
<h2> Cadastro de Livros </h2>
<form method="POST" action="livros.php">
<font face="Arial" size="2">
Codigo do livro: <input type="text" name="cdlivro"> <br><br>
Titulo: <input type="text" name="titulo"> <br><br>
ISBN: <input type="text" name="isbn"> <br><br>
Autor: <input type="text" name="autor"> <br><br>
<?php include "mysqlconecta.php";
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro!" .mysql_error()); ?>
Editora: <select name="editora">
<?php while($array = mysql_fetch_assoc($sql_editora))
{ ?>
<option value=" <?php echo $array['cd_editora'];
echo $array['desc_editora']; ?>" > </option>
</select> <br><br>
Data:
dia <input type="text" name="dia" size="7"> /
mes <input type="text" name="mes" size="7"> /
ano <input type="text" name="ano" size="7"> <br><br>

Numero de paginas: <input type="text" name="numpag"> <br><br>
Numero de edicao: <input type="text" name="numedicao"> <br><br>

<br> <input type="submit" value="Incluir" name="cadastralivros">
<input type="hidden" name="cadastralivros" value="1">
<input type="submit" value="Alterar">
<input type="hidden" name="alteralivros" value="1">

<input type="reset" value="Limpar"
</form>

</body>
</html>
<?php
include "mysqlconecta.php";
if($_POST["cadastralivros"])
{
$cdlivro = $_POST['cdlivro'];
$titulo = $_POST['titulo'];
$isbn = $_POST['isbn'];
$autor = $_POST['autor'];
$editora = $_POST[$array['cd_editora']];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_publicacao = $dia .$mes .$ano;
$numpag = $_POST['numpag'];
$numedicao = $_POST['nomedicao'];
/*verifica os dados digitados*/
$erro=0;
if($cdlivro < 0)
echo "Erro! codigo do livro negativo!"; $erro=1;
if(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500))
echo "Erro! Data incorreta!"; $erro=1;
if($numpag <0)
echo "Erro! campo numero de paginas negativo!"; $erro=1;
if($numedicao <0)
echo "Erro! campo numero de edicao negativo!"; $erro=1;
if($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) ||
$dia=""||$mes=""||$ano=""||$numpag=""||$numedicao="")
echo "Erro! Ha campos em branco que devem ser preenchidos!"; $erro=1;
if($erro == 0) //verifica se nao houve erro
{
$sql_insert = mysql_query("insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao) values('$cdlivro','$titulo','$isbn','$autor','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}
?>

Estou em cima desse erro e não to achando???



5. Re: problemas no cadastro de livros

André Silva
mestrekame

(usa Outra)

Enviado em 13/06/2008 - 20:01h

Olá,

me parece que seu problema está na linha que vc está fazendo a inserção. Tem muito tempo que nao trabalho com PHP mas acho que não se usa o tipo String daquela forma.

Substitui por isso que deve dar certo

$sql_insert = mysql_query(" insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao) values(\'" + $cdlivro + "\',\'" + $titulo +"\',\'" + $isbn +"\',\'" + $autor +"\',\'" + $editora +"\',\'" + $data_publicacao +"\',\'" + $numpag +"\',\'" + $numedicao + "\'") or die("Erro! ".mysql_error());

abraço


6. Re: problemas no cadastro de livros

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 16/06/2008 - 13:37h

<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form>
<center>
<h2> Cadastro de Livros </h2>
<form method="POST" action="livros.php">
<font face="Arial" size="2">
Codigo do livro: <input type="text" name="cdlivro"> <br><br>
Titulo: <input type="text" name="titulo"> <br><br>
ISBN: <input type="text" name="isbn"> <br><br>
Autor: <input type="text" name="autor"> <br><br>
Editora: <select name="editora">
<option value="" > Selecione uma editora </option>
<?php
while($fetch = mysql_fetch_assoc($sql_editora))
{
echo " <option value=" '.$fetch['cd_editora'].' '.$fetch['desc_editora'].' " > </option> ";
} ?>
</select> <br><br>
Data de registro do livro:
dia <input type="text" name="dia" size="7"> /
mes <input type="text" name="mes" size="7"> /
ano <input type="text" name="ano" size="7"> <br><br>

Numero de paginas: <input type="text" name="numpag" size="5"> <br><br>
Numero de edicao: <input type="text" name="numedicao" size="5"> <br><br>

<br> <input type="submit" value="Incluir" name="cadastralivros">
<input type="submit" value="Alterar" name="alteralivros">

<input type="reset" value="Limpar">

</form>

</body>
</html>
<?php
include "mysqlconecta.php";
if($_POST['cadastralivros']) /*primeiro if*/
{
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro " .mysql_error());
$cdlivro = $_POST['cdlivro'];
$titulo = $_POST['titulo']; $titulo = strtoupper($titulo);
$isbn = $_POST['isbn'];
$autor = $_POST['autor']; $isbn = strtoupper($autor);
$editora = $_POST['editora'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_publicacao = $dia .$mes .$ano;
$numpag = $_POST['numpag'];
$numedicao = $_POST['nomedicao'];
/*verifica os dados digitados*/
$erro=0;
if($cdlivro < 0)
echo "Erro! código do livro negativo!"; $erro=1;
if(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500))
echo "Erro! Data incorreta!"; $erro=1;
if($numpag <0)
echo "Erro! campo número de páginas negativo!"; $erro=1;
if($numedicao <0)
echo "Erro! campo número de edição negativo!"; $erro=1;
if($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) || $dia=""||$mes=""||$ano=""||$numpag=""||$numedicao="")
echo "Erro! Há campos em branco que devem ser preenchidos!"; $erro=1;
if($erro == 0) //verifica se não houve erro
{
$sql_insert_livros = mysql_query("insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao values('$cdlivro','$titulo','$isbn','$autor','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}/*fim do primeiro if*/
?>

já tentei e ocorre esse erro:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in 18

como corri-lo?
Além desse erro depois de concertado não mostra o conteúdo do combox!
sendo que inserir as editoras já no bd
preciso arrumar isso urgente!
estou em cima disso tentando!
se alguém ae souber onde esta o erro da um toque ae.

Grato


7. Re: problemas no cadastro de livros

Rafael
mtcrafa

(usa Outra)

Enviado em 16/06/2008 - 17:16h

coloca o
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro " .mysql_error());
antes do primeiro if

e na listbox
verifica a concatenação, ficando assim:

echo "<option value=".$fetch['cd_editora'].'">'.$fetch['desc_editora']."</option> ";


8. Re: problemas no cadastro de livros

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 17/06/2008 - 14:30h

OK, já arrumei segue o script PHP
<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form>
<center>
<h2> Cadastro de Livros </h2>
<form method="POST" action="livros.php">
<font face="Arial" size="2">
Codigo do livro: <input type="text" name="cdlivro"> <br><br>
Titulo: <input type="text" name="titulo"> <br><br>
ISBN: <input type="text" name="isbn"> <br><br>
Autor: <input type="text" name="autor"> <br><br>
Editora: <select name="editora">
<option value="" > Selecione uma editora </option>
<?php include "mysqlconecta.php";
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro " .mysql_error());
while($fetch = mysql_fetch_assoc($sql_editora))
{
echo '<option value="'.$fetch['cd_editora'].'">'.$fetch['desc_editora'].'</option>';
} ?>
</select> <br><br>
Data de registro do livro:
dia <input type="text" name="dia" size="7"> /
mes <input type="text" name="mes" size="7"> /
ano <input type="text" name="ano" size="7"> <br><br>

Numero de paginas: <input type="text" name="numpag" size="5"> <br><br>
Numero de edicao: <input type="text" name="numedicao" size="5"> <br><br>

<br> <input type="submit" value="Incluir" name="cadastralivros">
<input type="submit" value="Alterar" name="alteralivros">

<input type="reset" value="Limpar">


</body>
</html>
<?php
include "mysqlconecta.php";
if($_POST['cadastralivros']) /*primeiro if*/
{
$cdlivro = $_POST['cdlivro'];
$titulo = $_POST['titulo']; $titulo = strtoupper($titulo);
$isbn = $_POST['isbn'];
$autor = $_POST['autor']; $isbn = strtoupper($autor);
$editora = $_POST['editora'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_publicacao = $dia .$mes .$ano;
$numpag = $_POST['numpag'];
$numedicao = $_POST['nomedicao'];
/*verifica os dados digitados*/
$erro=0;
if($cdlivro < 0)
echo "Erro! c&#65533;digo do livro negativo!"; $erro=1;
if(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500))
echo "Erro! Data incorreta!"; $erro=1;
if($numpag <0)
echo "Erro! campo n&#65533;mero de p&#65533;ginas negativo!"; $erro=1;
if($numedicao <0)
echo "Erro! campo n&#65533;mero de edi&#65533;&#65533;o negativo!"; $erro=1;
if($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) || $dia=""||$mes=""||$ano=""||$numpag=""||$numedicao="")
echo "Erro! H&#65533; campos em branco que devem ser preenchidos!"; $erro=1;
if($erro == 0) //verifica se n&#65533;o houve erro
{
$sql_insert_livros = mysql_query("insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao values('$cdlivro','$titulo','$isbn','$autor','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}/*fim do primeiro if*/
?>

Mais era para mostrar no combox o código da editora e o nome da editora, e preciso pegar o código da editora porque é uma chave estrangeira da tabela livro relacionada com a tabela editora.
Então alguma sugestão??
Outra coisa também pq quando clico no botão "Incluir" nda acontece?

Para visualizar melhor veja:

http://mundodacomputacao.100webspace.net/livros.php

Grato pela atenção



9. Re: problemas no cadastro de livros

Rafael
mtcrafa

(usa Outra)

Enviado em 18/06/2008 - 11:30h

Sobre a combo Box faz dessa maneira,

echo '<option value="'.$fetch['cd_editora'].'">'.$fetch['cd_editora'].' - '.$fetch['desc_editora'].'</option>';

veja que na value da opção do combo estou buscando somente o código para enviar via post para inserção e para visualizar o código na lista adicione novamente o código .$fetch['cd_editora'].

Quanto a inserção não ser efetuada, tem um erro na parte da verificação de dados, a variável $erro sempre recebe 1. Fiz a seguinte alteração usando elseif

//verifica os dados digitados
$erro=0;
if($cdlivro < 0){
echo "Erro! código do livro negativo!";
$erro=1;
}
elseif(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500)){
echo "Erro! Data incorreta!";
$erro=1;
}
elseif($numpag <0){
echo "Erro! campo número de páginas negativo!";
$erro=1;
}
elseif($numedicao <0){
echo "Erro! campo número de edição negativo!";
$erro=1;
}
elseif($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) || $dia=""||$mes=""||$ano=""||$numpag=""||$numedicao=""){
echo "Erro! Há campos em branco que devem ser preenchidos!";
$erro=1;
}
elseif($erro == 0) //verifica se não houve erro
{
$sql_insert_livros = mysql_query("insert into livro(cd_livro,titulo,isbn,autor,cd_editora,dt_publicacao,numpag,numedicao values('$cdlivro','$titulo','$isbn','$autor','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}/*fim do primeiro if*/


e no inicio do codigo:

<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form> <--- apague esta tag
<center>
<h2> Cadastro de Livros </h2>


10. pq não esta cadastrando no bd?

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 19/06/2008 - 16:42h

Ok, fiz as alterações como vc disse, ocorre um erro na hora de cadastrar.
Segue o script:
<html>
<head> <title> Cadastro de Livros </title> </head>
<body>
<form>
<center>
<h2> Cadastro de Livros </h2>
<form action="livros.php" method="POST">
Codigo do livro: <input type="text" name="cdlivro"> <br><br>
Titulo: <input type="text" name="titulo"> <br><br>
Autor: <input type="text" name="autor"> <br><br>
ISBN: <input type="text" name="isbn"> <br><br>
Editora: <select name="editora">
<option value="" > Selecione uma editora </option>
<?php include "mysqlconecta.php";
$sql_editora = mysql_query("select cd_editora,desc_editora from editora") or die("Erro " .mysql_error());
while($fetch = mysql_fetch_assoc($sql_editora))
{
echo '<option value="'.$fetch['cd_editora'].'">'.$fetch['cd_editora'].' - '.$fetch['desc_editora'].'</option>';
} ?>
</select> <br><br>
Data de registro do livro:
dia <input type="text" name="dia" size="7"> /
mes <input type="text" name="mes" size="7"> /
ano <input type="text" name="ano" size="7"> <br><br>

Numero de paginas: <input type="text" name="numpag" size="5"> <br><br>
Numero de edicao: <input type="text" name="numedicao" size="5"> <br><br>

<br>
<input type="submit" value="Cadastrar" name="enviar">
<input type="hidden" name="cadastralivros" value="1">
<input type="reset" value="Limpar">
</form>
</body>
</html>
<?php
include "mysqlconecta.php";
if($_POST["cadastralivros"]) /*primeiro if*/
{
$cdlivro = $_POST['cdlivro'];
$titulo = $_POST['titulo']; $titulo = strtoupper($titulo);
$isbn = $_POST['isbn'];
$autor = $_POST['autor']; $isbn = strtoupper($autor);
$editora = $_POST['editora'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$data_publicacao = $dia .$mes .$ano;
$numpag = $_POST['numpag'];
$numedicao = $_POST['nomedicao'];
//verifica os dados digitados
$erro=0;
if($cdlivro < 0){
echo "Erro! código do livro negativo!";
$erro=1;
}
elseif(($dia<1 || $dia>31) ||($mes<1 || $mes>12) ||($ano <1500)){
echo "Erro! Data incorreta!";
$erro=1;
}
elseif($numpag <0){
echo "Erro! campo número de páginas negativo!";
$erro=1;
}
elseif($numedicao <0){
echo "Erro! campo número de edição negativo!";
$erro=1;
}
elseif($cdlivro=""||empty($titulo)||empty($isbn)||empty($autor) || $dia=""||$mes=""||$ano=""||$numpag=""||$numedicao=""){
echo "Erro! Há campos em branco que devem ser preenchidos!";
$erro=1;
}
elseif($erro == 0) //verifica se não houve erro
{
$sql_insert_livros = mysql_query("insert into livro(cd_livro,titulo,autor,isbn,cd_editora,dt_publicacao,numpag,numedicao) values('$cdlivro','$titulo',,'$autor','$isbn','$editora','$data_publicacao','$numpag','$numedicao'") or die("Erro! ".mysql_error());
echo "Livro cadastrado com Sucesso!";
}
}/*fim do primeiro if*/

?>


Onde estou errando?
testa ae: http://mundodacomputacao.100webspace.net/livros.php

create table livro(
cd_livro int,
titulo varchar(100),
autor varchar(100),
isbn varchar(30),
cd_editora int,
dt_publicacaco date,
numpag int,
numedicao int,
primary key(cd_livro),
foreign key(cd_editora) references editora(cd_editora)
);

create table editora(
cd_editora int,
desc_editora varchar(60),
primary key(cd_editora)
);

Se possível testa ae, e informar onde estou errando?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts