PHP - WHERE Y LIKE en una consulta php

   
Vista:

WHERE Y LIKE en una consulta php

Publicado por ismael (3 intervenciones) el 18/02/2013 21:19:46
Hola, en el codigo de abajo hago una consulta a la columna categorias de la tabla documentos y me arroja el siguiente error:


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\iniciativa\funcionesBd.php on line 111

He buscado informacion y he llegado a la conclusion de que hago mal la consulta. Otra vez las comillas o es mas grave que eso?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function baseEnlaceDocumentacion(){
 
echo '<div id="left-column">';
 
$con = mysql_connect("localhost","peter","12345");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 
mysql_select_db("iniciativa", $con);
 
$total_result = mysql_query('SELECT count(*) FROM documentos WHERE Categoria LIKE "facturas"');
$resultados = 5;
$paginacion = new Zebra_Pagination();
$paginacion -> records($total_result);
$paginacion -> records_per_page($resultados);
$result = mysql_query('SELECT * FROM documentos WHERE Categoria LIKE "facturas"  LIMIT '.(($paginacion -> get_page()-1) * $resultados).','.$resultados);
while($row = mysql_fetch_array($result))
  {
  echo "<table border=1>";
  echo "<tr>";
 
  echo "<td>".$row['Fecha']."</td>";
  echo "</tr>";
  echo "</table>";
  }
echo "<br>";
$paginacion -> render();
echo "</div>";
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

WHERE Y LIKE en una consulta php

Publicado por xve (5525 intervenciones) el 18/02/2013 22:20:45
Hola Ismael, yo lo haría así:
1
$total_result = mysql_query("SELECT count(*) FROM documentos WHERE Categoria LIKE '".facturas."'");


De la manera que hace la consulta, solo te devolverá los registros que en el campo Categoria sea igual a "facturas", no te devolver todos los registros que contengan la palabra "facturas".
Si deseas que te devuelve los que contenga, tendras que hacer algo así:
1
$total_result = mysql_query("SELECT count(*) FROM documentos WHERE Categoria LIKE '%".facturas."%'");



Sobre el error que te indica, creo que lo tienes aqui...
1
$paginacion -> records($total_result);

No estas asignando el numero de registros... para ello, creo que debería de ser así:
1
$paginacion -> records(mysql_num_rows($total_result));


Espero que te sirva...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

WHERE Y LIKE en una consulta php

Publicado por unexes (124 intervenciones) el 18/02/2013 23:33:17
Ismael, no tengo los conocimientos de xve pero por si te sirve te dire que yo utilizo el Zebra_Pagination en algunas de mis páginas y te voy a poner el código basico que utilizo para que veas las diferencias y detectes algún error ya que a mi me funciona de maravilla.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Número de registros que se debe mostrar en una página?
        $records_per_page = 5;
 
        // Incluye la clase de paginación
        require '../../Zebra_Pagination/Zebra_Pagination.php';
 
        // Instancia del objeto paginación
        $pagination = new Zebra_Pagination();
 
		// Registros por página
       $pagination->records_per_page($records_per_page);
 
?>

La consulta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM clientes WHERE (clientes.Actividades = " .$tipoEmpresa. " OR clientes.Actividades2 = " .$tipoEmpresa. ") and (NombreComer like '%" . $txt_criterio . "%' Or Filtro1 like '%" . $txt_criterio . "%')";
$myVariable = "";
        if (isset($_GET['selpoblacion'])and $_GET['selpoblacion'] >0) {
        $txt_selpoblacion = $_GET["selpoblacion"];
	    $sql .= "AND idpoblacion =  $txt_selpoblacion ";
}
$sql .= ' ORDER BY rand(' .$dias_dif.') ';//= ' ORDER BY NombreComer ASC '; // Salen desordenados pero siempre el mismo desorden si se pone "rand(Nombre_del_campo)"
$sql .= 'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' . $records_per_page . '';
//"LIMIT " . (($pagination->get_page()- 1) * $records_per_page) . ", " . $records_per_page . "";
 
 // Si la consulta no puede ser ejecutada
        if (!($result = @mysql_query($sql))) {
 
        // Parada de la ejecución y el mensaje de error de visualización
            die(mysql_error());
 
        }
 
 
        // Recuperar el número total de registros en la tabla
        $rows = mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));
 
        // Pasar el número total de registros a la clase de paginación
        $pagination->records($rows['rows']);
 
        // Registros por página
        $pagination->records_per_page($records_per_page);
 
$tabla = mysql_query($sql);
 
