Ir para conteúdo
maurohpg

Listar categorias de pratos com erro

Recommended Posts

Boa tarde pessoal, estou montando um sistema de delivery, estou com um erro que não consigo achar, sei que é na montagem da programação abaixo.

Na página eu listo com botões os tipo de pratos, mais com essa programação abaixo só está listando a categoria de Yakisoba, as demais não listam os pratos, o que posso estar fazendo de errado na montagem?

 

<section class="section-50 section-sm-top-90 section-sm-bottom-100 bg-image-6">
  <div class="shell-wide isotope-wrap">
  <h3 class="text-center">Our Menu</h3>
  <div class="range range-sm-center">
  <div class="cell-xs-12">
    <div class="cell-box">
      <ul class="isotope-filters-responsive">
        <li>
          <p>Choose your category:</p>
        </li>
        <li class="block-top-level"> 
          <!-- Isotope Filters-->
          <button data-custom-toggle="#isotope-1" data-custom-toggle-disable-on-blur="true" class="isotope-filters-toggle btn btn-primary-lighter btn-shape-circle">Categorias<span class="caret"></span></button>
          <div id="isotope-1" class="isotope-filters isotope-filters-buttons isotope-filters-buttons-primary-lighter">
            <ul class="inline-list">
	<?php
	$consultaCategoria = "SELECT a.idCatPrato, a.NomeCatPrato
	FROM tb_catpratos a
	WHERE a.idCatPrato in ( SELECT DISTINCT b.idCatPrato 
		FROM tb_pratos b
		WHERE b.idCatPrato = a.idCatPrato
		AND b.status = 's')
		ORDER BY a.NomeCatPrato";
	$resultadoCategoria = mysql_query($consultaCategoria) 
	or die("Erro ao acessar base de dados de categorias");
	while ($linhaCategoria = mysql_fetch_assoc($resultadoCategoria))
    {
	$idCatPrato = $linhaCategoria["idCatPrato"];	
	$NomeCatPrato = $linhaCategoria["NomeCatPrato"];
	echo"<li><a data-isotope-filter='$idCatPrato' data-isotope-group='gallery' href='#' class='btn-shape-circle btn active'>$NomeCatPrato</a></li>";	
} /*End while categoria*/
 ?>
            </ul>
          </div>
        </li>
      </ul>
    </div>
  </div>
  </div>
  <div class="cell-xs-12 offset-top-40"> 
    <!-- Isotope Content-->
    <div data-isotope-layout="fitRows" data-isotope-group="gallery" class="row isotope isotope-menu isotope-menu-offsets">
      <?php
