Ir para conteúdo

POWERED BY:

Arquivado

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

Miligear

[Resolvido] Formulario PHP / Mysql

Recommended Posts

Olá Amigos, estou com um problema, fiz um código de cadastro de formulario, nada muito complexo (bem simples na realidade) mas sou iniciante em php e o código não funciona por nada, gostaria de uma ajuda. Segue os códigos.

 

banco.php

<?php

class Banco {
       private $dbc;
       private $query;

   public function Banco(){
       $dbc = mysqli_connect ('localhost', 'root', '9896', 'usuario') or die ('Erro');
   }
   public function Inserir_u($user, $senha, $email, $civi){
       $query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi,)");
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 1');

       $query = "INSERT INTO cons (soldado, avioes, tank, id, ouro) VALUES ('1', '1', '1', '1','')";
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 2');

       mysqli_close($dbc);

   }  
}
?>

 

index.html

<html>
<head>

<title>Cadastro de Usuarios</title>
<style type="text/css">
#tit {
text-align: center;
}
#font {
font-size: 24px;
text-align: center;
font-family: Verdana, Geneva, sans-serif;
color: #F00;
}
</style>
<link href="fontes.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form action="cadastro.php" method="post">
 <p>Cadastro de Usuarios<br />
 <br /><table width="299" height="121" border="0">
 <tr>
   <td><span class="menu1">Nome de Usuario:</span></td>
   <td><input name="nome" type="text" /><br /></td>
 </tr>
 <tr>
   <td><span class="menu1">Senha:</span></td>
   <td><input name="senha" type="text" /><br /></td>
 </tr>
 <tr>
   <td><span class="menu1">E-mail:</span></td>
   <td><input name="email" type="text" /><br /></td>
 </tr>
 <tr>
   <td><span class="menu1">Nome Civilização:</span></td>
   <td><input name="civi" type="text" /><br /></td>
 </tr>
</table>
<input type="submit" class="menu1" value="Enviar" /> 
 </p>
 <p class="menu1"> </p>
</form>
</body>
</html>

 

cadastro.php

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="FreeUser" />

<title>Sem título 2</title>
</head>

<body>

<?
$nome = $_POST['nome'];
$senha = $_POST['senha'];
$email = $_POST['email'];
$civi = $_POST['civi'];
include_once("classes/banco.php");

$teste = new Banco;
$teste -> Inserir_u($nome, $senha, $email, $civi);

?>

</body>
</html>

 

Estou realmente angustiado, ja li varios tutoriais e não consigo encontrar o erro, para consulta estou usando o Livro Use a Cabeça PHP / MySQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exixte um erro no SQL

 

Veja:

$query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi,)"); // falta o valor para a coluna id

 

Se o id no banco de dados é AUTO_INCREMENT, coloque NULL como valor ou simplesmente não informe o id no SQL.

 


// exemplo 1
$query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi, NULL)");

// exemplo 2
$query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi) VALUES ($user, $senha, $email, $civi)");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque no início do arquivo cadastro.php e execute novamente, se aparecer algum erro, poste ele.

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reparei na hora de conectar voce usou o banco e dados chamado usuario e sua tabela tambem tem o nome usuario. Claro que isso nao é um erro, mas voce entende a diferenca entre os dois ? Talvez o banco de dados ou a tabela foram definidos com outro nome. Veja se nao é isso !

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o código PHP está sendo exibido no navegador, a probabilidade maior é que não possui o PHP instalado ou mesmo que tenha um ambiente corretamente configurado, pode estar tentando acessar pelo path físico.

 

 

outra coisa muito estranha é a forma como está usando e como escreveu a classe

 

 

<?php

class Banco {
       private $dbc;
       private $query;

   public function Banco(){
       $dbc = mysqli_connect ('localhost', 'root', '9896', 'usuario') or die ('Erro');
   }
   public function Inserir_u($user, $senha, $email, $civi){
       $query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi,)");
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 1');

       $query = "INSERT INTO cons (soldado, avioes, tank, id, ouro) VALUES ('1', '1', '1', '1','')";
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 2');

       mysqli_close($dbc);

   }  
}
?>

 

 

 

 

$teste = new Banco;
$teste -> Inserir_u($nome, $senha, $email, $civi);

 

 

Faz chamada o método "Inserir_u", no entanto, dentro desse método há variáveis indefinidas.

