while + php

Tens a função feof para ficheiros.

Se pretendes interacção com bases de dados, o PHP terá formas mais usáveis de lidar com isso.
 
para base de dados, a query é executada com mysql_query, e normalmente carregada par auma variavel, depois podes fazer de duas maneiras, dependendo da função que costumas usar.

se usas mysql_result para apresentar os resultados, fazes um ciclo:
Código:
for ($x=0; $x<mysql_num_rows($resultado); $x++) ...

se usas o mysql_fetch_array ainda é mais simples:
Código:
while ($row= mysql_fetch_array($resultado)) ...

nesta segunda hipotese, a cada iteração, um registo do resultado é carregada para a variavel $row. quando for a próxima iteração já vai passar o registo seguinte, sem precisares de incrementar nada. quando já não houver mais registos o $row recebe null por isso para o ciclo
 
Código:
function ver_produtos() { 
    liga_bd();
    // a pesquiza pretendida
    $pes_produto="select produto.* from produto, tipo, sub_tipo";
    //efectuar a pesquisa na base de dados : login
    $resultado=mysql_query($pes_produto);
    
    // aqui vamos obter o numero de resutados obtidos (linhas ... )
    $num=mysql_num_rows($resultado); 
 
     echo $num;
    // se tivermos obtido resultados vamos fazer a verificao da pass, e efectuar as operacoes que pretendemos
     if( $num<1 ){
        echo"Ainda Não existe produtos na Base de Dados";
    } else { ?>
    <hr>
    <table border="1">
        <tr>
            <td><b>Marca</b></td><td><b>Tipo</b></td><td><b>Sub-Tipo</b></td><td><b>Cor</b></td><td><b>Fornecimento</b></td><td><b>Normas</b></td><td><b>Composição Quimica</b></td><td> <b>Caracteristicas Mecanicas</b></td>
        <tr>
<?
    while ($row= mysql_fetch_array($resultado))  {
        echo "<tr>";
        echo "<td>";
        echo mysql_result($resultado,$row,'produto.marca_pro');
        echo "</td><td>";
        echo mysql_result($resultado,$row,'produto.cod_tipo');
        echo "</td><td>";
        echo mysql_result($resultado,$row,'produto.cod_sub_tipo');
        echo "</td><td>";
        echo mysql_result($resultado,$row,'produto.cor');
        echo "</td><td>";
        echo mysql_result($resultado,$row,'produto.estado');
        echo "</td><td><a href=index.php?r=1&n=";
        echo mysql_result($resultado,$row,'produto.cod_pro');
        echo "><img src=imagens/seta1.gif width=22 height=24 /></a></td><td><a href=index.php?r=1&k=";
        echo mysql_result($resultado,$row,'produto.cod_pro');
        echo "><img src=imagens/seta2.gif width=22 height=24 /></a></td><td><a href=index.php?r=1&f=";
        echo mysql_result($resultado,$row,'produto.cod_pro');
        echo "><img src=imagens/seta3.gif width=22 height=24 /></a></td></tr>";}
        }

 }
tenho esse codigo so que agora ele apresenta sempre o mesmo registo e 84 vezes sendo que a tabela so tem 4 registo
 
Última edição pelo moderador:
não deves ter percebido bem o que eu disse, pois estás a misturar duas funções diferentes. ou usas mysql_result, ou mysql_fetch_array, nunca as duas ao mesmo tempo
vai a www.php.net e procura a documentação dessas duas funções para perceberes melhor

os 80 registos a mais devem ser por causa da query que está mal:

"select produto.* from produto, tipo, sub_tipo"

estás a ir buscar todos os dados de uma tabela, mas incluis outras duas tabelas que não usas. por cada registo correspondente nessas tabelas, vai-te aparecer um registo repetido. quando usas mais do que uma tabela deves sempre por as devidas relações entre elas
 
ja consegui ver o que tinha mal
devia ter utilizado $row['marca_pro'];

agora ja me esta a dar certo
e mais uma vez obrigado pela ajuda
 
Back
Topo