Ir para conteúdo

POWERED BY:

Arquivado

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

Adolpho B.

[Resolvido] Enumerar resultados no PHP

Recommended Posts

Olá gostaria de saber como posso fazer uma enumeração de resultados no PHP

A principio o código seria este

<?php
$sql = mysql_query("SELECT * FROM produtos LIMIT 3");
$i = 1;
while($l = mysql_fetch_array($sql)){
$nome = $l['nome'];
echo "$i - $nome";
$i++;
}
?>

 

Mas o problema é que meu SELECT não tem essa estrutura acima

e sim essa abaixo, por ser um carrinho de compras o que estou fazendo

<?php
session_start();
foreach($_SESSION['carrinho'] as $id => $qtd){

include "connect.php"; // conexão com o banco
$sql = mysql_query("SELECT * FROM produtos WHERE id = '$id'");
while($l = mysql_fetch_array($sql)){
$nome = $l['nome'];
echo $nome;
}
}
?>

Em tese meu script ficaria assim com a enumeração

<?php
session_start();
foreach($_SESSION['carrinho'] as $id => $qtd){

include "connect.php"; // conexão com o banco
$sql = mysql_query("SELECT * FROM produtos WHERE id = '$id'");
$i = 1;
while($l = mysql_fetch_array($sql)){
$nome = $l['nome'];
echo "$i - $nome<br/>";
$i++;
}
}
?>

O meu objetivo seria que esse script retornasse os nomes dos produtos com a enumeração em ordem crescente ao lado.

O que acontece é que esse script me volta esse resultado ( No momento há 3 produtos adicionados ao meu carrinho )

1 - Produto Tal

1 - Produto taltaltal

1 - Produto Taltaltaltal

 

O erro talvez esteja no meu select onde o certo seria usar "SELECT * FROM produtos LIMIT 3" < exemplo

mais não posso fazer isso como ja disse estou trabalhando com um carrinho de compras

Me ajudem ai.. ta dificil Imagem Postada

E me desculpem se eu fiz algo de errado neste tópico é o meu primeiro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui Imagem Postada :D

O problema estava na definição do loop

Estava tentando fazer a enumeração utilizando o comando while

não é preciso ja que eu estou utilizando um foreach

segue o código funcionando Imagem Postada

<?php
session_start();
foreach($_SESSION['carrinho'] as $id => $qtd){

include "connect.php"; // conexão com o banco
$sql = mysql_query("SELECT * FROM produtos WHERE id = '$id'");
while($l = mysql_fetch_array($sql)){
$nome = $l['nome'];
$i++;
echo "$i - $nome<br/>";
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mude para:


<?php
session_start();

$i = 1;

foreach($_SESSION['carrinho'] as $id => $qtd){
                
include "connect.php"; // conexão com o banco
$sql = mysql_query("SELECT * FROM produtos WHERE id = '$id'");

while($l = mysql_fetch_array($sql)){
$nome = $l['nome'];
echo "$i - $nome<br/>";
$i++;
}
}
?>

 

Você tem que criar a variável $i fora do foreach... se não toda volta do foreach ele vai setar $i = 1;

 

 

você também não precisa por o mysql_fetch_array dentro de um while, pois você está buscando por ID, então só terá 1 resultado...

e você também não precisa colocar o seu script de conexão no foreach... execute-o apenas 1 vez...

 

 

Você pode fazer assim:


<?php
session_start();

$i = 1;

include "connect.php"; // conexão com o banco

foreach($_SESSION['carrinho'] as $id => $qtd){
                
    $sql = mysql_query("SELECT * FROM produtos WHERE id = '$id'");

    $l = mysql_fetch_array($sql);
    $nome = $l['nome'];
    printf('%s - %s<br/>', $i++ , $nome);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

seja bem vindo meu velho, para mim você esta entrando certo no forum

 

na hora que eu ia te ajuda você postou a solução

isso serve como bom exemplo para quem tive com a mesma dificuldade

 

seja bem vindo Imagem Postada

 

a dica do rogerio e boa tambem Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adolpho B,

 

Leve em consideração a possibilidade de haver varios usuarios, cada um com um carrinho com varios produtos. Se um carrinho tiver 100 itens, serão 100 consultas ao banco de dados.

 

Outra questão importante é o asterisco. Se está buscando uma única coluna, não há necessidade de "SELECT *".

 

<?php
session_start();
$ids = array_keys($_SESSION['carrinho']);

include "connect.php"; // conexão com o banco

$sql = "SELECT id, nome FROM produtos WHERE id IN (".implode(",", $ids).")";

$res = mysql_query($sql);

while($l = mysql_fetch_array($res)){
 $nome = $l['nome'];
 $i++;
 echo "$i - $nome<br/>";
}

?>

 

Abraço

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.