Erro Php

1. Erro Php

Eduardo
gimenestm

(usa Ubuntu)

Enviado em 21/12/2012 - 19:48h

Olá pessoa..Estou com um erro que chego a arrepiar os cabelos, mais tudo bem..Já pesquisei em diversos foruns,google,livro e nada...

mais vamos lá..

Erro: Ela da Notice: Undefined variable: acao in C:\wamp\www\teste.php on line 2, que é variavel não iniciada, no meu codigo teste.php na linha dois tem uma chamada de variavel de outro arquivo por isso usei o require, mais continua o erro, então antes da linha 2 eu adicionei $acao=""; ai some o erro mais aparece uma página em branco e não adiciona dados, talvez as variaveis não esteja recebendo os dados do formulario ou não conectando com os arquivos.inc..Mais não sei muito em php..

São 4 arquivos(Dois .inc, 1 .php, 1.html) vou postar os codigo, lembrando uso o bando de dados mysql, mais criei a opção para postgresql assim deixando o usuario escolher...

codigo lista_carro.html:
[spoiler]
 
<html>
<head>
<title>Lista de Carros</title>
</head>

<body>
<table border=0 cellpading=0 cellspacing=0 width=800>
<tr>
<td width="100%" align="center" bgcolor="#ffcc00"><font face="Arial" size="5" color="#0000ff"><B>Lista de Carros</b></font></td>
</tr>
<tr>
<td height="20"></td>
</tr>
<tr>
<td width="100%">Informe abaixo os dados do seu carro ou clique <a href="teste.php?acao=L">AQUI</a> para ver a lista completa.</td>
</tr>
</table>

<form name="carros" action="teste.php" method="post">
<table border=0 cellpading=0 cellspacing=0 width=800>
<tr>
<td width="30%"><b>Proprietário:</b></td>
<td><input name="proprietario" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Marca:</b></td>
<td><input name="marca" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Modelo:</b></td>
<td><input name="modelo" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Cor:</b></td>
<td><input name="cor" size="30"></td>
</tr>
<tr>
<td width="30%" valign="top"><b>Opcionais:</b></td>
<td><textarea name="opc" rows="5" cols="30"></textarea></td>
</tr>
<tr>
<td width="30%"><b>Ano de Fabricação:</b></td>
<td><input name="ano_fab" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Ano modelo:</b></td>
<td><input name="ano_mod" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Km Atual:</b></td>
<td><input name="km_atual" size="30"></td>
</tr>
<tr>
<td width="30%"><b>Última Troca de óleo:</b></td>
<td><input name="ult_troca" size="30"> (dd/mm/aaaa)</td>
</tr>
<tr>
<td width="30%"><b>Última Revisão:</b></td>
<td><input name="ult_rev" size="30"> (dd/mm/aaaa)</td>
</tr>
<tr>
<td width="30%" valign="top"><b>Cometários:</b></td>
<td><textarea name="comentarios" rows="5" cols="30"></textarea></td>
</tr>
<tr>
<td height="20"></td>
</tr>
<tr>
<td></td>
<td align="left">
<input type="submit" name="enviar" value=" OK ">
<input type="reset" name="limpar" value="Limpar">
<input type="hidden" name="acao" value="I">
</td>
</tr>

</table>
</form>
</body>
</html>


Codigo teste.php

<?php
//$acao="";(com isso sai o erro, mais nao adiciona dados e fica pagina em branco)
if($acao=="" OR empty($acao))
exit;

require("classdb.inc");
require("classcarro.inc");

$con = new bd("mysql");
$con->conecta("Test","localhost","","rubysoft","mis...");

$car = new carro($acao);

// Verifica a ação a ser executada
switch ($acao) {
case 'I':
$car->proprietario = $proprietario;
$car->marca = $marca;
$car->modelo = $modelo;
$car->cor = $cor;
$car->opcionais = $opc;
$car->ano_fab = $ano_fab;
$car->ano_mod = $ano_mod;
$car->km_atual = $km_atual;
$car->ult_trc = mktime(0,0,0,substr($ult_trc,3,2),substr($ult_trc,0,2),substr($ult_trc,-4));
$car->ult_rev = mktime(0,0,0,substr($ult_rev,3,2),substr($ult_rev,0,2),substr($ult_rev,-4));
$car->coment = $comentarios;
$car->incluir($con);
echo "Carro incluido";
break;
case 'L':
$car->listar($con);
}
?>

</body>
</html>


codigo classdb.inc

<?php

class bd {

var $bd;
var $id;

function bd($sgbd="postgresql") {
$this->bd = $sgbd;
}

function conecta($bd,$servidor,$porta,$usuario,$senha) {
if($this->bd=="postgresql") {
$this->id = pg_connect($servidor,$porta,$usuario,$senha,$bd);
}
else {
$this->id = mysql_connect($servidor,$usuario,$senha);
if($this->id) {
mysql_select_db($bd,$this->id);
}
else
$this->id = 0;
}

}

}

