← Desenvolvimento

[PHP] - Dúvida - efectuar operação matemática

Lida 1970 vezes

Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Estou a trabalhar num script em php para o meu site, está tudo a funcionar bem, só que não sei como fazer uma divisão essencial...
Aqui vai o código para perceberem do que estou a falar:

<?

//IceBurn (c) 2006

$conf["items_per_page"] = 10;
header("Content-type: text/vnd.wap.wml; charset=ISO-8859-1");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""." \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
if (!isset($page)) {$page = 0;}
$total = 0;
if(!($dp = opendir("./"))) die ("Cannot open ./");
$file_array = array();
while ($file = readdir ($dp))
{
if(substr($file,0,1) != '.' and $file != "index.php")
{
$file_array[] = $file;
}
}
$file_count = count ($file_array);
sort ($file_array);
?>
<wml>
<card id="card1" title="xxxxxxx &#xa9; AMR">
<p align="center">
<small><b>xxxxxxx</b><br/>
-AMR RingTones-<br/></small></p>
<p align="left" mode="nowrap"><br/><small>
<?
if ($file_count > 0)
{
$first_record = $page * $conf["items_per_page"];
$last_record = $first_record + $conf["items_per_page"];
while (list($fileIndexValue, $file_name) = each ($file_array))
{
if (($fileIndexValue >= $first_record) AND ($fileIndexValue < $last_record))
{
echo "<a href=\"$file_name\"><img src=\"/imgs/amr.gif\" alt=\"·\"/>$file_name</a> (". round(filesize($file_name)/1024,1) . "kb)<br/>";
$total = $total + filesize($file_name);
}
}
echo "<br/></small></p><p align=\"left\"><small>";
if (($file_count > 0) AND ($page != 0))
{
// previous button
$prev_page = $page -1;
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=$prev_page\">[« Prev.]</a><b>|</b>";
}

if (($file_count > 0) AND ($last_record < $file_count))
{
// next button
$next_page = $page + 1;
echo "<b>|</b><a href=\"".$_SERVER["PHP_SELF"]."?page=$next_page\">[Next »]</a><br/>";
}
print "Page $page of
????????[/color]</small><br/>";

if($file_count>$conf["items_per_page"])print "<small>Jump to Page:</small><input emptyok=\"true\" name=\"q\" format=\"*N\" size=\"2\" value=\"\"/><small><a href=\"".$_SERVER["PHP_SELF"]."?page=$(q)\">[Go]</a></small><br/>";

echo "<small><a href=\"http://xxxxxxxxxxx\">[^ Downloads]</a>";
echo "<br/><b>Now $file_count ";
if ($file_count == 1)
{echo "AMR File!";}
else
{echo "AMR Files!";}

echo "</b><br/><a href=\"http://xxxxxxxxxxx\">[:HOME:]</a><br/>";
echo "</small></p><p align=\"center\">";

}
closedir($dp);

echo "<br/>";

?>
<small><b>&#xa9;<a href="http://xxxxxxxxxx">IceBurn</a></b></small>  
</p>
</card>
</wml>
[/color]

Como podemm reparar eu trabalho com páginas WML (WAP) com PHP integrado.

Portanto, este código põe-me todos os ficheiros que tenho no mesmo directório nesta página, sendo que a mesma depois me vai apenas mostrar apenas os ficheiros que eu quiser de cada vez, neste caso tenho a variável programada para 10.
Isto depois vai criar as famosas
index.php?page=1
index.php?page=2
index.php?page=3

...etc.
Agora o que eu pretendia ere uma parte de código que vai dar a informação  ao utilizador que existem um certo número de páginas.
É o que pretendo para por onde coloquei os "????????"

Ficaria por exemplo "Page 1 of 20".

O resultado seria o $file_count a dividir por $conf["items_per_page"] mas que não me desse valores tipo 12,3 tem que ser um número certo mesmo que eu tenha 53 ficheiros. Seria fácil se tivesse 60, pois isso daria 6 páginas neste caso, não sei se me faço entender....

Alguem que me saiba dizer como fazer isto?

Desde já muito obrigado.
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

se a variavel do nº de páginas for $npages, porque não usas um
Código: [Seleccione]
$npages=number_format($npages,0);
que te transforma o número decimal num inteiro?
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Citação de: "morpheus"
se a variavel do nº de páginas for $npages, porque não usas um
Código: [Seleccione]
$npages=number_format($npages,0);
que te transforma o número decimal num inteiro?



:roll:
....será que dava p exemplificares isso no código?
Thanks!
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Bem, agora já consigo obter o número total de páginas, fiz as seguintes alterações (a vermelho):

<?

// IceBurn (c) 2006

$conf["items_per_page"] = 10;
header("Content-type: text/vnd.wap.wml; charset=ISO-8859-1");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""." \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
if (!isset($page)) {$page = 0;}
$total = 0;

if(!($dp = opendir("./"))) die ("Cannot open ./");
$file_array = array();
while ($file = readdir ($dp))
{
if(substr($file,0,1) != '.' and $file != "index.php")
{
$file_array[] = $file;
}
}
$file_count = count ($file_array);
sort ($file_array);
$total_pages =($file_count / $conf["items_per_page"]);
$total_pages = number_format($total_pages,0);

?>
<wml>
<card id="card1" title="XXXXXXXXXXX">
<p align="center">
...


Até aqui tudo bem, só que agora surge outro problema...

O index.php conta como a página zero, ora o que eu queria é que o index.php contasse como página 1 e ao clickar em NEXT aparecesse página 2 e por aí fora.

Um exemplo:
Quando o utilizador entra na página surge a  informação "Page 0 of 9", ao clikar NEXT vai aparecer "Page 1 of 9", e assim sussesivamente até que vai chegar a altura em que a informação obtida é "Page 8 of 9", só que a página 9 não existe, pois a contagem começou no Zero.
Obviamente isto vai confundir o utilizador. :(

Alguem me sabe dizer como resolver isto?

PS: Criar uma variavel que me adicione um valor ao número da página que é mostrada ao utilizador não adianta, pois tenho uma função no código WML que implica que número da página tenha de ser o mesmo que aparece no URL.

Obrigado.