Ir para conteúdo

POWERED BY:

Arquivado

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

fsphp

Porque quando faz o loop while a formatação não é respeitada?

Recommended Posts

Pessoal,Quando eu tiro o loop que busca os dados no banco de dados a formatação funciona, quando eu coloco o loop a tabela com os dados aparecem no meio da página e não tem santo que mude isso.Já fiz com as tags html ecoando dentro do script, já usei HEREDOC etc e não teve jeito. Porque ocorre esse problema? Só um detalhe, isso está acontecendo no IE, já no Mozilla funciona! http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

<html><head><title>Área Administrativa</title></head><body><?phpinclude "conecta_mysql.php";echo "<div style='position:absolute;display:block;top:0px;left:10px'>";echo "<table border='1' style='display:block;position:absolute;font-family:verdana, arial, helvetica, sans-serif;font-size:10px;top:0px;left:0px'>";echo "<tr><th>Nome do Aluno</th><th>LOGIN</th><th>ENDEREÇO</th><th>E-MAIL</th><th>TELEFONES</th><th>ANIVERSÁRIO</th></tr>";$seleciona = mysql_query("SELECT * FROM novos_dados");while($res = mysql_fetch_row($seleciona)){echo "<tr>";echo "<td>" . $res[1] . "</td><td>" . $res[2] . "</td><td>" . $res[3] . "</td><td>". $res[4] . "</td><td>" . $res[5] . "<br />" . $res[6] . "<br />" . $res[7] . "</td><td>". $res[8] . "</td>";echo "</tr><br />";}echo "</table>";echo "</div>";?></body></html>

Valeu pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o seu HTML está errado...

 

tente assim:

<html><head><title>Área Administrativa</title></head><body><?phpinclude "conecta_mysql.php";echo '<div style="position:absolute; display:block; top:0px; left:10px;">';echo '<table border="1" style="display:block; position:absolute; font-family:verdana, arial, helvetica, sans-serif; font-size:10px; top:0px; left:0px;">';echo '<tr><th>Nome do Aluno</th><th>LOGIN</th><th>ENDEREÇO</th><th>E-MAIL</th><th>TELEFONES</th><th>ANIVERSÁRIO</th></tr>';$seleciona = mysql_query("SELECT * FROM novos_dados");while($res = mysql_fetch_row($seleciona)){echo '<tr>';echo '<td>'.$res[1].'</td>';echo '<td>'.$res[2].'</td>';echo '<td>'.$res[3].'</td>';echo '<td>'.$res[4].'</td>';echo '<td>'.$res[5].'<br />'.$res[6].'<br />'.$res[7].'</td>';echo '<td>'.$res[8].'</td>';echo '</tr>';}echo '</table>';echo '</div>';?></body></html>

 

tente aí, e ve se funciona... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí pessoal,Estive verificando o código e o problema aconteceu devido à forma como fiz a concatenação das tags e as variáveis dentro do loop WHILE.A outra parte do cógigo estava correta. Só não entendi onde estava o erro na concatenação pois, a princípio, eu achava que não tinha erros.Pode ser como o Samuel colocou, ou assim:echo "<tr>";echo "<td>" . $res[1] . "</td>";echo "<td>" . $res[2] . "</td>";echo "<td>" . $res[3] . "</td>";echo "<td>" . $res[4] . "</td>";echo "<td>" . $res[5] . "<br />" . $res[6] . "<br />" . $res[7] . "</td>";echo "<td>" . $res[8] . "</td>";echo "</tr>";As aspas dentro do html podem ser simples quando usadas dentro dos echos do php que, no caso, tem que ser delimitado pelas aspas duplas. E vice-versa, se delimitar o echo com aspas simples (como fez o Samuel), dentro das tags html tem que usar aspas duplas.Quem puder explicar o que houve de errado na minha concatenção inicial eu agradeceria muito. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

while($res = mysql_fetch_row($seleciona)){echo "<tr>";echo "<td>" . $res[1] . "</td><td>" . $res[2] . "</td><td>" . $res[3] . "</td><td>". $res[4] . "</td><td>" . $res[5] . "<br />" . $res[6] . "<br />" . $res[7] . "</td><td>". $res[8] . "</td>";echo "</tr><br />";}echo "</table>";Pra que o <br /> no (echo "</tr><br />";) não tenho certeza disso mas pode ser isso que tenha dado erro...T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Na mosca Richard!

 

Não faço idéia porque coloquei aquele <br /> no código. Foi só eliminá-lo que funcionou perfeitamente.

 

Olhando o que o Samuel fez, ele também não colocou o break.

 