A variável $dbc, por exemplo, deveria ser

 

$this -> dbc

ou

self::$dbc

 

Além do mais é chamado o método para inserção sem nem ao menos ter feito a conexão com o banco. (avaliando os scripts publicados)

 

 

Enfim, está sem pé nem cabeça... mesmo que o PHP estivesse sendo executado, o script geraria diversos erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o código PHP está sendo exibido no navegador, a probabilidade maior é que não possui o PHP instalado ou mesmo que tenha um ambiente corretamente configurado, pode estar tentando acessar pelo path físico.

 

 

outra coisa muito estranha é a forma como está usando e como escreveu a classe

 

 

<?php

class Banco {
       private $dbc;
       private $query;

   public function Banco(){
       $dbc = mysqli_connect ('localhost', 'root', '', 'tcc') or die ('Erro');
   }
   public function Inserir_u($user, $senha, $email, $civi){
       $query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi,)");
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 1');

       $query = "INSERT INTO cons (soldado, avioes, tank, id, ouro) VALUES ('1', '1', '1', '1','')";
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 2');

       mysqli_close($dbc);

   }  
}
?>

 

 

 

 

$teste = new Banco;
$teste -> Inserir_u($nome, $senha, $email, $civi);

 

 

Faz chamada o método "Inserir_u", no entanto, dentro desse método há variáveis indefinidas.

A variável $dbc, por exemplo, deveria ser

 

$this -> dbc

ou

self::$dbc

 

Além do mais é chamado o método para inserção sem nem ao menos ter feito a conexão com o banco. (avaliando os scripts publicados)

 

 

Enfim, está sem pé nem cabeça... mesmo que o PHP estivesse sendo executado, o script geraria diversos erros.

 

Olá Amigo, como o amigo em cima disse o nome do banco estava realmente errado, éra tcc. Não entendo pq a variavel dbc esta indefinida ?, no Construtor eu estou passando a conexão com o banco pra essa variável, veja:

 

$dbc = mysqli_connect ('localhost', 'root', '9896', 'usuario') or die ('Erro');

 

O PHP esta funcionando agora, estou postando novamente o arquivo que foi modificado:

 

banco.php

<?php

class Banco {
       private $dbc;
       private $query;

   public function Banco(){
       $dbc = mysqli_connect ('localhost', 'root', '', 'tcc') or die ('Erro');
   }
   public function Inserir_u($user, $senha, $email, $civi){
       $query = ("INSERT INTO usuario (nome_usu, senha, email, nome_civi, id) VALUES ($user, $senha, $email, $civi,NULL)");
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 1');

       $query = "INSERT INTO cons (soldado, aviao, tank, id, ouro) VALUES ('1', '1', '1', NULL,'1')";
       $result = mysqli_query($dbc, $query) or die('Erro no Banco 2');

       mysqli_close($dbc);

   }  
}
?>

 

Olhe o erro que esta ocorrendo:

 

Notice: Undefined variable: dbc in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\classes\banco.php on line 12

 

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\classes\banco.php on line 12

Erro no Banco 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

você corrigiu alguns pontos, mas não prestou atenção no que comentei..

 

você disse no post #11

Olá Amigo, como o amigo em cima disse o nome do banco estava realmente errado, éra tcc. Não entendo pq a variavel dbc esta indefinida ?, no Construtor eu estou passando a conexão com o banco pra essa variável, veja:

 

 

veja o que postei no post #10

Faz chamada o método "Inserir_u", no entanto, dentro desse método há variáveis indefinidas.

A variável $dbc, por exemplo, deveria ser

 

$this -> dbc
ou
self::$dbc

 

 

Frisando novamente, eu comentei que o problema inicial era falha em alguma configuração que não estava executando o PHP. Mesmo que estivesse funcionando o script geraria diversos erros, dentre os quais, o erro de variável indefinida.

Veja o resultado que você mesmo mostrou no post #11:

Olhe o erro que esta ocorrendo:

 

Notice: Undefined variable: dbc in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\classes\banco.php on line 12

 

 

Undefined variable: dbc -> variável indefinida: dbc

 

Leia o post #10 e consulte http://php.net/manual/en/language.oop5.basic.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigos, tudo certo, desisti de usar construtor rsrs, declarei todas as variais na função de inserção mesmo, agradeço pela ajuda de todos, agora ta tudo ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.