Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Pessoal.
Estou me metendo a trabalhar com orientação a objeto, tenho classes distintas porem não estou conseguindo inserir dados no banco.
As classes são:
Classe Conexão com mysql
<?php
class conn{
var $userDB = "root";
var $passwd = "XXXXXXX";
var $sid = "localhost";
var $DbDefault = "banco";
var $consulta = "";
private $mysqli;
public function Conecta()
{
$this->mysqli = new mysqli($this->sid,$this->userDB,$this->passwd,$this->DbDefault);
$this->link=mysqli_connect($this->sid,$this->userDB,$this->passwd);
if (!$this->link)
{
die("Problema na Conexão com o Banco de Dados");
}
elseif (!mysqli_select_db($this->link,$this->DbDefault))
{
die("Problema na Conexão com o Banco de Dados");
}
}
public function Desconecta()
{
$this->mysqli->close;
}
}
?>
Classe fornecedor
<?php
class Fornecedor{
private $nomeFornecedor;
private $endFornecedor;
private $foneFornecedor;
private $emailFornecedor;
private $siteFornecedor;
private $categFornecedor;
// método cadastro
poublic function incluirFornecedor($nome,$endereco, $telefone, $email, $site,$categoria){
$this->nomeFornecedor=$nome;
$this->endFornecedor=$endereco;
$this->foneFornecedor=$telefone;
$this->emailFornecedor=$email;
$this->siteFornecedor=$site;
$this->categFornecedor=$categoria;
$sql=mysqli_multi_query($connect,"CALL SP_inclFornecedor($this->nomeFornecedor,$this->endFornecedor,$this->foneFornecedor,$this->emailFornecedor,$this->siteFornecedor,$this->categFornecedor)");
}
}
?>
Form forncedor
<?php
include "../class/class.conn.php";
Include "../class/class.fornecedor.php";
$connect = new conn();
$connect->Conecta();
if (!empty($action)){
$nome = $_POST['nomeForn'];
$endereco = $_POST['endForn'];
$telefone = $_POST['foneForn'];
$email = $_POST['emailForn'];
$site = $_POST['siteForn'];
$categoria = 'outros';
$cad = new Fornecedor();
$cad->incluirFornecedor($nome,$endereco, $telefone, $email, $site,$categoria);
}
?>
<HTML>
<head>
<title>.:Cadastro de Fornecedores:.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.js"></script>
<script src="..js/functions.js"></script>
<style type="text/css">
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
background-color: #CCC;
}
</style>
<link href="../css/css.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0">
<tr>
<td> </td>
</tr>
<tr>
<td><form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>?action=1">
<table width="100%" border="0">
<tr>
<td width="25%" class="pastoraltxt">Fornecedor</td>
<td width="2%">: </td>
<td colspan="4" class="mainNegrito"><input name="nomeForn" autofocus required type="text" id="nomeForn" size="30" maxlength="30" onKeyUp="this.value=this.value.toUpperCase()" /></td>
</tr>
<tr>
<td valign="top" class="pastoraltxt">Endereço</td>
<td valign="top">: </td>
<td colspan="4"><input name="endForn" type="text" id="endForn" required value="" size="60" maxlength="60" onKeyUp="this.value=this.value.toUpperCase()" /></td>
</tr>
<tr>
<td class="pastoraltxt">Telefone</td>
<td>:</td>
<td width="38%" class="pastoraltxt"><input name="foneForn" type="tel" id="foneForn" required size="13" maxlength="13" onKeyPress="mascara(this,'(##)####-####')" />
somente números com DDD</td>
<td width="13%" class="pastoraltxt"> </td>
<td width="8%"> </td>
<td width="14%"> </td>
</tr>
<tr>
<td class="pastoraltxt">Email</td>
<td>:</td>
<td><input name="emailForn" type="email" id="emailForn" required size="60" maxlength="60"/></td>
<td class="pastoraltxt"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td class="pastoraltxt">Site</td>
<td>:</td>
<td class="mainNegrito"><input name="siteForn" type="text" id="siteForn" value="http://" size="60" maxlength="60" required/></td>
<td class="pastoraltxt"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td class="pastoraltxt"> </td>
<td> </td>
<td class="mainNegrito"> </td>
<td class="pastoraltxt"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="6" bgcolor="#FFFFFF" class="pastoraltxt"><table width="100%" border="0">
<tr>
<td align="center" bgcolor="#FFFFFF"><input type="reset" name="cancela2" id="cancela2" value="Cancelar" onClick="desmarca(this.value);"></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="Cadastrar" id="Cadastrar" value="Cadastar" /></td>
</tr>
</table></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>
Problema não esta inserindo. ERRO:
Warning: mysqli_multi_query() expects parameter 1 to be mysqli, null given in C:\Program Files\VertrigoServ\www\TRXProp\class\class.fornecedor.php on line 22
algumem pode "me dar uma luz"???
té +
mysqli_multi_query() expects parameter 1 to be mysqli, null given
Primeiro trabalhar na nomeclatura.
private $nomeFornecedor; private $endFornecedor; private $foneFornecedor; private $emailFornecedor; private $siteFornecedor; private $categFornecedor;
Muito redundante isso, se o seu objeto é Fornecedor você não precisa dizer que as propriedades são de um fornecedor por que obviamente eles são.
cade os getters e os setter?
nesse caso você ta obrigando SEMPRE preencher todos os dados o que tira flexibilidade do código (Principio de OO), e por último o método incluirFornecedor.
ele até pode existir mas ele deveria chamar outro objeto responsável pela manipulação dos dados em DB, afinal de contas um fornecedor insere algo no banco?
ele faz uma requisição para que o responsável faça isso, o trabalho do fornecedor é fornecer e não fuçar no seu banco.
e no final das contas seu erro diz que o número de parametros essa incorreto.
não conheço mysqli mas acho que mysqli_multi_query isso não existe
o correto seria
$mysqli->multi_query
ou
mysqli::multi_query
onde mysql é o objeto de conexão.
para trabalhar com OO precisa concertar esses erros se não isso não passa de classes e funções