jcalebe 0 Denunciar post Postado Novembro 17, 2010 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
João Batista Neto 448 Denunciar post Postado Novembro 18, 2010 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
jcalebe 0 Denunciar post Postado Novembro 18, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 18, 2010 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
jcalebe 0 Denunciar post Postado Novembro 18, 2010 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