Ir ao conteúdo
  • Cadastre-se

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


Cassia Reis

Posts recomendados

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.

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...