class consulta {

var $bd;
var $res;
var $row;
var $nrw;
var $data;

function consulta(&$bd) {
$this->bd = $bd;
}

function executa($sql="",$tipo="") {
if($sql=="") {
$this->res = 0;
$this->nrw = 0;
$this->row = -1;
}
if($this->bd->bd=="postgresql") {
$this->res = pg_exec($this->bd->id,$sql);
$this->nrw = pg_numrows($this->res);
}
else {
$this->res = mysql_query($sql,$this->bd->id);
$this->nrw = @mysql_num_rows($this->res);
}

// grava logfile
if($tipo!="log") {
$oper = substr($sql,0,6);
$file = "";
switch($oper) {
case "INSERT":
$file = substr($sql,12,strpos($sql,"VALUES")-12);
break;
case "UPDATE":
$file = substr($sql,7,strpos($sql,"SET")-7);
break;
case "DELETE":
$file = substr($sql,12,strlen($sql));
break;
}
if(substr($file,0,6)=="pedido" OR substr($file,0,7)=="usuario") {
$log = new logfile($this->bd);
$log->operacao = htmlentities(addslashes($sql));
$log->incluir();
// Gera um email para o auditor do site
if(substr($file,0,7)=="pedidos" OR substr($file,0,12)=="pedido_pagto") {
$assunto = "Manutenção em pedidos";
$mensagem = " DATA: " . date("d/m/Y",time()) . "\n\n";
$mensagem.= "o seguinte comando SQL foi executado ";
$mensagem.= "afetando a tabela de pedidos ou de dados financeiros\n\n";
$mensagem.= $sql . "\n\n";
$mensagem.= "Para maiores detalhes solicite a trilha de auditoria do site";
$mensagem.= "(tabela logfile)\n\n";
$mensagem.= "<<site - Sistema de Alerta>>";
$dst = "rubysoft@uol.com.br";
mail($dst,$assunto,$mensagem,"From: alerta@siteb2c.com.br");
}
}
}

$this->row = 0;
if($this->nrw>0)
$this->dados();
}

function primeiro() {
$this->row = 0;
$this->dados();
}

function proximo() {
$this->row = ($this->row<($this->nrw-1))?++$this->row:($this->nrw - 1);
$this->dados();
}

function anterior() {
$this->row = ($this->row>0) ? --$this->row : 0;
$this->dados();
}

function ultimo() {
$this->row = $this->nrw-1;
$this->dados();
}

function navega($linha) {
if($linha>=0 AND $linha<$this->nrw) {
$this->row = $linha;
$this->dados();
}
}

function dados() {
if($this->bd->bd=="postgresql")
$this->data = pg_fetch_array($this->res,$this->row);
else {
mysql_data_seek($this->res,$this->row);
$this->data = mysql_fetch_array($this->res);
}
}

function last_id($seq="",$sql="SELECT LAST_INSERT_ID()") {
if($this->bd=="postgresql") {
$sql = "SELECT CURRVAL('$seq')";
$this->executa($sql);
if(!$this->res)
return 0;
return $this->data[0];
}
else {
$this->executa($sql);
return $this->data[0];
}
}

}

?>


codigo classcarro.inc


<?php

