Jump to content
Fórum Script Brasil
  • 0

Duvida em Php


RbSis

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...