Provavelmente deu erro por não reconhecer essa como sendo uma tag de uma table. Engraçado que no Mozilla funcionou independente dela.

 

Fiz o teste colocando \r\n no lugar do <br /> e funcionou.

 

Alguém tem uma explicação mais exata do que houve?

 

Valeu pessoal. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas para que quebrar a linha depois to </tr>?

não precisa quebrar linha ali.

 

outra coisa. olha como você estava gerando o seu html:

echo "<table border='1' style='display:block; position:absolute; font-family:verdana, arial, helvetica, sans-serif; font-size:10px; top:0px; left:0px'>";

isso, iria retornar assim no html:

<table border='1' style='display:block; position:absolute; font-family:verdana, arial, helvetica, sans-serif; font-size:10px; top:0px; left:0px'>

 

e isso não é um html válido.

as propriedades dos elementos, precisam ser delimitador por aspas duplas... ou seja:

<table border="1" style="display:block; position:absolute; font-family:verdana, arial, helvetica, sans-serif; font-size:10px; top:0px; left:0px">

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas para que quebrar a linha depois to </tr>?não precisa quebrar linha ali.

Pois é, Samuel, não sei onde eu estava com a cabeça para colocar o <br />depois do <tr>. Foi pura viagem! http://forum.imasters.com.br/public/style_emoticons/default/upset.gif porque não tem sentido.Quanto o html, bem que o Fabyo falou para separar o htm, do php para ficar mais organizado.No entanto, quando trabalhamos o html dentro do código do php, estando este com aspas duplas, a pratica diz que pode-se fazer de duas formas, uma delas é escapando as aspas duplas com a barra invertida, e a outra é usando aspas simples. Que eu saiba não tem nenhuma recomendação para não usar dessa forma.Acredito que os moderadores e experts podem nos certificar disso.Outra alternativa é usar como você fez, o script do php em aspas simples e o html em dupla.Acho que é isso.Valeu a todos e até +. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O melhor mesmo é usar aspas duplas alem do mais que se voce nao usar aspas duplas nao funciona \r\n

 

Se a string é delimitada entre aspas ("), o PHP entende mais seqüências de escape para caracteres especiais:

http://br.php.net/manual/pt_BR/language.ty...g.syntax.double

 

Mas o mais importante recurso de strings delimitadas por aspas está no fato de que nome de variáveis serão substituídos.

 

exemplo:

 

<?php
$nome = "Fabyo";
echo 'Seu nome é : $nome';//Usando Apóstrofos
?>

 

mostra: Seu nome é : $nome

 

<?php
$nome = "Fabyo";
echo "Seu nome é : $nome"';//usando Aspas
?>

 

mostra: Seu nome é : Fabyo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, Fabyo, o mais correto é trabalhar com aspas (") nos scripts php e, quando tiver html dentro do mesmo utilizar a barra para escapar as aspas (") do html, certo?Embora seja mais "trabalhoso" o mais correto é sempre trabalhar com as barras de escape, né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso aí... no PHP você pode usar aspas simples ou duplas...mas no HTML que você vai gerar... nunca pode usar aspas simples para colocar as propriedades do elemento.sempre terá que usar aspas duplas...sendo assim, se usar aspas duplas no PHP, terá que escapar as aspas duplas do html com a barra "\".e se usar aspas simples no PHP, é só deichar o html normal mesmo... entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa do \r\n não funcionar dentro de aspas simples eu não sabia.. legal... aprendi mais uma... (Y)vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa do \r\n não funcionar dentro de aspas simples eu não sabia.. legal... aprendi mais uma... (Y)vlw

Eu também não. Por isso é sempre bom seguir os princípios básicos do código, como colocou o Fabyo, pois a gente nunca sabe onde ele pode enroscar. Aí já viu, né, tem que pedir socorro para os amigos do iMaster. http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola, ou melhor, show de CÓDIGO!!!

 

Parabéns Erick. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Tem muita coisa para estudar, o problema é memória no HD da cabeça pra guardar tudo isso. :) , mas a gente chega lá!!!

 

Estou repassando todos os meus códigos dos sites dos clientes para depurar erros e aprender mais um pouco. Acho uma boa prática. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então aproveitando a discussãod sobre o HTML vou aproveitar para puchar o saco do Smarty e das CSS.Assim da para deixar o HTML separado do PHP e isso sim facilita a vida.Cada coisa no seu lugar. Isso não so ajuda a programar como tmb ajuda que erros "bestas" (modo de falar isso de vez em quando acontece mesmo) aconteçam pois não mistura códigos cada coisa no seu lugar.

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.