N3lson Posted August 7, 2013 at 07:50 PM Report #521145 Posted August 7, 2013 at 07:50 PM Boas estou a tentar fazer o alinhamento com espaços através da função sprintf mas não está a dar $montante = sprintf("%6s.1f",$montante); // apresenta o 1f nao faz o padding $montante = sprintf("%6s",$montante); // nao faz o padding com espaços You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
HappyHippyHippo Posted August 7, 2013 at 09:17 PM Report #521151 Posted August 7, 2013 at 09:17 PM http://php.net/manual/en/function.str-pad.php IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Rui Carlos Posted August 8, 2013 at 01:17 PM Report #521223 Posted August 8, 2013 at 01:17 PM O que é que pretendes fazer exactamente? Testei agora este exemplo <?php $montante = 123; $montante = sprintf("%6s",$montante); echo $montante; e imprimiu 123 Não te está a faltar converter os espaços para ? Rui Carlos Gonçalves
N3lson Posted August 8, 2013 at 04:25 PM Author Report #521245 Posted August 8, 2013 at 04:25 PM (edited) A mim não eu tenho isto... <? <a href="#" title=""><img src="images/user.png" alt="" class="floatL" /></a> <?php movimento('receita'); while($b = mysqli_fetch_array($mov, MYSQL_ASSOC)){ extract($b); print'<ul class="leftList"> <li><tt>Responsável:</tt> <a href="#" title=""><strong>'.$resp.'</strong></a></li> <li><tt>Motivo:</tt> <strong class="orange">'.ucfirst($motivo).'</strong></li> <li class="orderIcons"><strong><tt>'.ucfirst(strtolower($info)).'</tt></strong></li> </ul> <ul class="rightList"> <a href="#" title=""> <li><a href="#" title=""> <strong class="blueBack"># '.$id.'</strong></a></li> </ul> <div class="clear"></div> </div> <div class="cLine"></div> <div class="orderRow"> <ul class="leftList"> <li><tt>Data:</tt></li> <li><tt>Montante:</tt></li> </ul> <ul class="rightList"> <li><strong class="green">'.data($data).'</strong></li> <li><strong class="orange">'.sprintf('%06s',$montante).' €</strong></li> </ul> <div class="clear"></div> </div> <div class="cLine"></div> <div class="totalAmount"><h6 class="floatL blue">Total:</h6><h6 class="floatR blue">'.sprintf('%.1f',soma_mensal('montante','receita',$ano, $mes)).' €<img src="./images/icons/total.png" class="icon"></h6><div class="clear"></div></div>'; } ?> Edited August 8, 2013 at 04:29 PM by N3lson You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
HappyHippyHippo Posted August 8, 2013 at 04:42 PM Report #521249 Posted August 8, 2013 at 04:42 PM (edited) do link que te apresentei : //sprintf('%06s',$montante) str_pad($montante, 6, '0', STR_PAD_LEFT) ps : qual o valor da variável $montante ? (em string) Edited August 8, 2013 at 04:43 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
N3lson Posted August 8, 2013 at 06:18 PM Author Report #521259 Posted August 8, 2013 at 06:18 PM Aqui tem um print com o str_pad extract($row); $montante = (strlen($montante <= 6)) ? str_pad($montante, 9, '0', STR_PAD_LEFT) : sprintf("%02.1f",$montante); echo '<tr> <td align="center"><a class="stats"><tt>'.$montante.' €</tt></a></td> <td><tt>'.$motivo.'</tt></td>'; echo($ident =='R') ? '<td><span class="statsmais">'.$data.'</span></td>': '<td><span class="statsmenos">'.$data.'</span></td> </tr>'; Resultado https://postimg.cc/image/qk6ln72ab/ You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
HappyHippyHippo Posted August 8, 2013 at 06:49 PM Report #521264 Posted August 8, 2013 at 06:49 PM (edited) eu vejo um erro grave e um "senão" erro : (strlen($montante <= 6)) ? ... estás a calcular o tamanho da string "$montante <= 6" que resulta sempre em falso ou verdadeiro agora, ou queres verificar se o valor da variável $montante é menor que 6 o que dá somente : $montante <= 6 ? ... ou queres verificar se o tamanho do texto resultante da impressão do valor da variável $montante é menor que 6, o que dá: strlen($montante) <= 6 ? ... o que tens resulta no primeiro caso, mas de uma forma muito estranha pela razão descrita a seguir "senão" : o problema agora é que falso é equivalente a nulo ou string vazia, logo o strlen desse valor é 0, que é falso, e o valor verdadeiro é convertido para o valor numérico 1, que tem o resultado de strlen de 1, que é verdadeiro. conclusão : como vês, o que está a ser calculado/comparado é na realidade o valor de $montante que visto no print screen de exemplo de output, nunca é menor que 6 (o menor apresentado é de 10, logo a função str_pad nunca é executada !!! Edited August 8, 2013 at 06:50 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
N3lson Posted August 8, 2013 at 06:58 PM Author Report #521267 Posted August 8, 2013 at 06:58 PM (edited) quero calcular o tamanho do texto, mas eu tenho esse controle noutro parte do script e dá mas então o que terei de colocar, apenas < 7 ? ps. esquece o str_pad 9 eu coloquei 9 a ver se mostrava alguma coisa Edited August 8, 2013 at 07:10 PM by N3lson You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
N3lson Posted August 8, 2013 at 07:26 PM Author Report #521269 Posted August 8, 2013 at 07:26 PM (edited) Se tirar a condição aparece-me o padding, mas queria com espaços e 1 float aparece-me assim com o . a fazer de padding ..120 € ...10 € mas pretendia : 120.0 € 10.0 € // Edit Consegui alinhar com espaços desta forma, falta-me o float $montante = str_replace(" ", " ", str_pad($montante, 5, ' ', STR_PAD_LEFT)); Edited August 8, 2013 at 07:45 PM by N3lson You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
HappyHippyHippo Posted August 9, 2013 at 12:09 AM Report #521295 Posted August 9, 2013 at 12:09 AM $montante = str_pad(number_format($montante, 2), 5, ' ', STR_PAD_LEFT); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
N3lson Posted August 9, 2013 at 05:47 AM Author Report #521306 Posted August 9, 2013 at 05:47 AM Já testei com o number_format mas obtenho o mesmo problema, desalinha, vou ter de forçar com html Obrigado You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
nelsonr Posted August 9, 2013 at 07:18 AM Report #521307 Posted August 9, 2013 at 07:18 AM Acho que aqui a questão não é do exemplo dado pelo HHH não estar a funcionar. A fonte é monospace? Pode ser que a largura do caracter do espaço seja pequena, então visualmente desalinha (apesar de estar lá o espaço). Isto funciona $montante = 120.42; $montante = str_pad(number_format($montante, 2), 10, ' ', STR_PAD_LEFT); echo("|".$montante."|"); // Resultado: | 120.42| 1 Report
taviroquai Posted August 9, 2013 at 12:24 PM Report #521345 Posted August 9, 2013 at 12:24 PM Formatar interface html? Nao consegues com css?
N3lson Posted August 9, 2013 at 07:12 PM Author Report #521380 Posted August 9, 2013 at 07:12 PM Formatar interface html? Nao consegues com css? Foi o que fiz ... You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now