Ir para conteúdo

POWERED BY:

Arquivado

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

turboboy

Crud em php + MySQL

Recommended Posts

olá sou novo no forum e tambem novo em php, estou desenvolvendo um sistema de cadastro de pizza para um trabalho pessoal, e estou com um problema na parte de Editar as tabelas do meu banco,

Segue meu BD

 

--
-- Estrutura da tabela `pizza`
--

CREATE TABLE IF NOT EXISTS `pizza` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pizza` varchar(255) NOT NULL,
  `valor` varchar(255) NOT NULL,
  `ingredientes` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

 


Segue abaixo o meu Editar.php

<?php
include_once 'restrito.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Editar Notícia</title>
</head>

<body>
<h1>Editar</h1>

<?php
   include("conexao.php");
   $id = $_GET["id"];
   $sql = "SELECT * FROM pizza WHERE id = '$id'";
   $rs = mysql_query($sql, $conexao);
   $dados = mysql_fetch_array($rs);
   
   ?>

<form id="form1" name="form1" method="post" action="upd.php">

  <p>Título: <input type="textarea " name="sabor" id="sabor" value="<?php echo $dados["sabor"]; ?>" /></p>
 
  <p>Subtítulo: <input type="textarea" name="valor" id="valor" value="<?php echo $dados["valor"]; ?>" /></p>
  <p>Notícia: <textarea name="ingredientes" id="ingredientes" cols="45" rows="5" value="" ><?php echo $dados["ingredientes"]; ?></textarea></p>
  <p><input type="submit" name="button" id="button" value="Cadastrar" /></p>
</form>

</body>
</html>


O upd.php

 

<?php
   include("conexao.php");
   
   $sabor = $_POST["sabor"];
   $valor = $_POST["valor"];
   $ingredientes = $_POST["ingredientes"];
   $id = $_POST["id"];
   
   $alterar = "UPDATE pizza SET
   titulo ='$titulo',
   valor ='$valor',
   ingredientes ='$ingredientes'
   where id=$id    ";
   
    mysql_query($alterar) or die ("erro ao alterar");
    header("Location: editar.php");
   
   
   ?>

se possivel me oriente no meu erro, pois estou a 2 dias quebrando a cabeça e não consigo....

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, clico em Cadastra os dados das tabelas e o que me volta são esses dois erros...

( ! ) Notice: Undefined index: id in C:\Program Files\VertrigoServ\www\jamil\upd.php on line 7

( ! ) Notice: Undefined variable: titulo in C:\Program Files\VertrigoServ\www\jamil\upd.php on line 11




arrumei os erros do upd.php

ficou assim:

 

<?php
   include("conexao.php");
   
   $id = $_GET["id"];
   $sabor = $_POST["sabor"];
   $valor = $_POST["valor"];
   $ingredientes = $_POST["ingredientes"];
   
   $sql = "UPDATE pizza SET sabor='$sabor' , valor='$valor' , ingredientes='$ingredientes' , id='$id'";
   
   $rs = mysql_query($sql, $conexao);
    header("Location: editar.php")
   ?>



só que agora o erro está

 

( ! ) Notice: Undefined index: id in C:\Program Files\VertrigoServ\www\jamil\editar.php on line 16

Compartilhar este post


Link para o post
Compartilhar em outros sites

(!) Notice: Undefined index: id in C:\Program Files\VertrigoServ\www\jamil\upd.php on line 7

 

id está indefinido.

Solução.

No arquivo restrito.php , crie um input type="hidden" e faça conforme abaixo

 

 <input type="hidden" name="id" value="<?php echo $id; ?>" />

( ! ) Notice: Undefined variable: titulo in C:\Program Files\VertrigoServ\www\jamil\upd.php on line 11

 

Não existe a variável $titulo e sim $sabor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só edite o post se for realmente necessário. Uma nova resposta, um novo post. Fica mais fácil te ajudarem.



meu erro está na linha 16 do editar.php

 

   $id = $_GET["id"];

 

o que seria ?

Undefined index:

 

Significa que não existe o dito index(no caso $GET["id"]);

 

Você precisa passar via get(no seu caso)

 

 

header (location: editar.php?id=$id);

Tentae

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei assim

 

<?php
include_once 'restrito.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Editar Notícia</title>
</head>

<body>
<h1>Editar/h1>

<?php
   include("conexao.php");
   $id = $_GET["id"];
   header ('location: editar.php?id=$id');
   $sql = "SELECT * FROM pizza WHERE id = '$id'";
   $rs = mysql_query($sql, $conexao);
   $dados = mysql_fetch_array($rs);

   
   ?>

<form id="form1" name="form1" method="post" action="upd.php">

  <p>Título: <input type="textarea " name="sabor" id="sabor" value="<?php echo $dados["sabor"]; ?>" /></p>
 
  <p>Subtítulo: <input type="textarea" name="valor" id="valor" value="<?php echo $dados["valor"]; ?>" /></p>
  <p>Notícia: <textarea name="ingredientes" id="ingredientes" cols="45" rows="5" value="" ><?php echo $dados["ingredientes"]; ?></textarea></p>
  <p><input type="submit" name="button" id="button" value="Cadastrar" /></p>
</form>

</body>
</html>



.....mais a pagina só fica carregando


na URL da pagina "http:// localhost:70/jamil/editar.php?id=$id"

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto é você passar o id do tipo hidden no formulario e resgatar via post

 

<?php
include_once 'restrito.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Editar Notícia</title>
</head>

<body>
<h1>Editar</h1>

<?php
   include("conexao.php");
   $id = isset( $_GET["id"] ) ? is_numeric( $_GET["id"] ) : null;
   
   $sql = "SELECT * FROM pizza WHERE id = '$id'";
   $rs = mysql_query($sql, $conexao);
   $dados = mysql_fetch_array($rs);
   
   ?>

<form id="form1" name="form1" method="post" action="upd.php">

  <p>Título: <input type="textarea " name="sabor" id="sabor" value="<?php echo $dados["sabor"]; ?>" /></p>
 
  <p>Subtítulo: <input type="textarea" name="valor" id="valor" value="<?php echo $dados["valor"]; ?>" /></p>
  <p>Notícia: <textarea name="ingredientes" id="ingredientes" cols="45" rows="5" value="" ><?php echo $dados["ingredientes"]; ?></textarea></p>
  <p>
  <!-- Mudança aqui -->
  <input type="hidden" name="id" value="<?php echo $dados["id"]; ?>"/>
  <!-- Mudança aqui -->  
  <input type="submit" name="button" id="button" value="Cadastrar" /></p>
</form>

</body>
</html>

 

upd.php

 

<?php
include("conexao.php");
//Procure sobre anti sql injection e validações

$id = isset( $_POST["id"] ) ? is_numeric( $_POST["id"] ) : null;
$sabor = isset( $_POST["sabor"] ) ? !empty( $_POST["sabor"] ) : null;

$valor = $_POST["valor"];
$ingredientes = $_POST["ingredientes"];

$sql = "UPDATE pizza SET sabor='$sabor' , valor='$valor' , ingredientes='$ingredientes' , id='$id'";

$rs = mysql_query($sql, $conexao) or die ("Error: " .mysql_error());
header("Location: editar.php")
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O correto é você passar o id do tipo hidden no formulario e resgatar via post

 

<?php
include_once 'restrito.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Editar Notícia</title>
</head>

<body>
<h1>Editar</h1>

<?php
   include("conexao.php");
   $id = isset( $_GET["id"] ) ? is_numeric( $_GET["id"] ) : null;
   
   $sql = "SELECT * FROM pizza WHERE id = '$id'";
   $rs = mysql_query($sql, $conexao);
   $dados = mysql_fetch_array($rs);
   
   ?>

<form id="form1" name="form1" method="post" action="upd.php">

  <p>Título: <input type="textarea " name="sabor" id="sabor" value="<?php echo $dados["sabor"]; ?>" /></p>
 
  <p>Subtítulo: <input type="textarea" name="valor" id="valor" value="<?php echo $dados["valor"]; ?>" /></p>
  <p>Notícia: <textarea name="ingredientes" id="ingredientes" cols="45" rows="5" value="" ><?php echo $dados["ingredientes"]; ?></textarea></p>
  <p>
  <!-- Mudança aqui -->
  <input type="hidden" name="id" value="<?php echo $dados["id"]; ?>"/>
  <!-- Mudança aqui -->  
  <input type="submit" name="button" id="button" value="Cadastrar" /></p>
</form>

</body>
</html>

 

upd.php

 

<?php
include("conexao.php");
//Procure sobre anti sql injection e validações

$id = isset( $_POST["id"] ) ? is_numeric( $_POST["id"] ) : null;
$sabor = isset( $_POST["sabor"] ) ? !empty( $_POST["sabor"] ) : null;

$valor = $_POST["valor"];
$ingredientes = $_POST["ingredientes"];

$sql = "UPDATE pizza SET sabor='$sabor' , valor='$valor' , ingredientes='$ingredientes' , id='$id'";

$rs = mysql_query($sql, $conexao) or die ("Error: " .mysql_error());
header("Location: editar.php")
?>

 

Error: Duplicate entry '0' for key 'PRIMARY'

Compartilhar este post


Link para o post
Compartilhar em outros sites

poe where nesse update se não a tabela toda vai ser altera com esses valores.

 

 

$sql = "UPDATE pizza SET sabor='$sabor' , valor='$valor' , ingredientes='$ingredientes' , id='$id'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

como vc fez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

turboboy no arquivo editar.php

 

colocar um campo no seu formulario

 

 

<?php include_once 'restrito.php'; ?>
<!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Editar Notícia</title> </head> <body> <h1>Editar</h1>
<?php    include("conexao.php");    $id = $_GET["id"];    $sql = "SELECT * FROM pizza WHERE id = '$id'";    $rs = mysql_query($sql, $conexao);    $dados = mysql_fetch_array($rs);        ?> 

 

 

<form id="form1" name="form1" method="post" action="upd.php">   
<input type="hidden" name="id" value="<? echo $dados['id'];?>"/>
<p>Título: <input type="textarea " name="sabor" id="sabor" value="<?php echo $dados["sabor"]; ?>" /></p>     

<p>Subtítulo: <input type="textarea" name="valor" id="valor" value="<?php echo $dados["valor"]; ?>" /></p> 
<p>Notícia: <textarea name="ingredientes" id="ingredientes" cols="45" rows="5" value="" ><?php echo $dados["ingredientes"]; ?></textarea></p>

   <p><input type="submit" name="button" id="button" value="Cadastrar" /></p> </form> </body> 
</html>

 

no upd.php

 

$sql = "UPDATE pizza SET sabor='$sabor' , valor='$valor' , ingredientes='$ingredientes' WHERE id='$id'";

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.