Ir para conteúdo

POWERED BY:

Arquivado

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

editorpa

Problemas com if dentro do while

Recommended Posts

meu codigo

<?php
$sql = mysql_query("SELECT * FROM `pagamentos` WHERE id_cliente = '$id'");
echo '<table  width="450" border="0" align="center">';
while ($linha = mysql_fetch_array($sql)) 
{
$descricaopg = $linha['descri_pag'];
$valorpg = $linha['valor_pag'];
$stapg = $linha['staus_pag'];
echo '<tr><td width="170" align="center">'.$linha['descri_pag'].''if($linha['descri_total'] ! '') {'<div class="filezilla" onclick="du('res1');">Descricao Completa</div>'}'</td><td width="130" align="center">'.$linha['valor_pag'].'</td><td width="150" align="center">'.$linha['staus_pag'].'</td></tr>';
echo '<div id="res1" style="display:none;"><p>Descricao Completa</p><table width="150" border="0" align="center"><tr><td width="170" align="center">'.$linha['descri_total'].'</td></tr></table></div>';
}	
echo '</table>';
		  
		  ?>
o erro

Parse error: syntax error, unexpected T_IF, expecting ',' or ';'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dois problemas graves: ilegibilidade do código e erro com programação, pois o if não pode vir dentro da string dessa maneira.

Dando um pouco mais de legibilidade ao teu código, os problemas ficam mais fáceis de serem encontrados e posteriormente resolvidos.

 

$sql    = mysql_query( "SELECT * FROM `pagamentos` WHERE id_cliente = '{$id}'" );
$format = '<table width="450" border="0" align="center">%s</table>';
$table  = '';

while( ( $linha = mysql_fetch_assoc( $sql ) ) !== false ) {
   $descricaopg = $linha[ 'descri_pag' ];
   $valorpg     = $linha[ 'valor_pag' ];
   $stapg       = $linha[ 'staus_pag' ];

   $table .= '<tr>';
   $table .= '<td width="170" align="center">' . $linha[ 'descri_pag' ];

   if ( !empty( $linha[ 'descri_total' ] ) ) 
       $table .= '<div class="filezilla" onclick="du(\'res1\');">Descricao Completa</div>';

   $table .= '</td>';
   $table .= '<td width="130" align="center">' . $linha[ 'valor_pag' ] . '</td>';
   $table .= '<td width="150" align="center">' . $linha[ 'staus_pag' ] . '</td>';
   $table .= '</tr>';
   $table .= '<div id="res1" style="display:none;"><p>Descricao Completa</p>';
   $table .= '<table width="150" border="0" align="center">';
   $table .= '<tr>';
   $table .= '<td width="170" align="center">' . $linha[ 'descri_total' ] . '</td>';
   $table .= '</tr>';
   $table .= '</table></div>';
}

printf( $format, $table );

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sintaxe ta completamente errada;

Antes do IF você não colocou ponto e vírgula

Dentro do IF você colocou ! em vez de !=

 

E não existe concatenação dessa forma:

//Maneira errada
echo 'string' . if($var != $var2){'string2'}'string3'
e sim:

//Maneira correta
echo 'string' . ($var != $var2 ? 'string2' : false) . 'string3';

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas eu naum quero diferente ou igual somente diferente,e André D. Molin obrigado mas naum quero outro codigo e uma solução para este

A sintaxe ta completamente errada;

Antes do IF você não colocou ponto e vírgula

Dentro do IF você colocou ! em vez de !=

 

E não existe concatenação dessa forma:

//Maneira errada
echo 'string' . if($var != $var2){'string2'}'string3'
e sim:

//Maneira correta
echo 'string' . ($var != $var2 ? 'string2' : false) . 'string3';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Recomendo que não trabalhe com o código spaguetti dessa forma.

Se um dia tiver que mudar o layout, vai ter que refazer tudo.

Separe seu código em uma camada de visualização ou mesmo utilize um smarty da vida.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wesley muito obrigado pela resposta mais prefiro ficar com meu codigo mesmo

Amigo,

 

Recomendo que não trabalhe com o código spaguetti dessa forma.

Se um dia tiver que mudar o layout, vai ter que refazer tudo.

Separe seu código em uma camada de visualização ou mesmo utilize um smarty da vida.

 

Abraços

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola eu modifiquei essa parte do codigo

<code>echo '<tr><td width="170" align="center">'.$linha['descri_pag'].($linha['descri_total'] != '' ? '<div class="filezilla" onclick="du('res1');">Descricao Completa</div>': false).'</td><td width="130" align="center">'.$linha['valor_pag'].'</td><td width="150" align="center">'.$linha['staus_pag'].'</td></tr>';</code>

ta dando erro na T_STRING

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas eu naum quero diferente ou igual somente diferente,e André D. Molin obrigado mas naum quero outro codigo e uma solução para este

 

A sintaxe ta completamente errada;

Antes do IF você não colocou ponto e vírgula

Dentro do IF você colocou ! em vez de !=

 

E não existe concatenação dessa forma:

//Maneira errada
echo 'string' . if($var != $var2){'string2'}'string3'
e sim:

//Maneira correta
echo 'string' . ($var != $var2 ? 'string2' : false) . 'string3';
Amigo, "!=" significa "Diferente" e não "Diferente ou igual" porque isso não existe.

"!" (sozinho) significa FALSO

if($var1 != $var2)//se var1 for diferente de var2
if(!$var1) // se var1 for FALSE

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.