Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Cassia Reis

A função update não altera os dados

Recommended Posts

Olá, boa noite.

Estou fazendo uma função para alterar os dados da tabela. O sistema está emitindo a mensagem de confirmação na tela, porém não altera nenhum dado.

Esses são meus arquivos:

Atividade.class.php;


<?php

class Atividade {
public $cdatividade;
public $nmatividade;
public $descricao;
public $horario_inicio;
public $horario_termino;
public $dias_semana;
public $orientador;
public $var;
public $val;
public $conexao;
public $banco;

function __construct(){
//criamos a nossa conexão com o banco de dados e selecionamos o banco
$conexao = mysql_pconnect("localhost", "root","") or die (mysql_error());
$banco = mysql_select_db("pi");
}

function __set($var, $val){
$this->$var = $val;
}

function setAtividade($cdatividade,$nmatividade,$descricao,$horario_inicio,$horario_termino,$dias_semana,$orientador)
{
$this->__construct();
$this->cdatividade = $cdatividade;
$this->nmatividade = $nmatividade;
$this->descricao = $descricao;
$this->horario_inicio = $horario_inicio;
$this->horario_termino = $horario_termino;
$this->dias_semana = $dias_semana;
$this->orientador = $orientador;

$sql = ("insert into atividades values (null,'$this->nmatividade', '$this->descricao','$this->horario_inicio','$this->horario_termino','$this->dias_semana','$this->orientador');");
$resultado = mysql_query($sql) or die ("Erro na inserção de dados".mysql_error());

if($resultado){
return true;
}else{
return false;
}
}

function getAtividade()
{
//$this->__construct();
$consulta = array();
$query = mysql_query("SELECT * FROM atividades");

if(mysql_num_rows($query) > 0){
//extract($query);
while($linha= mysql_fetch_array($query)){
$i = 0;
$this->cdatividade= $linha['cdatividade'];
$this->nmatividade = $linha['nmatividade'];
$this->descricao= $linha['descricao'];
$this->horario_inicio = $linha['horario_inicio'];
$this->horario_termino = $linha['horario_termino'];
$this->dias_semana = $linha['dias_semana'];
$this->orientador = $linha['orientador'];
//AQUI COLOCO O OBJETO DENTRO DE UM ARRAY
$consulta[] = clone $this;
//$i++;

}
return $consulta; //RETORNO O ARRAY
}
//return NULL;
}

function listaAtividade()
{
//$this->__construct();
$cod = $_GET['cdatividade'];
$consulta = array();
$query = mysql_query("SELECT * FROM atividades where cdatividade='$cod'");

if(mysql_num_rows($query) > 0){
//extract($query);
while($linha= mysql_fetch_array($query)){
$i = 0;
$this->cdatividade= $linha['cdatividade'];
$this->nmatividade = $linha['nmatividade'];
$this->descricao= $linha['descricao'];
$this->horario_inicio = $linha['horario_inicio'];
$this->horario_termino = $linha['horario_termino'];
$this->dias_semana = $linha['dias_semana'];
$this->orientador = $linha['orientador'];
//AQUI COLOCO O OBJETO DENTRO DE UM ARRAY
$consulta[] = clone $this;
//$i++;

}
return $consulta; //RETORNO O ARRAY
}
//return NULL;
}

function alteraAtividade(){

$sql = "UPDATE atividades SET nmatividade='$this->nmatividade',descricao='$this->descricao',
horario_inicio='$this->horario_inicio',horario_termino='$this->horario_termino',
dias_semana='$this->dias_semana',orientador='$this->orientador' where cdatividade='$this->cdatividadde'";

$resultado = mysql_query($sql);

if($resultado){
return true;
}
else{
return false;
}
}
}
?>

altera_atividade.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>Untitled Document</title>
</head>

<?php
include "css.php";
?>

<body>
<?
include "menu.php";
?>
<div id="geral">
<div id="atividade">
<form action="seta_atividade.php?cdatividade=<? require_once "Atividade.class.php"; $ati= new Atividade(); $ativ=$ati->listaAtividade(); echo $ati->cdatividade; ?>" method="post">
<fieldset>
<legend>Alterar Atividades</legend>

<label for="nmatividade">Nome:</label><input type="text" name="nmatividade" maxlenght="60" size="60"
value="<? echo $ati->nmatividade ?>"/>
<br>