/* Pratos */
	$consultaPratos = "SELECT a.idPrato, a.maisAmados, a.resumoPrato, a.tituloPrato, 
	a.valorB_Prato, b.foto
		FROM tb_pratos a
		LEFT JOIN galeria b ON b.idPrato = a.idPrato
		WHERE a.idCatPrato = $idCatPrato
		AND a.status = 's'";
	$resultadoPratos = mysql_query($consultaPratos) 
	or die("Erro ao acessar base de dados de pratos");;
	while ($linhaPratos = mysql_fetch_assoc($resultadoPratos))
	{
	$valorPrato = $linhaPratos["valorB_Prato"];
	$idPrato = $linhaPratos["idPrato"];
	$maisAmados = $linhaPratos["maisAmados"];
	$resumoPrato = $linhaPratos["resumoPrato"];
	$tituloPrato = $linhaPratos["tituloPrato"];
	$imagemProduto = $linhaPratos["foto"];
	if ($imagemProduto == ""){ 
	$imagemProduto = "no-image.png";
	}
	$foto = "../sistema/imagens/thumb/".$imagemProduto;
		echo "<div data-id='$idPrato' data-name='$tituloPrato' data-price='$valorPrato' data-qtde='1' data-filter='$idCatPrato' class='col-xs-12 col-sm-6 isotope-item'>
						<div class='thumbnail-menu-modern thumbnail-menu-modern-horizontal'>
							<div class='unit unit-lg-horizontal unit-spacing-sm unit-middle'>
								<div class='unit-left'>
									<figure>
										<img src='$foto' alt='' width='310' height='260' class='img-responsive'/>
									</figure>
								</div>
								<div class='unit-body'>
									<div class='caption text-center'>
										<h5>$tituloPrato</h5>
										<p class='text-italic'>$resumoPrato</p>";		  
										if ( $statusAtiva == "s") {			  
											echo "<a class=\"button white-btn clicked\" href=\"javascript:Cart('$idPrato', 'add');\">
													<span class='desk'>Adicionar</span>
													<span class='mob'><i class='fa fa-check'></i></span>
													</a>";
										}
											echo "<p class='price'>$valorPrato</p><a href='shop-single.html' class='btn btn-shape-circle btn-burnt-sienna offset-top-15'>Pedir</a>
									</div>
								</div>
							</div>
						</div>
					</div>";}		
				?>
  </div>
  </div>
  </div>
</section>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Acredito que a busca pelas categorias deva ser no trecho:

5 hours ago, maurohpg said:

<?php $consultaCategoria = "SELECT a.idCatPrato, a.NomeCatPrato FROM tb_catpratos a WHERE a.idCatPrato in ( SELECT DISTINCT b.idCatPrato FROM tb_pratos b WHERE b.idCatPrato = a.idCatPrato AND b.status = 's') ORDER BY a.NomeCatPrato"; $resultadoCategoria = mysql_query($consultaCategoria)

 

Uma das possibilidades é que naquele select dentro do WHERE a.idCatPrato in(SELECT ...) talvez esteja retornando uma única categoria cadastrada em tb_pratos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Caio_Lourençon
      Olá estou desenvolvendo um projeto utilizando a extensão MySQLi, e nisso aproveitando para utilizar algumas funções orientada a objeto! Gostaria de tirar umas dúvidas em relação a listagem de dados, são duas perguntas:   1) Utilizar a função foreach() ao invés de um while() com a função fetch_array() dentro, tem uma listagem mais rápida ou mais lenta? Pois com ambas consigo trazer os dados, No momento estou utilizando a foreach por ser mais rápida de se digitar.
      2) Utilizo muitas listagens de tabelas diferentes na mesma página sempre chamando um novo SELECT, seria melhor criar uma função com um SELECT dentro para eu sempre reutiliza-lá ou não iria mudar muita coisa em questão de desempenho?
       
      Agradeço qualquer informação.
    • Por marcosberaldo
      Pessoal, boa noite.
      Tenho uma tabela no BD que preciso criar um rankin.
      Fiz uma select que soma duas colunas, de pontuação e outra de desempate, depois ordena as somas por jogador e cria o ranking.
      Até ai está funcionando blz.
      Meu problema é o seguinte: Imagine que existam 100 jogadores, eu estou em 70º. Eu quero mostrar o rankin com a minha colocação, mas é inviável criar uma lista com mais de 70 jogadores. O que eu quero é mostrar 10 colocações antes de mim e 10 depois de mim, ou seja, mostrar do 60º ao 80º colocado, mas não consigo fazer isso.
      No meu código criei até um while que identifica minha colocação (70º), mas não consegui criar um while que exiba somente esses 20 jogadores. Se alguém souber como resolver... fico muito grato. Segue o código:
      $sql = "SELECT *, SUM(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE rodada = '$rodada' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acerto_Exato DESC"; // Inicia o While de pontuação $result = mysqli_query($conn, $sql); $result2 = mysqli_query($conn, $sql); $i = 1; // Define 1 para o primeiro lugar no ranking         // Esse while identifica minha posição no ranking         while($r = mysqli_fetch_assoc($result2)) {         $ID_Jog        =    $r['JogadorID'];         $Pos        =    $totalArray[$r['JogadorID']] = $i++;         if($LoginID == $ID_Jog) {          $Minha_Colocacao = $Pos;              }          }                   while($row = mysqli_fetch_assoc($result)) { $ID_Jogador        =    $row['JogadorID']; $Posicao        =    $totalArray[$row['JogadorID']] = $i++."º "; $RankJogador    =    $row['nome']; $Pontos            =    $row['TotalPontos']; $AcertoExato    =    $row['Acertos']; // Verifica se o usuário é o jogador logado e marca um style diferente para ele. if($LoginID == $ID_Jogador) {     // Se for o mesmo jogador define um fundo colorido para a linha dele na tabela     $destaque = "style=\"background-color:#e6a527\"";     //$Pos = explode('º',$Posicao);         } else {     // Caso não seja zera a variável novamente.     unset($destaque); } echo " <div class=\"divTableRow\" $destaque> <div class=\"divTableCell\" align=\"center\">$Posicao</div> <div class=\"divTableCell\" >$RankJogador</div> <div class=\"divTableCell\" align=\"center\">$Pontos</div> <div class=\"divTableCell\" align=\"center\">$AcertoExato</div> </div>"; }  
       
    • Por leardini
      Boa noite.
       
      Tenho uma consulta feita em PHP que mostra em uma table o resultado, e preciso que essa consulta o Valor do Campo "ID"  passe para uma Variável para que eu possa usar em outra consulta.
       
      Não consegui muita informação para o tipo de conexão que estou usando SQL Server e não My SQL, e é uns de meus primeiros códigos.
       
      Desde já agradeço a atenção!
       
      $rank = odbc_exec($connection, $verifica); if($pg == 1 or $pg == 0){ $i = 1; }elseif($pg > 1){ $i = $ini+1; } while($dados = odbc_fetch_array($rank)) { $id=$i+1; // AQUI OCORRE O PROBLEMA $idmomb = .$dados['id']; echo ($i % 2) ? "<tr>" : "<tr>"; echo '<td><center>'.$dados['ID'].'</center></td>'; echo '<td><center>'.$dados['MonsterName'].'</center></td>'; echo '<td><center>'.$dados['PublicDrop'].'</center></td>'; echo '<td><center>'.$dados['Quantity'].'</center></td>'; echo '</tr>'; $i++; } echo '</table>';  
    • Por Maykel dos Santos Figueire
      Gostaria de saber como posso fazer para ter inputs enviando valores diferentes dentro de um loop do while...
      <form method="POST" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>"> <?php while ($linhasMotoristas = mysqli_fetch_array($consultaMotoristas)) { $motoristasStatus = $linhasMotoristas['status']; $motoristasId = $linhasMotoristas['idmotoristas']; $motoristasNome = $linhasMotoristas['nome']; $motoristasCpf = $linhasMotoristas['cpf']; $motoristasGanhos = $linhasMotoristas['ganhos'] ?> <tr> <td class="s"> <?php if($motoristasStatus == 1){ echo "<div style='color: green;'>●</div>"; }else{echo "<div style='color: red;'>●</div>"; } ?> </td> <td class="m"><?php echo $motoristasId;?></td> <td class="n"><?php echo $motoristasNome;?></td> <td class="c"><input type="hidden" name="<?php $td_1 = $motoristasId;?>"><?php echo $motoristasCpf;?> </td> <td class="g"><?php echo round($motoristasGanhos, 2);?></td> <td> <input type="text" name="valorBruto"> <input type="submit" name="submit"> <?php if (isset($_POST['submit'])?$_POST['submit'] : 0) { $valorBruto = $_POST['valorBruto']; $porcentagemBase = 5/100; $encargosBase = 25/100; $vezesPorcentagem = $valorBruto*$porcentagemBase; $menosEncargosBase = $vezesPorcentagem-$encargosBase; $resultadoLiquido = $menosEncargosBase*$porcentagemBase; $resultadoGeral = $resultadoLiquido; } ?> <?php echo round($resultadoGeral,2); ?> <?php echo $td_1;?> </td> </tr> <?php } ?> </form> Como vocês podem ver na imagem, ele soma todos os campos com o mesmo valor, queria que somasse um valor para cada campo...

    • Por Maykel dos Santos Figueire
      Alguém por favor pode me ajudar, a paginação não funciona!
      <?php include 'configs/conecta.php'; $logado = $_SESSION['usuario']; $consultaSection = "SELECT * FROM motoristas WHERE id_logado = '$logado'"; $execSection = mysqli_query($conexao,$consultaSection) or die(error); ?> <div class="section">     <table>         <tr>             <td class="m">Matricula</td>             <td class="n">Nome</td>             <td class="c">CPF</td>             <td class="g">Ganhos</td>         </tr>         <?php             $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;              $banco = mysqli_query($conexao, "SELECT `id`, `nome`, `cpf`, `ganhos` FROM motoristas");             $total = mysqli_num_rows($banco);              $registros = 4;             $numPaginas = ceil($total/$registros);             $inicio = ($registros*$pagina)-$registros;              $banco = mysqli_query($conexao, "SELECT `id`, `nome`, `cpf`, `ganhos` FROM motoristas LIMIT $inicio,$registros");              $total = mysqli_num_rows($banco);             ?>          <?php while($exibe_pecas = mysqli_fetch_array($banco)) {?>             <?php while($logado = mysqli_fetch_array($execSection)) { ?>                          <tr>                 <td class="m"><?php echo $logado["id"];?></td>                 <td class="n"><?php echo $logado["nome"];?></td>                 <td class="c"><?php echo $logado['cpf'];?></td>                 <td class="g"><?php echo round($logado['ganhos'], 2);?></td>             </tr>             <?php } ?>         <?php } ?>         <?php             if($pagina > 1) {                 echo "<a href='painel.php?pagina=".($pagina - 1)."' class='controle'>&laquo; anterior</a>";             }             for($i = 1; $i < $numPaginas; $i++) {                 $ativo = ($i == $pagina) ? 'numativo' : '';                 echo "<a href='painel.php?pagina=".$i."' class='numero ".$ativo."'> ".$i." </a>";             }             if($pagina < $numPaginas) {                 echo "<a href='painel.php?pagina=".($pagina + 1)."' class='controle'>proximo &raquo;</a>";                     }         ?>     </table> </div> Grato!
×

Informação importante

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