Ir para conteúdo

Arquivado

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

Carcleo

[Resolvido] parando e startando um while

Recommended Posts

pessoal

 

tenho o codigo abaixo que me retorna 100 registros. Cada registro uma checkbox. Uma do lado da outra.

 

  <?
    while (list($id, $nome) = mysql_fetch_row($produtos)){ 
        print "<input type='checkbox' name='produtoid' value='$id' />$nome</option>";
		}
	      }
    ?>	
O que eu queria?

 

queria que , de que, de 10 em 10 registros o codigo pulasse uma linha.

 

tem jeito isso em php?

Compartilhar este post


Link para o post
Compartilhar em outros sites


$i=1;

while (list($id, $nome) = mysql_fetch_row($produtos))

{

echo '<input type="checkbox" name="produtoid" value="'.$id.'" />'.$nome;

if( $i%10==0 ) echo '<br />'

 

$i++;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, mas E se para cada 10 regitros fosse criado mesmo linhas <tr> e 10 colunas <td>.

Era isso que eu preciso realmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesma logica.. basta montar o html.

 

ali onde eu coloquei o '<br />', você deve colocar o '</tr><tr>'..

e cada input, num '<td>'

 

.. só tente fazer. Só quis te passar a lógica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok.

 

Deu certo assim.

  <tr><td colspan="10">Produto:</td></tr>
    <?
    $i=1;
	while (list($id, $nome) = mysql_fetch_row($produtos))
	{
			echo '<td><input type="checkbox" name="produtoid[]" value="'.$id.'" />'.$nome.'</td>';
			if( $i%10==0 ) {echo '</tr><tr>';}
	
			$i++;
	}

    ?>	
Agora isso ai me gerou um outro problema. Desta vez na paginação.

 

na hora de montar a pagina 0, 1, 2 e assim por diante. É montado assim no fim do while:

...
if($pagina > 0) {
   $menos = $pagina - 1;
   $url = "$PHP_SELF?acao=verpreco&produtoid=$produtoid&pagina=$menos";
   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
}
for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
   $url = "$PHP_SELF?acao=verpreco&produtoid=$produtoid&pagina=$i";
   echo " | <a href=".$url.">$i</a>";
}
if($pagina < ($paginas - 1)) {
   $mais = $pagina + 1;
   $url = "$PHP_SELF?acao=verpreco&produtoid=$produtoid&pagina=$mais";
   echo " | <a href=".$url.">Próxima</a>";
}	                             
A}contece que essa variavel html na url 'produtoid' que recebe a variavel php $produtoid, recebe valor com carcter de string e esta me jogando no mato.Veja:

$produtoid= 'p.id=1 or p.id=2 or p.id=3 or p.id=4 or p.id=5';
quando jogo este valor nna variavel html produtoid ele para no primeiro sinal de igual e a string url fica assim:

http://localhost/php/carcleo.com/sistema/controle/paginas_controle/Pesquizas.php?acao=verpreco&produtoid=p.id=1
O que fazer para resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos.

Consegui assim:

<?
if($acao=="verpreco") {
	if 	($idproduto)
	{
		$produtoid=urldecode($idproduto);
	    
	}
	else
	{
		foreach($_POST['produtoid'] AS $key => $value)
		{ 
		  $var[]="p.id=".$value." or";
		}
		$produtoid=implode(' ',$var); 
		$produtoid= substr($produtoid,0, -3);
	}
	
	

		
$sql = mysql_query("
					Select 
					  pp.id, pp.idProduto, pp.idFornecedor, p.nome, f.nome, pp.preco
					from 
					  produtopreco pp
					  inner join produtos p on pp.idProduto=p.id
					  inner join fornecedores f on pp.idFornecedor=f.id
					where
					  $produtoid
					order by f.nome, p.nome, pp.preco 
                   ");
				   
$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela
$lpp = 10; // Especifique quantos resultados você quer por página
$paginas = ceil($total / $lpp); // Retorna o total de páginas
if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada
$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
$sql = mysql_query("
					Select 
					  pp.id, pp.idProduto, pp.idFornecedor, p.nome, f.nome, pp.preco
					from 
					  produtopreco pp
					  inner join produtos p on pp.idProduto=p.id
					  inner join fornecedores f on pp.idFornecedor=f.id
					where
					  $produtoid
					order by f.nome, p.nome, pp.preco 
                    LIMIT $inicio, $lpp
				  ");
print "<table align='center' width=400 bgcolor='#0080C0'>";	

	if ($total == "0") {?><tr><td colspan=8 align="center" valign="middle" bgcolor="#FFFFFF"><center><font color=red>=>Não foi encontrado nenhum registro para a sua pesquisa</font></center></td></tr><?php }
	else {
print "<tr                  ><td align=center colspan=3>Preços dos fornecedores para o produto $produtoenviado</td></tr>";
print "<tr BGCOLOR='#CCCCCC'><td align=center>Produto</td>        ";	
print "    <td align=center>Preço Total</td>          ";	
print "    <td align=center>Fornecedor</td></tr>";			   
while(list($id, $idProduto, $idFornecedor, $nomeproduto, $nomefornecedor, $preco)=mysql_fetch_row($sql)){
  print "<tr BGCOLOR='#FFFFFF'><td align=center>$nomeproduto - $preco</td>        ";	
  print "    <td align=center>$precototal</td>          ";	
  print "    <td align=center>$nomefornecedor</td></tr>";			   
	                                                                                                }	
       }   
if($pagina > 0) {
   $menos = $pagina - 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$menos&idproduto=".urlencode($produtoid);
   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
}
for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
   $url = "$PHP_SELF?acao=verpreco&pagina=$i&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">$i</a>";
}
if($pagina < ($paginas - 1)) {
   $mais = $pagina + 1;
   $url = "$PHP_SELF?acao=verpreco&pagina=$mais&idproduto=".urlencode($produtoid);
   echo " | <a href=".$url.">Próxima</a>";
}	                                                                                                    
print "</table>";																				   
}
?>

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.