while ($registro = mysql_fetch_array($tabla)) {
		?>
        <tr>
          <td><a href="<?php echo $registro['Url']; ?>"><img border="0" src="<?php echo $registro['Imagenes']; ?>"></a></td>
        </tr>
 
		<?php
}
mysql_free_result($tabla);
?>

Mostrar los resultados:
1
2
3
4
5
6
<?php
         // Genera los enlaces de paginación
$pagination->render();
echo "Página seleccionada:  " . $pagination->get_page() . "   de   " . $pagination->_total_pages;
echo "Empresas encontradas: " . $rows['rows']
        ?>

Espero que te sirva y te ayude con tu problema.
Un saludo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

WHERE Y LIKE en una consulta php

Publicado por Ismael (5 intervenciones) el 20/02/2013 14:22:31
Gracias, por las respuestas. Aun asi pienso que estoy pasando algo por alto pooque no consigo quitarme el error de encima. Ya os comento si entre cabezazo y cabezazo doy con la solucion. Unexes, la funcion que utilizo con el paginador es copia de otra que funciona bien sin where y like. Pienso que el error esta en la forma en que monto los query cuando los incluyo, que de alguna forma no le pasa algun parametro al array. No se, he empezado hace poquito con el php.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

WHERE Y LIKE en una consulta php

Publicado por xve (5525 intervenciones) el 20/02/2013 15:57:28
Hola Ismael, si haces un echo de la consulta:
1
echo 'SELECT * FROM documentos WHERE Categoria LIKE "facturas"  LIMIT '.(($paginacion -> get_page()-1) * $resultados).','.$resultados;

que te devuelve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE Y LIKE en una consulta php

Publicado por ismael (5 intervenciones) el 20/02/2013 18:15:08
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\iniciativa\funcionesBd.php on line 107
SELECT * FROM documentos WHERE Categoria LIKE "facturas" LIMIT 0,5

eso de Limit 0.5? deberia ser un valor entero, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

WHERE Y LIKE en una consulta php

Publicado por xve (5525 intervenciones) el 20/02/2013 19:51:28
Ismael, le estas diciendo a mysql que te muestre 0 registros a partir del 5 registro.

Esto no puede ser... tendría que ser un valor superior a 0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE Y LIKE en una consulta php

Publicado por ismael (5 intervenciones) el 20/02/2013 21:15:45
No, le esta diciendo que muestre 5 resultados en la pagina con indice 0.
Lo he resuelto cambiando estas lineas:

$total_result = mysql_query('SELECT count(*) FROM documentos WHERE Categoria LIKE "facturas"');

por esta:

$total_result = mysql_query("SELECT count(*) FROM documentos");

y esta:

$result = mysql_query('SELECT * FROM documentos WHERE Categoria LIKE "facturas" LIMIT '.(($paginacion -> get_page()-1) * $resultados).','.$resultados);

por esta:

$result = mysql_query('SELECT * FROM documentos WHERE Categoria LIKE "facturas" LIMIT '.(($paginacion -> get_page()-1) * $resultados).','.$resultados);

Asi, me chuta, pero para ser sincero, no entiendo muy bien el mecanismo. Si se os ocuerre alguna explicacion, se agradece.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

WHERE Y LIKE en una consulta php

Publicado por xve (5525 intervenciones) el 21/02/2013 07:23:53
Hola Ismael, no se ver la diferencia en el limit... las veo las dos iguales...

Creo que no te va a funcionar correctamente... estas cogiendo el total de registros sin el like, pero estas mostrando los registros con el like... te variara el numero de registros.

Sobre el limit...
... limit 10 => muestra diez registros
... limit 10,100 => muestra diez registros a partir del registro 100

Eso que comentas de 5 resultados con indice 0¿? revisa la ayuda del mysql..
http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE Y LIKE en una consulta php

Publicado por ismael (5 intervenciones) el 21/02/2013 12:57:04
Ok, le echo un vistazo.
Respecto al paginador, lo saque de un tuto de youtube, y creo que el chaval lo explicaba como te cuento, o yo lo he entendido mal, que es lo mas probable. La explicacion viene en el min 8:02.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

WHERE Y LIKE en una consulta php

Publicado por xve (5525 intervenciones) el 21/02/2013 15:19:43
Hola Ismael, tienes toda la razón, y te lo dije mal...

Sobre el limit...
... limit 10 => muestra diez registros
... limit 100,10 => muestra diez registros a partir del registro 100

te pido mil disculpas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE Y LIKE en una consulta php

Publicado por ismael (5 intervenciones) el 21/02/2013 18:51:48
No, hombre, por favor, me habeis ayudado un monton. Mil gracias a ambos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar