Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Venho aqui pedi mais uma vez a colaboração de vocês se puderem.
Estou com um filtro semelhante a do opencart da area de pedidos.
Estou tentando fazer a busca e não estou tendo sucesso, segue o HTML e o PHP:
Eu não consigo selecionar os dados com esta instrução SQL, porém se eu colocar na SQL direto do phpmyadmin, ela me retorna todos os resultados corretamente.
Alguma solução?
O erro que me retorna é este:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1267169544 bytes) in sys.fit-turbo.com/views/pedidos/index.php on line 362
<form class="form-inline" action="" method="post">
<div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="pedido"><b>N° Pedido</b></label>
<div class="controls">
<input type="text" id="pedido" class="span12" name="pedido_id">
</div>
</div>
</div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="selectError3"><b>Situação do pedido</b></label>
<div class="controls">
<select id="selectError3" name="status_pedido" class="span12">
<option value="" disabled="" selected="">Selecione a situação do pedido</option>
<option value="0">Novo</option>
<option value="3">Pago</option>
<option value="1">Aguardando</option>
<option value="2">Em análise</option>
<option value="4">Disponível</option>
<option value="5">Em disputa</option>
<option value="6">Devolvido</option>
<option value="7">Cancelado</option>
</select>
</div>
</div>
</div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="ini"><b>Cadastro</b></label>
<div class="controls">
<input type="date" id="ini" name="data_pedido" class="span12" value="<?= $value ?>">
<?= $text; ?>
</div>
</div>
</div>
</div>
<div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="cliente"><b>Cliente</b></label>
<div class="controls">
<input type="text" id="cliente" name="nome" class="span12">
</div>
</div>
</div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="email"><b>E-mail</b></label>
<div class="controls">
<input type="email" id="email" name="email" class="span12">
</div>
</div>
</div>
<div class="span4">
<div class="control-group">
<label class="control-label" for="mod"><b>Forma de pagamento</b></label>
<div class="controls">
<select id="selectError3" name="pedido_pagamento" class="span12">
<option value="" disabled="" selected="">Selecione a forma de pagamento</option>
<option value="Depósito">Depósito</option>
<option value="PagSeguro">PagSeguro</option>
</select>
</div>
</div>
</div>
</div>
<input type="hidden" name="pesquisar" value="ok"/>
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-search"></i> Filtrar</button>
</form>
<?php
ini_set("display_errors", true);
error_reporting(E_ALL);
$search = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if (isset($search['pesquisar']) AND $search['pesquisar'] == 'ok'):
unset($search['pesquisar']);
$data_pedido = $search['data_pedido'];
$idpedido = $search['pedido_id'];
$statusPedido = $search['status_pedido'];
$pagamento = $search['pedido_pagamento'];
$nome = $search['nome'];
$email = $search['email'];
$whereIdPedido = "";
$whereData = "";
$wherePagamento = "";
$whereStatus = "";
$whereNome = "";
$whereEmail = "";
if (isset($idpedido)):
$whereIdPedido = "AND p.pedido_id = '$idpedido'";
endif;
if (isset($data_pedido)):
$whereData = "OR p.data_pedido = '$data_pedido'";
endif;
if (isset($pagamento)):
$wherePagamento = "OR p.pedido_pagamento = '$pagamento'";
endif;
if (isset($statusPedido)):
$whereStatus = "OR p.status_pedido = '$statusPedido'";
endif;
if (isset($nome)):
$whereNome = "OR u.nome LIKE '$nome'";
endif;
if (isset($email)):
$whereEmail = "OR u.email LIKE '$email'";
endif;
$sql = mysql_query("select p.*,u.* FROM ws_pedidos p, uni_usuario u WHERE p.pedido_id != 0 $whereIdPedido $whereData $wherePagamento $whereStatus $whereNome $whereEmail") or die(mysql_error());
$conta = @mysql_num_rows($sql);
?>>
Faz um override na memoria e veja se retorna algum erro.
ini_set('memory_limit', '-1');
http://php.net/manual/en/ini.core.php#ini.memory-limit
Mas ta meio tenso essa busca sua ae com esses OR da vida
voce precisa mesmo de todos os campos?
select p.,u. FROM
Segue como otimizar uma query, principalmente em questões de Indice
Infelizmente o cliente é chato, mais eu acho que posso tentar remover apenas o numero do pedido, ao qual eu sei que ele vai justificar depois, rsrsrs. Mais você me dá alguma sugestão, uma luz pelo menos, porque tá dificil fazer esse filtro funcionar.
Olá, acabei de fazer isso aqui, só que agora dá um erro
504 Gateway Time-outEu dei um echo apenas na minha sql, e me retorna assim, se eu apenas inserir dados em 1 campo, pra mim está correto, e quando eu lanço no sql do phpmyadmin, retorna o resultado corretamente:
select p.,u. FROM ws_pedidos p, uni_usuario u WHERE p.pedido_id != 0 OR p.pedido_pagamento = 'Depósito'
Faz um override na memoria e veja se retorna algum erro.
ini_set('memory_limit', '-1');
http://php.net/manual/en/ini.core.php#ini.memory-limit
Mas ta meio tenso essa busca sua ae com esses OR da vida
voce precisa mesmo de todos os campos?
select p.,u. FROM
Segue como otimizar uma query, principalmente em questões de Indice
http://imasters.com.br/artigo/22264/banco-de-dados/10-tecnicas-para-otimizacao-de-instrucoes-sql?trace=1519021197&source=single