Comunidad de diseño web y desarrollo en internet online

paginador con buscador en php que no me va...

Citar            
MensajeEscrito el 11 May 2008 06:11 pm
Hola.
Estoy haciendo una base de datos de imagenes de un libro en la que se puedan buscar las imagenes por autor, capitulo y nombre de imagen ademas de salir la imagen buscada.

Tengo muchas preguntas pero la que mas me urge es saber como puedo unir el buscador con el paginador que tengo. los dos funcionan por separado...pero juntos no.

no tengo mucha idea de esto y me esta costando bastante.... por eso agradeceria la ayuda.

adjunto el codigo. (esta sin maquetar ni nada...)

Gracias.



Código :

<?php
$bd_servidor = \"localhost\";
$bd_usuario = \"xxxxx\";
$bd_contrasenya = \"xxxx\";
$bd_bdname = \"xxxx\";
$bd_tabla = \"seram\";

$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);

mysql_select_db($bd_bdname,$link);
?>
<form name=\"buscador\" method=\"post\" action=\"pruebapdf.php\"><br>
<span class=\"cuerponegrita\">Buscar por:</span><br />
<select name=\"campo\" class=\"cuerpo\">
<option value=\"autor\">Autor</option>
<option value=\"imagen\">Imagen</option>
<option value=\"capitulo\">Capitulo</option>
</select>
<br />
<br />
<span class=\"cuerponegrita\">Palabra(s):</span>
<input name=\"palabra\" type=\"text\" class=\"cuerpo\">
<br />
<br>
<input type=\"hidden\" name=\"enviar\" value=\"enviar\">
<input name=\"enviar\" type=\"submit\" class=\"menuactivado\" value=\"Enviar\">
</form>
<?
if(isset($buscarenviar)) {
$query = \"SELECT * FROM seram WHERE \".$buscarcampo.\" LIKE \'%\".$buscarpalabra.\"%\' ORDER BY capitulo LIMIT 10\";
$result = mysql_query($query) or die (mysql_error (\"Algo va mal\"));
$numregistros = mysql_num_rows ($result);

if($numregistros < 1) {

print \"No se han encontrado resultados\";

} else {

echo \"<p>\";
while ($row = mysql_fetch_array($result)) {
extract ($row);
echo \"<b>\".$autor.\"</b><br>\";
echo \"<b>\".$imagen.\"</b><br>\";
echo \"<b>\".$capitulo.\"</b><br>\";
echo \"<b>\".$imagen_ruta.\"</b><br>\";
}
echo \"</p>\";

}
}
                       
//paginador                  
$paginas = 10;           
$tabla = \"seram\";  
                        

$actual = (!isset ($pg))?1:$pg;
$sql = mysql_query (\"SELECT * FROM \".$tabla.\"\");
$total = mysql_num_rows ($sql);
if ($actual == 1) {
$desde = \"0\";
}
elseif ($actual != 1) {
$desde = $actual * $paginas - $paginas;
}
$tp = ($total / $paginas);
if (strstr($tp,\'.\')){
$tp = explode (\".\",$tp);
$tp = ($tp[0]+1);
}
$resp = mysql_query (\"SELECT * FROM \".$tabla.\" ORDER BY id LIMIT \".$desde.\",\".$paginas.\"\");
while ($row = mysql_fetch_array ($resp)) {
//Aqui parte la parte de modificación
echo \"Autor: \".$row[\"autor\"].\"<br>\";
echo \"Figura:\".$row[\"imagen\"].\"<br>\";
echo \"Capitulo:\".$row[\"capitulo\"].\"<br>\";
echo \"<img src=\'\".$row[\"imagen_ruta\"].\"\' width=\'90\'<br>\";
//Aqui termina xD
}
$pag = ($tp == 1) ? página : páginas;
$reg = ($total == 1) ? archivo : archivos;
?>
<br>Encontrados <b><?=$total?></b> <?=$reg?> en <b><?=$tp?></b> <?=$pag?><br>
<?php
$anterior = true;
$siguiente = true;
if (($actual == 1) AND ($actual == $tp)) {
$anterior = false;
$siguiente = false;
}
elseif ($actual == $tp) {
$anterior = true;
$siguiente = false;
}
elseif ($actual == 1) {
$anterior = false;
$siguiente = true;
}
if ($anterior) {
echo \"<a href=\\\"pruebapdf.php?pg=\".($actual-1).\"\\\">< Página anterior</a> | \";
}
else {
echo \"|\";
}
for ($i = 1; $i <= $tp;$i++) {
if ($i == $actual) {
echo \" <b>\".$i.\"</b> | \";
}
else {
echo \"<a href=\\\"pruebapdf.php?pg=\".$i.\"\\\"> \".$i.\"</a> |\";
}
}
if ($siguiente) {
echo \" <a href=\\\"pruebapdf.php?pg=\".($actual+1).\"\\\"> Página siguiente ></a>\";
}
?>

Por Triza

1 de clabLevel



Genero:Femenino  

Madrid, Spain

firefox
Citar            
MensajeEscrito el 11 May 2008 07:02 pm
Saludos Triza,

Cuando te refieres a "los dos funcionan por separado, pero juntos no", indicas que cuando tipeas una palabra en el buscador, ¿No busca? Y cuando quieres ver la segunda página, ¿No la encuentra?

Quisiese saber si cuando ejecutas el script, PHP te advierte de algún error.

Cuando envias el formulario de búsqueda, ¿Lo recibes por POST o GET?

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 11 May 2008 07:07 pm
a ver, primero, gracias por la respuesta. Se agradece.
El buscador funciona.
el paginador funciona
pero van independientes.
No me da ningun error.
Lo que quiero es que al buscar algo, me de los resultados con el paginador.
Ahora mismo esta el buscador por un lado y el paginador mostrando los resultados solos por otro.

Por Triza

1 de clabLevel



Genero:Femenino  

Madrid, Spain

firefox
Citar            
MensajeEscrito el 11 May 2008 07:11 pm
Por lo que veo, tu buscador está realizando peticiones mediante "POST" (campos de un formulario), estos datos se perderán cuando intentas paginar los resultados. ¿Solución? Enviar el dato del formulario, mediante "GET".

¿Tienes una demo de tu script en linea? Te podría dar un resultado más acertado si puedo verlo trabajando.

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 11 May 2008 08:04 pm
Ok, veo que el buscador no funciona de ninguna manera.

Esto puede ser por lo siguiente:

Código :

if(isset($buscarenviar)) {
$query = "SELECT * FROM seram WHERE ".$buscarcampo." LIKE '%".$buscarpalabra."%' ORDER BY capitulo LIMIT 10";
$result = mysql_query($query) or die (mysql_error ("Algo va mal"));
$numregistros = mysql_num_rows ($result);

if($numregistros < 1) {

print "No se han encontrado resultados";

} else {

echo "<p>";
while ($row = mysql_fetch_array($result)) {
extract ($row);
echo "<b>".$autor."</b><br>";
echo "<b>".$imagen."</b><br>";
echo "<b>".$capitulo."</b><br>";
echo "<b>".$imagen_ruta."</b><br>";
}
echo "</p>";

}
}


Cuando envias el formulario y PHP lo procesa con esa linea, falla ya que $buscarenviar no está definido. Entonces antes del if (isset($buscarenviar)), deberías definir la variable del formulario

En ese caso:

Código :

#recupero datos del formulario
$buscarenviar = $_POST['enviar'];$buscarcampo = $_POST['campo']; $buscarpalabra = $_POST['palabra'];

if(isset($buscarenviar)) {
$query = "SELECT * FROM seram WHERE ".$buscarcampo." LIKE '%".$buscarpalabra."%' ORDER BY capitulo LIMIT 10";
$result = mysql_query($query) or die (mysql_error ("Algo va mal"));
$numregistros = mysql_num_rows ($result);

if($numregistros < 1) {

print "No se han encontrado resultados";

} else {

echo "<p>";
while ($row = mysql_fetch_array($result)) {
extract ($row);
echo "<b>".$autor."</b><br>";
echo "<b>".$imagen."</b><br>";
echo "<b>".$capitulo."</b><br>";
echo "<b>".$imagen_ruta."</b><br>";
}
echo "</p>";

}
}


Ya me dirás!

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 11 May 2008 08:24 pm
Si funciona pero no te da los resultados paginados.

Por Triza

1 de clabLevel



Genero:Femenino  

Madrid, Spain

firefox
Citar            
MensajeEscrito el 11 May 2008 08:32 pm
Primero, fijate que en el formulario de búsqueda, tenés campos con el nombre (name) de una forma y luego en PHP los denominas de otra, lo cual estría mal ya que PHP no detecta esto.

Entonces, siendo este tu formulario (reviza bien los names de cada campo)

Código :

<form name=\"buscador\" method=\"post\" action=\"pruebapdf.php\"><br>
<span class=\"cuerponegrita\">Buscar por:</span><br />
<select name=\"campo\" class=\"cuerpo\">
<option value=\"autor\">Autor</option>
<option value=\"imagen\">Imagen</option>
<option value=\"capitulo\">Capitulo</option>
</select>
<br />
<br />
<span class=\"cuerponegrita\">Palabra(s):</span>
<input name=\"palabra\" type=\"text\" class=\"cuerpo\">
<br />
<br>
<input type=\"hidden\" name=\"enviar\" value=\"enviar\">
<input name=\"enviar\" type=\"submit\" class=\"menuactivado\" value=\"Enviar\">
</form>


Tu script en PHP, debería ser lo siguiente

Código :

#recupero datos del formulario
$buscarenviar = $_POST['enviar'];$buscarcampo = $_POST['campo']; $buscarpalabra = $_POST['palabra'];

if(isset($buscarenviar)) {

//-- resto del código...


Me dices que funciona, pero cuando escribo "juanito" me sige listando TODOS los resultados, sin filtrarme la búsqueda realizada.

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.