Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida em Php


RbSis

Pergunta

Olá,Pessoal eu me chamo Eduardo, comecei a estudar php na faculdade de sistema web que estou fazendo, 1 modulo, porém ao final os professores passaram para a turma a desenvolver um formulario de cadastro automotivo, com bd MySql, e com Orientação a Objetos, não sei muito de php, faz nem 3 meses que pratico, creio que seja bobo minha duvida, mais pessoal não sou preguiçoso não, faz dias que tentei resolver um erro ,procurando google,foruns,lendo livros, refazendo o codigo e infelizmente não consegui...

Erro: Ele não insere os dados no banco de dados e aparece esse erro: Notice: Undefined variable: acao in C:\wamp\www\teste.php on line 3

Bom vou postar os codigos são 4 arquivos:

Codigo Lista_carro.html:

Lista de Carros

Informe abaixo os dados do seu carro ou clique AQUI para ver a lista completa.

Proprietário:     

Marca:     

Modelo:     

Cor:     

Opcionais:     

Ano de Fabricação:     

Ano modelo:     

Km Atual:     

Última Troca de óleo:      (dd/mm/aaaa)

Última Revisão:      (dd/mm/aaaa)

Cometários:
Codigo do teste.php(onde está o erro)
<?php
if($acao=="" OR empty($acao))
exit;

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

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

$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);
}
?>
Codigo do classcarro.inc(onde inclui os dados e é chamado no teste.php)
<?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>";
}

}

?>
Classdb.inc (Onde faz conexão com o banco e consulta,lembrando que meu banco está em mysql mais o professor passou o PostGresql e Mysql dentro do script, ele disse que escolhe no teste.php)
<?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.= "<<siteB2c - Sistema de Alerta>>";
$dst = "walaces@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];
}
  }

}

?>

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

if($acao=="" OR empty($acao))
exit;
Você tá tentando verificar essa variável $acao, mas ela não existe. Pelo que entendi, a ação I seria para incluir e a L para listar.
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;

E nenhum desses itens irão funcionar. $proprietario, $marca, $modelo, etc também não existem.

Você não criou elas em lugar algo.

Provavelmente o que você queria no lugar de $acao(e das demais variáveis) seria $_POST['acao'] ou $_GET['acao'], dependendo do método do seu formulário:

<form method="post" action="teste.php">

ou

<form method="get" action="teste.php">

Link para o comentário
Compartilhar em outros sites

  • 0

Bom adiciona o $_Post, e aparenta dar certo, mais aparece uma página em branco quando chamo a consulta.. mais tudo bem, apareceu outro erro:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR, expecting ')' in C:\wamp\www\EXEMPLO\classcarro.inc on line 33

Está na linha 33, pois me falarem que eu deveria corrigir algo no classcarro.inc na função incluir: function incluir($qry->proximo();) {

e adicionar isso no final do for:

$qry->proximo();

Link para o comentário
Compartilhar em outros sites

  • 0
Ficarei muito grato..

Ok..

Ai vai o código (Modifique a sua necessidade.Coloquei comentários para lhe ajudar a construi-lo conforme sua necessidade.)

<?
//Configure aqui a conexão com a DB
$host = "localhost"; // Host valor padrão é localhost
$usuariodb="root"; //Usuario de Conexao com  o MySQL
$senhadb="SUA SENHA"; // Senha de Conexao com o MySQL
$db="NOME DA SUA DB"; //Banco de Dados MySQL que contem as tabelas
$tb="NOME TABELA"; //nome da tabela que você quer inserir os dados!!
$conexao=mysql_connect ("$host", "$usuariodb", "$senhadb") or die ('não foi possivel conectar com o host porque: ' . mysql_error());
mysql_select_db ("$db") or die("Não foi possivel encontrar sua DB!");
//Fim de Conexão

//Exemplo para puxar dados via POST de um form:
$nome= $_POST['nome']; //Puxa oque estiver escrito no campo nome, do form que recebeu!

//Vamos agora inserir os dadso vindos da variavel $nome na tabela: 
$sql=mysql_query("INSERT INTO $tb (nome) VALUES ('$nome')");

//Vamos ver se deu certo ou não:
if (!$sql){
echo "não foi Possivel Inserir Os Dados!"; //Msg de erro
}
else {
echo "Dados inserido com sucesso em sua tabela!"; //Msg de sucesso
}
} 