<label for="descricao">Descrição:</label><input type="textarea" name="descricao" maxlenght="60" size="60"
value="<? echo $ati->descricao ?>"/>
<br>

<label for="horario_inicio">Horário de Início:</label><input type="text" name="horario_inicio" maxlenght="60" size="60"
value="<? echo $ati->horario_inicio ?>"/>
<br>

<label for="horario_termino">Horário de Término:</label><input type="text" name="horario_termino" maxlenght="60" size="60"
value="<? echo $ati->horario_termino ?>"/>
<br>

<label for="dias_semana">Dias da Semana:</label><input type="text" name="dias_semana" maxlenght="60" size="60"
value="<? echo $ati->dias_semana ?>"/>
<br>

<label for="orientador">Orientador:</label><input type="text" name="orientador" maxlenght="60" size="60"
value="<? echo $ati->orientador ?>"/>
<br />

<input type="submit" value="Alterar" /><br>
</fieldset>
</form>
</div>

<?
include "menu_atividade.php"
?>
</div>
</body>
</html>

seta_atividade.php


<?php
error_reporting(E_ALL ^ E_NOTICE);
include "Atividade.class.php";


$atividade = new Atividade();

$cdatividade = $_GET['cdatividade'];
$nmatividade = $_POST['nmatividade'];
$descricao = $_POST['descricao'];
$horario_inicio = $_POST['horario_inicio'];
$horario_termino = $_POST['horario_termino'];
$dias_semana = $_POST['dias_semana'];
$orientador = $_POST['orientador'];

if(!$atividade->alteraAtividade()){
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php?pagina=altera_atividade'>
<script type=\"text/javascript\">
alert(\"Erro na alteração.\");
</script>";
}
else{
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php?pagina=lista_atividades'>
<script type=\"text/javascript\">
alert(\"Alterado com sucesso.\");
</script>";
}


?>

Resumindo: o primeiro arquivo contém uma classe e o método alteraAtividade();

o segundo é um arquivo onde eu listo os campos que eu quero alterar pelo código e o terceiro é para onde eu mando os campos alterados no formulário. Mas ele manda a mensagem de confirmação como se tivesse sido alterado, mas não é. Alguém poderia me ajudar com meu código?

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cassia,

eu pude perceber que você não esta setando a váriavel "$atividade->cdatividade", e que a mesma encontra-se escrita de forma errada no método altera atividade, pois está escrito '$this->cdatividadde' quando deveria ser '$this->cdatividade'.

observe com estava:


function alteraAtividade(){

$sql = "UPDATE atividades SET nmatividade='$this->nmatividade',descricao='$this->descricao',
horario_inicio='$this->horario_inicio',horario_termino='$this->horario_termino',
dias_semana='$this->dias_semana',orientador='$this->orientador' where cdatividade='$this->cdatividadde'";

$resultado = mysql_query($sql);

if($resultado){
return true;
}
else{
return false;
}
}

deveria ser assim:


function alteraAtividade(){

$sql = "UPDATE atividades SET nmatividade='$this->nmatividade',descricao='$this->descricao',
horario_inicio='$this->horario_inicio',horario_termino='$this->horario_termino',
dias_semana='$this->dias_semana',orientador='$this->orientador' where cdatividade='$this->cdatividade'";

$resultado = mysql_query($sql);

if($resultado){
return true;
}
else{
return false;
}
}

agora o outro erro que eu pude observar, como já havia dito, foi que você não setou a váriavel '$atividade->cdatividade' antes de chamar o método, deveria ser assim:


$atividade = new Atividade();

$cdatividade = $_GET['cdatividade'];
$nmatividade = $_POST['nmatividade'];
$descricao = $_POST['descricao'];
$horario_inicio = $_POST['horario_inicio'];
$horario_termino = $_POST['horario_termino'];
$dias_semana = $_POST['dias_semana'];
$orientador = $_POST['orientador'];

$atividade->cdatividade = $cdatividade.

if(!$atividade->alteraAtividade()){
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php?pagina=altera_atividade'>
<script type=\"text/javascript\">
alert(\"Erro na alteração.\");
</script>";
}
else{
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php?pagina=lista_atividades'>
<script type=\"text/javascript\">
alert(\"Alterado com sucesso.\");
</script>";
}

Eu acredito que o PHP teria informado o primeiro erro se você habilita-se a exibição de todos os erros (mesmo notícias), seria assim:


error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);

OBS: no começo do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×