Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Não consegui criar um título que fosse direto ao ponto! =/
Pois bem, vamos a explicação: estou fazendo um exemplo de exercícios de academia.
O aluno Y tem 3 exercícios no treino A dele.
Quando ele seleciona o treino A dele, aparece o primeiro exercícío. Para ele passar para o próximo treino, ele tem que apertar num botão >>>.
Já consigo saber o total de execícios daquele determinado treino.
Como faço para passar para o próximo treino, e ir até o fim? Estou agarrado nessa parte.
treinos
(id_treino, id_aluno, id_exercicio, nome_treino, repeticao, carga)
Humm entendi, já consegui caminhar! O problema agora, como faria para colocar esse "next" em um botão, e abrir na próxima página? Estou procurando uma soluçaõ e não consigo encontrar! =/
Se quiser um botão, crie um formulário. Ou podes adicionar um link.
No PHP pegue o retorno através da superglobal $_GET.
Então, já estou usando o $_GET para pegar o Treino. Estou lendo sobre paginação, esse pode ser o caminho?
Sim, exatamente.
A minha caso, eu acredito que seja um pouco mais complicado. Não estou conseguindo criar uma paginação, alguém poderia me dar uma luz?
Pagina info.php
<?
include 'init.php';
$sql = mysql_query("SELECT * FROM treinos WHERE id_aluno = 1 GROUP BY tipo_treino");
while ($Res = mysql_fetch_array($sql)){
echo '<div class="col-xs-12" style="padding-bottom:10px"><a href="treino.php?treino='.$Res['tipo_treino'].'" class="btn btn-success" style="width:90px; height:90px"><img src="img/halteres.png" id="img"><p>Treino '.$Res['tipo_treino'].'</p></a></div>';
echo '<br><br>';
}
?>
Ele vai pegar os treinos que tem cadastrados para determinado ID.
Página treinos.php
<?
include 'init.php';
$treino = $_GET['treino'];
$sql = mysql_query("SELECT COUNT(tipo_treino) AS total from treinos WHERE id_aluno = 1 AND tipo_treino = '$treino'");
while ($ex = mysql_fetch_assoc($sql)){
$total_treinos = $ex['total'];
}
$porc = (100 / $total_treinos);
?>
<div align="center" class="container" style="margin-top:-15px">
<p><b>Exercício 1/<? echo $total_treinos ?></b></p>
<div class="progress" style="border-radius:15px">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:<? echo $porc ?>%; border-radius:15px">
</div>
</div>
</div> <!-- CONTAINER -->
<?
$sql2 = mysql_query("SELECT * FROM treinos INNER JOIN exercicios ON treinos.id_exercicio = exercicios.id_exercicio WHERE treinos.tipo_treino = '$treino' AND treinos.id_aluno = 1 ORDER BY treinos.id_treino ASC");
while ($ex2 = mysql_fetch_assoc($sql2)){
$nome_exercicio[] = $ex2['nome_ex'];
$repeticao[] = $ex2['repeticao'];
$carga[] = $ex2['carga'];
$foto[] = $ex2['imagem'];
}
print_r($nome_exercicio);
?>
<hr style="margin-top:-5px">
<div align="center" class="container">
<span style="color:#0C3">Exercício:</span> <? echo $nome_exercicio[0] ?>
</div>
<hr>
<div align="center" class="container">
<table class="table text-center table-condensed" style="text-align:center;">
<thead>
<tr>
<th width="20%" class="text-center">Séries</th>
<th width="40%" class="text-center">Repetições</th>
<th width="40%" class="text-center">Carga (kg)</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><? echo $repeticao[0] ?></td>
<td><? echo $carga[0] ?></td>
</tr>
<tr>
<td>2</td>
<td><? echo $repeticao[0] ?></td>
<td><? echo $carga[0] ?></td>
</tr>
<tr>
<td>3</td>
<td><? echo $repeticao[0] ?></td>
<td><? echo $carga[0] ?></td>
</tr>
</tbody>
</table>
</div>
Para a próximo exercício, fiz o seguinte:
<a style="height:60px; width:100%" class="btn btn-success" href="?treino=<? echo $treino ?>">Próximo Exercício <span class="glyphicon glyphicon-arrow-right"></span></a>
Estou meio ou muito perdido?
Galera, consegui fazer! Dei uma acalmada, pensei melhor e consegui fazer! Funcionando perfeitamente!
Poste a sua solução que pode ajudar futuros desenvolvedores.
Sim, irei postar, mas achei um probleminha:
<?
for($i=1; $i <= $total_paginas; $i++)
{
echo '<a class="btn btn-success" href="treino.php?treino='.$treino.'&pag='.$i.'">Próximo Exercício</a>';
}
?>
Como eu faria para ser apenas um botão, PRÓXIMO EXERCICIO?
No caso, o tutorial que segui ele fez com números, e ai nesse exemplo acima, ele cria 3 botões. =/
Uma paginação deve receber o número da página em questão por $_GET.
$page = $_GET['page'];
Basta adicionar mais um ao elemento.
<a href="?page=<?= $page + 1; ?>" title="próximo exercício" >próximo exercício</a>
Claro que você deve validar se existe um próximo exercício para exibir o link/botão.
Página info.php
<?
include 'init.php';
$sql = mysql_query("SELECT * FROM treinos WHERE id_aluno = 1 GROUP BY tipo_treino");
while ($Res = mysql_fetch_array($sql)){
echo '<div class="col-xs-12" style="padding-bottom:10px"><a href="treino.php?treino='.$Res['tipo_treino'].'&pag=1" class="btn btn-success" style="width:90px; height:90px"><img src="img/halteres.png" id="img"><p>Treino '.$Res['tipo_treino'].'</p></a></div>';
echo '<br><br>';
}
?>
Página treino.php
<?
include 'init.php';
$treino = $_GET['treino'];
$pagina = $_GET['pag'];if(!$pagina)
{
$pagina = 1;
}
/* Operação matemática que resulta no registro inicial
a ser selecionado no banco de dados baseado na página atual */
$inicio = ($pagina * $limite) - $limite;
$sql3 = mysql_query("SELECT * FROM treinos INNER JOIN exercicios ON treinos.id_exercicio = exercicios.id_exercicio WHERE treinos.tipo_treino = '$treino' AND treinos.id_aluno = 1 ORDER BY treinos.id_treino ASC");
$total_registros = mysql_num_rows($sql3);
$total_paginas = Ceil($total_registros / $limite);
$porc = (100 * $pagina) / $total_registros;
?>
<div align="center" class="container" style="margin-top:-15px">
<p><b>Exercício <? echo $pagina ?>/<? echo $total_registros ?></b></p>
<div class="progress" style="border-radius:15px">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:<? echo $porc ?>%; border-radius:15px">
</div>
</div>
</div> <!-- CONTAINER -->
<?
$sql2 = mysql_query("SELECT * FROM treinos INNER JOIN exercicios ON treinos.id_exercicio = exercicios.id_exercicio WHERE treinos.tipo_treino = '$treino' AND treinos.id_aluno = 1 ORDER BY treinos.id_treino ASC LIMIT $inicio, $limite");
while ($ex2 = mysql_fetch_assoc($sql2)){
$nome_exercicio = $ex2['nome_ex'];
$repeticao = $ex2['repeticao'];
$carga = $ex2['carga'];
$foto = $ex2['imagem'];
}
//print_r($nome_exercicio);
?>
<hr style="margin-top:-5px">
<div align="center" class="container">
<span style="color:#0C3">Exercício:</span> <? echo $nome_exercicio ?>
</div>
<hr>
<div align="center" class="container">
<table class="table text-center table-condensed" style="text-align:center;">
<thead>
<tr>
<th width="20%" class="text-center">Séries</th>
<th width="40%" class="text-center">Repetições</th>
<th width="40%" class="text-center">Carga (kg)</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><? echo $repeticao ?></td>
<td><? echo $carga ?></td>
</tr>
<tr>
<td>2</td>
<td><? echo $repeticao ?></td>
<td><? echo $carga ?></td>
</tr>
<tr>
<td>3</td>
<td><? echo $repeticao ?></td>
<td><? echo $carga ?></td>
</tr>
</tbody>
</table>
</div>
<hr style="margin-top:-5px">
<div class="container" align="center" style="padding-bottom:100px">
<img src="<? echo $foto ?>" class="img-responsive" width="100" height="100"/>
</div>
</div>if ($pagina == $total_registros){
echo '<a class="btn btn-danger btn-block navbar-fixed-bottom" style="height:49px" href="info.php" title="Fim do Treino" >Fim do Treino</a>';
}else {
echo '<a class="btn btn-success btn-block navbar-fixed-bottom" style="height:49px" href="?treino='.$treino.'&pag='.($pagina +1).' " title="Próximo Exercício" >Próximo Exercício</a>';
}
?>
De maneira bem simplista. Você pode criar uma array e tratar através dele:
$exerciseList = [
'exercício 1',
'exercício 2',
'exercício 3',
'exercício 4'
];
E através das funções current e next, você pode avançar nos exercícios até o final.
O current retorna a posição atual:
Saída:
exercício 1
Já a função next avança o ponteiro para a próxima posição e, caso houver valores, retorna o valor, caso não houver, retorna false.
if (($next = next($exerciseList)) !== false)
{
else
{