?>
é isso... Um exemplo, usando um formulário:
<!-- Note que declarei abaixo o método de enviamento como método POST -->
<form method="POST" action="?desejo=inserir">
<p aling="center" align="center"><font face="Verdana" size="1">
<!-- Note que declarei abaixo o nome do campo como "nome" -->
<b>Nome:</b><br>&nbsp;<input type="text" name="nome" size="15" style="font-family: Verdana; font-size: 8 pt; font-weight: bold"><br>
<input type="submit" value="Inserir" name="submeter" size="15" style="font-size: 8 pt; font-family: Verdana; font-weight: bold"></b></font></p>
</form>

<?
$desejo= $_GET['desejo']; //Puxa o texto via GET/URL
if ($desejo==inserir){ //Ver se a pessoa mandou rodar o código...

//Configure aqui a conexão com a DB
$host = "localhost"; // Host valor padrão é localhost
$usuariodb="root"; //Usuario de Conexao com  o MySQL
$senhadb="SUA SENHA"; // Senha de Conexao com o MySQL
$db="NOME DA SUA DB"; //Banco de Dados MySQL que contem as tabelas
$tb="NOME TABELA"; //nome da tabela que você quer inserir os dados!!
$conexao=mysql_connect ("$host", "$usuariodb", "$senhadb") or die ('não foi possivel conectar com o host porque: ' . mysql_error());
mysql_select_db ("$db") or die("Não foi possivel encontrar sua DB!");
//Fim de Conexão

//Exemplo para puxar dados via POST de um form:
$nome= $_POST['nome']; //Puxa oque estiver escrito no campo nome, do form que recebeu!

//Vamos agora inserir os dadso vindos da variavel $nome na tabela: 
$sql=mysql_query("INSERT INTO $tb (nome) VALUES ('$nome')");

//Vamos ver se deu certo ou não:
if (!$sql){
echo "não foi Possivel Inserir Os Dados!"; //Msg de erro
}
else {
echo "Dados inserido com sucesso em sua tabela!"; //Msg de sucesso
}
} 
}

?>

Pronto!

Pegue o segundo exemplo que dei (o código acima), salve num arquivo .php e rode no seu servidor.E não se esqueça de configurar a conexão!Teste e estude esse código que você vai conseguir!

Qualquer dúvida, ou erro postai!

Link para o comentário
Compartilhar em outros sites

  • 0
Opa...Obrigado deu certo...Rapaz entrei em 8 foruns e nenhum me ajudou, só vieram com "patadas", um disse que é melhor eu desistir e não programar mais em php e nem em orientação a objeto, mais tudo bem...Desistir jamais..

Denada amigo!

é eu sei como é ser iniciante e pedir ajuda e as pessoas vir com patadas... por isso eu aprendi e tento ajudar os outros da melhor forma possivel, pois é muito gratificante receber um "Obrigado" e ajudar pessoas como você!

Mas é isso aí, desistir jamais!!

Qualquer coisa estamos ai!!

Flww!

Link para o comentário
Compartilhar em outros sites

  • 0
Opa...Obrigado deu certo...Rapaz entrei em 8 foruns e nenhum me ajudou, só vieram com "patadas", um disse que é melhor eu desistir e não programar mais em php e nem em orientação a objeto, mais tudo bem...Desistir jamais..

Faça um exercício de auto análise, pode ser que esta pessoa esteja certa... Se o teu professor pediu isto é porque ele entende que ensinou, logo, das duas uma, ou a sua faculdade é ruim (pois o professor pediu algo que não ensinou/não teve capacidade de ensinar) ou você é incompetente pois não conseguiu absorver o ensinamento do professor, de qualquer maneira o problema final só ser dará quando você entrar no mercado de trabalho, onde não há tempo para tirar dúvidas em fóruns, já que muitas vezes o cliente/patrão está literalmente do lado esperando a solução naquele momento. Pense nisso.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...