Ir para conteúdo

POWERED BY:

Arquivado

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

jcalebe

[Resolvido] Falha em loop while

Recommended Posts

Olá caros colegas de fórum.

Estou com um problema em um loop que escreve os dados da query do mysql em uma tabela:

<?php
echo "<tbody>\n";
$i = min($total, ($inicio + 1));

//Loop abaixo
while ($resultado = mysql_fetch_assoc($query)) {
$cap = $resultado['capitulo'];
$vers = $resultado['verso'];
$texto = $resultado['texto'];
$livro = $resultado['id_livro'];

//Atributo para css
if (!($i & 1)) {
$class = ' class="odd" ';
}else{
$class = '';
}

echo '<tr'.$class.">\n";
echo "<th scope=\"row\" id=\"r101\">$i</th>\n";
echo '<th scope="row" id="r101"><span title="'.$namesa[$livro].' '.$cap.':'.$vers.'">'.$names[$livro].' '.$cap.':'.$vers."</span></th>\n";
echo '<td>'.high($texto,$q)."</td>\n";
echo "</tr>\n";
$i++;
}
echo "</tbody>";
?>

Só que ao fazer a busca na tabela no banco de dados, o loop não escreve o primeiro resultado.

Para o MySQL estou usando:

<?php
// Monta consulta no MySQL
$sql = "SELECT * FROM `versiculos` WHERE (`texto` LIKE '%".$busca."%') ORDER BY `id_livro` ASC LIMIT ".$inicio.", ".$PorPagina;
// Para paginação
// Executa a consulta
$query = mysql_query($sql);
?>
Será que estou errando na paginação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça a seguinte modificação no seu código e poste a saída:

 

$sql = "SELECT * FROM `versiculos` WHERE (`texto` LIKE '%".$busca."%') ORDER BY `id_livro` ASC LIMIT ".$inicio.", ".$PorPagina;
var_dump( $sql );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Obrigado pela atenção. Ficou assim (fiz algumas alterações pra trabalhar melhor):

<?php
$sqlx = "SELECT `capitulo` FROM `versiculos` WHERE `id_livro` = $livro GROUP BY `capitulo` HAVING COUNT( `capitulo` ) >1";
var_dump($sqlx);

Aí, após usar a função, a resposta foi:

string(106) "SELECT `capitulo` FROM `versiculos` WHERE `id_livro` = 1 GROUP BY `capitulo` HAVING COUNT( `capitulo` ) >1"

Compartilhar este post


Link para o post
Compartilhar em outros sites

não ajudou muito..

 

qual é o valor de $inicio ?

você usa algum mysql_fetch_ antes do loop ?

 

poste o teu código atual real, completo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, William Bruno! Resolveu meu problema!

 

Tinha chamado uma variável antes do loop:

$rssx = mysql_fetch_assoc($query);

O código é um pouco extenso, por isso não postei aqui, mas se vocês quiserem dar uma olhada:

 

<?php
if ((isset($_GET['livro'])) && (isset($_GET['cap']))){
$livro = $_GET['livro'];
$capi = $_GET['cap'];
if ($capi != '' && (is_numeric($capi))){
$cap = $capi;
}else{
$cap = 1;
}

$sqlx = "SELECT `capitulo` FROM `versiculos` WHERE `id_livro` = $livro GROUP BY `capitulo` HAVING COUNT( `capitulo` ) >1";
$queryx = mysql_query($sqlx);
$num = mysql_num_rows($queryx);
$proxli = $_GET['livro'] + 1;
if ($num != $cap || $proxli != 67){
$cap25 = $_GET['cap'] + 1;
$avanc = '<a style="color:blue;" href="?type='.$_GET['type'].'&mode='.$_GET['mode'].'&livro='.$_GET['livro'].'∩='.$cap25.'">[Próximo Capítulo »]</a><br>';
}elseif ($num > $cap && $proxli != 67){
$avanc =  '<a style="color:blue;" href="?type='.$_GET['type'].'&mode='.$_GET['mode'].'&livro='.$proxli.'∩=1">[Próximo Livro »]</a><br>';
}else{
$avanc = '';
}
$proxl = $_GET['livro'] - 1;
if ($cap == 1 && $proxl != 0){
$antliv = $_GET['livro'] - 1;
$volta =  '<a style="color:blue;" href="?type='.$_GET['type'].'&mode='.$_GET['mode'].'&livro='.$antliv.'∩=1">[« Livro Anterior]</a> ';
}elseif($cap != 1 || $proxl != 0){
$cap26 = $_GET['cap'] - 1;
$volta = '<a style="color:blue;" href="?type='.$_GET['type'].'&mode='.$_GET['mode'].'&livro='.$_GET['livro'].'∩='.$cap26.'">[« Capítulo Anterior]</a> ';
}else{
$volta = '';
}

echo '<div style="float:right;">';
echo '<FORM action="index.php" method="get" name="form" id="form">';
echo '<input type="hidden" id="type" name="type" value="leitura">';
echo '<input type="hidden" id="mode" name="mode" value="req">';
echo '<input type="hidden" id="livro" name="livro" value="'.$_GET['livro'].'">';
echo '<LABEL for="cap">Ir para capítulo</LABEL>';
echo '<select name="cap" id="cap" onchange="document.form.submit()">';
echo '<option value="">Selecione</option>';
for ($ad = 1; $ad <= $num; $ad++){
if ($ad == $cap + 1){
$sel = 'selected';}
else{
$sel = '';
}
 echo '<option value="'.$ad.'" '.$sel.'>'.$ad.'</option>';
}
echo '</select></fom></div>';

echo $volta."<span style=\"font-weight:bold\">Você está lendo $namesa[$livro] $cap </span>\n".$avanc;
echo "<table>\n";
$sql = "SELECT * FROM `versiculos` WHERE `id_livro` = $livro AND `capitulo` = $cap ORDER BY `capitulo` ASC";
$query = mysql_query($sql)/* or die('<br><br>'.mysql_error()) - DEBUG */;
while ($resultado = mysql_fetch_assoc($query)) {
$cap = $resultado['capitulo'];
$verss = $resultado['versiculo'];
$texto = $resultado['texto'];
$livro = $resultado['id_livro'];

echo '<tr title="'.$namesa[$livro].' '.$cap.':'.$verss."\">\n";
echo '<td width="30px">'.$cap.':'.$verss."</td>\n";
echo '<td>'.$texto."</td>\n";
echo "</tr>\n";
}
echo "</table><br>\n";
echo $volta."<span style=\"font-weight:bold\">Você está lendo $namesa[$livro] $cap </span>\n".$avanc;
}else{
echo '<br>Falha:<ul><li>Há campos obrigatórios não preenchidos;</li><li>Dados incorretos foram digitados.</li></ul>';
echo '<br><a href="?type=busca" style="color:blue;">« Voltar</a>';
}
?>

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.