How do I resolve this?
Warning : array_keys () expects parameter 1 to be array, null given in C: \ Program Files \ VertrigoServ \ www \ store \ classes \ Site.class.php on line 81
Warning : array_values () expects parameter 1 to be array, null given in C: \ Program Files \ VertrigoServ \ www \ store \ classes \ Site.class.php online 83
Invalid argument supplied for foreach () in C: \ Program Files \ VertrigoServ \ www \ store \ classes \ Site.class.php on line 89
class Site extends BD{
private $conexao;
public function getData(){
$data = getdate();
$diaHoje = date('d');
$array_meses = array(1 => "Janeiro", 2 => "Fevereiro", 3 => "Março", 4 => "Abril", 5 => "Maio", 6 => "Junho",
7 => "Julho", 8 => "Agosto", 9 => "Setembro", 10 => "Outubro", 11 => "Novembro", 12 => "Dezembro");
$horaAgora = date('H:i');
$mesgetdate = $data['mon'];
$anoAtual = date('Y');
return 'Hoje, '.$diaHoje.' de '.$array_meses[$mesgetdate].' de '.$anoAtual.', às '.$horaAgora.'';
}// Armazena e retorna a string da data atual.
public function getMenu(){
$imagem_cat = '<img src="'.PATH.'/images/add.png" border="0"/>';
$imagem_subcat = '<img src="'.PATH.'/images/arrow.png" border="0"/>';
$pegar_categorias = "SELECT * FROM 'loja_categorias' ORDER BY id DESC";
$executar = self::conn()->prepare($pegar_categorias);
$executar->execute();
if($executar->rowCount() == 0){}else{
while($categoria = $executar->fetchObject()){
echo '<li>'.$imagem_cat.'<a href="'.PATH.'/categoria/'.$categoria->slug.'">'.$categoria->titulo.'';
$pegar_subcategorias = "SELECT * FROM 'loja_subcategorias' WHERE id_cat = ?";
$executar_sub = self::conn()->prepare($pegar_subcategorias);
$executar_sub->execute(array($categoria->id));
if($executar_sub->rowCount() == 0){echo '</li>';}else{
echo '<ul>';
while($subcategoria = $executar_sub->fetchObject()){
echo '<li>'.$imagem_subcat.'<a href="'.PATH.'/categoria/'.$categoria->slug.'/'.$subcategoria->slug.'">'.$subcategoria->titulo.'</a></li>';
}// Termina o while da SUBCATEGORIA
echo '</ul></li>';
}// Termina else dos resultados da SUBCATEGORIA
}// Termina a while das CATEGORIAS
}// Termina ELSE
}// Termina a função GET MENU
public function getBanners(){
$sqlBanners = "SELECT * FROM 'loja_banners' ORDER BY id DESC LIMIT 6";
return self::conn()->query($sqlBanners);
}//pega os banners do slide principal
public function getProdutosHome($limit = false){
if($limit == false){
$query = "SELECT * FROM 'loja_produtos' ORDER BY id DESC";
}else{
$query = "SELECT * FROM 'loja_produtos' ORDER BY id DESC LIMIT $limit";
}
return self::conn()->query($query);
}//pegar os produtos da home
public function atualizarViewCat($slug){
$strSQL = "UPDATE 'loja_categorias' SET views = views+1 WHERE slug = ?";
$executar_view = self::conn()->prepare($strSQL);
$executar_view->execute(array($slug));
}//atualiza views da categoria
public function atualizarViewSub($slug){
$strSQL = "UPDATE 'loja_subcategorias' SET views = views+1 WHERE slug = ?";
$executar_view = self::conn()->prepare($strSQL);
$executar_view->execute(array($slug));
}//atualiza views da subcategoria
// Método de insert
public function inserir($tabela, $dados){
$pegarCampos = array_keys($dados);
$contarCampos = count($pegarCampos);
$pegarValores = array_values($dados);
$contarValores = count($pegarValores);
$sql = "INSERT INTO $tabela (";
if($contarCampos == $contarValores){
foreach($pegarCampos as $campo){
$sql .= $campo.', ';
}
$sql = substr_replace($sql, ")", -2, 1);
$sql .= "VALUES (";
for($i = 0; $i < $contarValores; $i++){
$sql .= "?, ";
$i;
}
$sql = substr_replace($sql, ")", -2, 1);
}else{
return false;
}
try{
$inserir = self::conn()->prepare($sql);
if($inserir->execute($pegarValores)){
return true;
}else{
return false;
}
}catch(PDOException $e){
return false;
}
}
//seleção dinamica
public function selecionar($tabela, $dados, $condicao = false, $order = false){
$pegarValores = implode(', ', $dados);
$contarValores = count($pegarValores);
if($condicao == false){
if($contarValores > 0){
if($order != false){
$sql = "SELECT $pegarValores FROM $tabela ORDER BY $order";
}else{
$sql = "SELECT $pegarValores FROM $tabela";
}
$this->conexao = self::conn()->prepare($sql);
$this->conexao->execute();
return $this->conexao;
}
}else{
//existe condição para selecionar
$pegarCondCampos = array_keys($condicao);
$contarCondCampos = count($pegarCondCampos);
$pegarCondValores = array_values($condicao);
$sql = "SELECT $pegarValores FROM $tabela WHERE ";
foreach($pegarCondCampos as $campoCondicao){
$sql .= $campoCondicao." = ? AND ";
}
$sql = substr_replace($sql, "", -5, 5);
foreach($pegarCondValores as $condValores){
$dadosExec[] = $condValores;
}
if($order){$sql .= " ORDER BY $order";}
$this->conexao = self::conn()->prepare($sql);
$this->conexao->execute($dadosExec);
return $this->conexao;
}
}// Fim da seleção dinâmica
public function listar(){
$lista = $this->conexao->fetchAll();
return $lista;
}// Fim do Listar
//metodo para envio de emails junto ao phpmailer
public function sendMail($subject, $msg, $from, $nomefrom, $destino, $nomedestino){
require_once "mailer/class.phpmailer.php";
$mail = new PHPMailer();//instancia a classe PHPMailer
$mail->isSMTP();//habilita envio smtp
$mail->SMTPAuth = true;//autentico o envio smtp
// $mail->Host = 'smtp.bol.com.br'; -> PADRÃO
$mail->Host = 'smtp.gmail.com';
$mail->Port = '587'; // Opções: porta 25, 465 ou 587
// Porta 465 (SSL exigido) | Porta 587 (TLS exigido) | Porta 25 (TLS NÃO exigido)
//começar o envio do email
$mail->Username = '[email protected]';
$mail->Password = 'Mara08dema9281';
$mail->From = $from;//email de quem envia
@$mail->FromName = $namefrom;//nome de quem envia
$mail->isHTML(true);//seta que é html o email
$mail->Subject = utf8_decode($subject);
$mail->Body = utf8_decode($msg);//corpo da mensagem
$mail->AddAddress($destino, utf8_decode($nomedestino));//seto o destino do email
if($mail->Send()){
return true;
}else{
return false;
}
} // Fim do PHP MAILER
function upload($tmp, $name, $nome, $larguraP, $pasta){
/*$ext = end(explode('.', $name)); ---- estava assim */
$dados = explode('.', $name);
$ext = end($dados);
if($ext=='jpg' || $ext == 'JPG' || $ext == 'jpeg' || $ext == 'JPEG'){
$img = imagecreatefromjpeg($tmp);
}elseif($ext == 'png'){
$img = imagecreatefrompng($tmp);
}elseif($ext == 'gif'){
$img = imagecreatefromgif($tmp);
}
list($larg, $alt) = getimagesize($tmp);
$x = $larg;
$y = $alt;
$largura = ($x>$larguraP) ? $larguraP : $x;
$altura = ($largura*$y)/$x;
if($altura>$larguraP){
$altura = $larguraP;
$largura = ($altura*$x)/$y;
}
$nova = imagecreatetruecolor($largura, $altura);
imagecopyresampled($nova, $img, 0,0,0,0, $largura, $altura, $x, $y);
imagejpeg($nova, $pasta.$nome);
imagedestroy($img);
imagedestroy($nova);
return (file_exists($pasta.$nome)) ? true : false;
}// Fim do upload(função para cortar a imagem)
}
<h1 class="title">Cadastrar novo Produto</h1>
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'cadastrar'):
include_once "inc/slug.php";
$img_padrao = $_FILES['img_padrao'];
$titulo = strip_tags(filter_input(INPUT_POST, 'titulo'));
// Aqui segue a chamada da função
$slug = slugify($titulo);
$categoria = $_POST['categoria'];
$subcategoria = $_POST['subcategoria'];
$val_anterior = $_POST['valAnterior'];
$val_atual = $_POST['valAtual'];
$descricao = htmlentities($_POST['descricao'], ENT_QUOTES);
$peso = strip_tags(filter_input(INPUT_POST, 'peso'));
$qtdEstoque = strip_tags(filter_input(INPUT_POST, 'qtdEstoque'));
$verificar_slug = BD::conn()->prepare("SELECT id FROM 'loja_produtos' WHERE slug = ?");
$verificar_slug->execute(array($slug));
if($verificar_slug->rowCount() > 0){
$slug .= $verificar_slug->rowCount();
}
$val->set($titulo, 'Titulo')->obrigatorio();
$val->set($categoria, 'Categoria')->obrigatorio();
$val->set($subcategoria, 'Subcategoria')->obrigatorio();
$val->set($val_atual, 'Valor Atual')->obrigatorio();
$val->set($descricao, 'Descrição')->obrigatorio();
$val->set($peso, 'Peso')->obrigatorio();
$val->set($qtdEstoque, 'Quantidade em Estoque')->obrigatorio();
if(!$val->validar()){
$erro = $val->getErro();
echo '<div class="erros">Erro: '.$erro[0].'</div>';
}elseif($img_padrao['error'] == '4'){
echo '<div class="erros">Informe uma imagem padrão para o produto!</div>';
}else{
$nomeImg = md5(uniqid(rand(), true)).$img_padrao['name'];
$site->upload($img_padrao['tmp_name'], $img_padrao['name'], $nomeImg, '350', '../../produtos/');
$now = date('Y-m-d H:i:s');
$campos = array('img_padrao' => $nomeImg,
'titulo' => $titulo,
'slug' => $slug,
'categoria' => $categoria,
'subcategoria' => $subcategoria,
'valor_anterior' => $val_anterior,
'valor_atual' => $val_atual,
'descricao' => $descricao,
'peso' => $peso,
'estoque' => $qtdEstoque,
'qtdVendidos' => 0,
'data' => $now);
if($site->inserir('loja_produtos', $dados)){
$_SESSION['ultimoId'] = BD::conn()->lastInsertId();
header("Location: index.php?pagina=passo2");
}
}// Fim do Validar
endif;
?>
<div id="formularios">
<form action="" method="post" enctype="multipart/form-data">
<label class="img">
<span class="title">Imagem Padrão</span>
<input type="file" name="img_padrao" />
</label>
<label>
<span class="title">Título do Produto</span>
<input type="text" name="titulo" class="titulo" />
</label>
<div class="fix">
<label>
<span class="title">Escolha a categoria</span>
<select name="categoria">
<option value="" selected="selected">Selecione...</option>
<?php
$pegar_categorias = BD::conn()->prepare("SELECT * FROM 'loja_categorias' ORDER BY id DESC");
$pegar_categorias->execute();
while($cat = $pegar_categorias->fetchObject()){
?>
<option value="<?php echo $cat->slug; ?>"><?php echo $cat->titulo; ?></option>
<?php } ?>
</select>
</label>
<label>
<span class="title">Escolha a subcategoria</span>
<select name="subcategoria">
<option value="" selected="selected">Selecione...</option>
</select>
</label>
</div><!-- fix -->
<div class="fix">
<label>
<span class="title">Valor Anterior</span>
<input type="text" name="valAnterior" id="preco" class="valores" />
</label>
<label>
<span class="title">Valor Atual</span>
<input type="text" name="valAtual" id="preco1" class="valores" />
</label>
</div><!-- fix -->
<label>
<span class="title">Descreva as características do Produto</span>
<textarea name="descricao" cols="30" rows="5" id="tiny"></textarea>
</label>
<div class="fix">
<label>
<span class="title">Peso do Produto(Ex: 0.200 = 200 gramas)</span>
<input type="text" name="peso" class="peso-qtd" />
</label>
<label>
<span class="title">Quantidade em Estoque</span>
<input type="text" name="qtdEstoque" class="peso-qtd" />
</label>
</div><!-- fix -->
<input type="hidden" name="acao" value="cadastrar" />
<input type="submit" value="Próximo Passo" class="btn" />
</form>