class carro {

var $acao;
var $proprietario;
var $marca;
var $modelo;
var $cor;
var $opcioanais;
var $ano_fab;
var $ano_mod;
var $km_atual;
var $ult_trc;
var $ult_rev;
var $coment;

function carro($acao="L") {
$this->acao = $acao;
$this->proprietario = '';
$this->marca = '';
$this->modelo = '';
$this->cor = '';
$this->opcionais = '';
$this->ano_fab = 0;
$this->ano_mod = 0;
$this->km_atual = 0;
$this->ult_trc = 0;
$this->ult_rev = 0;
$this->coment = '';
}

function incluir($db) {
$sql = "INSERT INTO carros VALUES(";
$sql.= "'" . $this->proprietario . "',";
$sql.= "'" . $this->marca . "',";
$sql.= "'" . $this->modelo . "',";
$sql.= "'" . $this->cor . "',";
$sql.= "'" . $this->opcionais . "',";
$sql.= $this->ano_fab . ",";
$sql.= $this->ano_mod . ",";
$sql.= $this->km_atual . ",";
$sql.= $this->ult_trc . ",";
$sql.= $this->ult_rev . ",";
$sql.= "'" . $this->coment . "')";

echo $sql . "\n";
echo $db->id . " --- " . $db->bd;

$qry = new consulta($db);
$qry->executa($sql);
}

function listar($bd) {
$sql = "SELECT * FROM carros ORDER BY proprietario";
$qry = new consulta($bd);

if($qry->nrw>0) {
echo "<table border=0 cellpadding=0 cellspacing=3 width=800>";
echo " <tr bgcolor='#ffcc00'>";
echo " <td><b>Proprietário</b></td>";
echo " <td><b>Marca</b></td>";
echo " <td><b>Modelo</b></td>";
echo " <td><b>Cor</b></td>";
echo " <td><b>Ano Fabricação/Modelo</b></td>";
echo " <td><b>Última Troca de óleo</b></td>";
echo " <td><b>Km Atual</b></td>";
echo " </tr>";
for($i=0;$i<$qry->nrw;$i++) {
echo "<tr>";
echo "<td>" . $qry->data["proprietario"] . "</td>";
echo "<td>" . $qry->data["marca"] . "</td>";
echo "<td>" . $qry->data["modelo"] . "</td>";
echo "<td>" . $qry->data["cor"] . "</td>";
echo "<td>" . $qry->data["ano_fab"] . "/" . $qry->data["ano_mod"] . "</td>";
echo "<td>" . date("d/m/Y",$qry->data["ult_trc"]) . "</td>";
echo "<td>" . $qry->data["km_atual"] . "</td>";
echo "</tr>";
}
echo "</table>";
}
else
echo "<p><b>Nenhum Carro cadastrado</b></p>";
}

}

?>



  


2. Variavel acao

Cristyan Giovane de Souza Santos
cristyangiovane

(usa CentOS)

Enviado em 21/12/2012 - 21:05h

Se entendi, você quer pegar a variável que enviou pelo formulário HTML.

Para isso precisa usar usar da seguinte maneira

$acao = $_POST['acao'];

ou colocando "$_POST['acao']" diretamente na comparação do if.


3. Re: Erro Php

Eduardo
gimenestm

(usa Ubuntu)

Enviado em 21/12/2012 - 21:11h

Aqui onde mudo?
if($acao=="" OR empty($acao))
exit;

Pois ele tem que pegar a variavel acao criada no arquivo classcarro.inc, na verdade tem que pegar todas as variaveis criada neste arquivo e passar para o teste.php, já usei o require e nada...


4. Re: Erro Php

Juliano Giacomeli
julianjedi

(usa Arch Linux)

Enviado em 22/12/2012 - 04:39h

Amigo nao li tooodo o seu codigo mas me parece que o erro esta correto, pois a ação que vc esta passando para o teste.php é uma querystring .. tem que usar um $_GET e

coloca lah na linha dois assim

<?php

$acao= $_GET['acao'];
if($acao=="" OR empty($acao))
exit;


require("classdb.inc")

....



5. Re: Erro Php

Eduardo
gimenestm

(usa Ubuntu)

Enviado em 22/12/2012 - 14:37h

Sim.. Resolveu o erro mais apareceu Undefined Index..
Ai adicionei

$acao= isset ($_GET['acao']);
if($acao=="" OR empty($acao))
exit;

porem sumiu os erros,mais tento adicionar algum conteudo pelo formulario não adiciona nada, vai para o carro.php e fica tudo branco.. Eu estou seguindo um livro, o autor passou para eu trocar assim:

Correção em: classcarro.inc
Incluir ($qry->proximo();)
e no final do for do classcarro.inc
adicionar:

$qry->proximo();

ai quando troco o classcarro.inc da erro fica sublinhado em vermelho o }, quando eu adiciona o $qry->proximo();)


6. Re: Erro Php

diego dos santos
Foguinhu

(usa Outra)

Enviado em 26/12/2012 - 15:04h

tenta usar
mas antes faça

erro_reporting(E_PARSE || E_ERROR); // esse comando vai retirar o notice, ai voce vai ver melhor.


$acao = $_REQUEST['acao'];
//em seguida a condição
if($acao="" OR ...){
bloco de comandos
};

mesmo assim se não der tenta isso que vou passar, vai te mostrar o que ta chegando nessa pagina!

echo '<pre>';
print_r($_REQUEST);
echo '</pre>';

as tags <pre> vai deixar tudo arrumadinho para voce poder ver o que esta sendo executado, inclusive sua variavel $acao, espero ter ajudado.


7. variaveis

Cristyan Giovane de Souza Santos
cristyangiovane

(usa CentOS)

Enviado em 28/12/2012 - 10:55h

onde você esta recuperando as veriaveis do formulário esta incorreto.

O correto seria da forma abaixo.

$car->proprietario = $_POST['proprietario'];
$car->marca = $_POST[marca'];
$car->modelo = $_POST[modelo'];

...







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts