Foros del Web » Programando para Internet » PHP »

Busqueda vacía y mensaje

Estas en el tema de Busqueda vacía y mensaje en el foro de PHP en Foros del Web. Hola Quiero que cuando se realice una consulta a una base de datos (mysql) mediante php, si la consulta no nos da ningún resultado que ...
  #1 (permalink)  
Antiguo 12/06/2003, 21:50
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 14 años, 10 meses
Puntos: 0
Busqueda vacía y mensaje

Hola Quiero que cuando se realice una consulta a una base de datos (mysql) mediante php, si la consulta no nos da ningún resultado que muestre un mensaje del estilo de "No se han encontrado ningún resultado" ¿es posible?
Si hay algún ejemplo en las faqs o por ahí os agradecería que me lo dijérais.

Gracias
  #2 (permalink)  
Antiguo 12/06/2003, 22:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si es posíble ..

tan sólo debes contar el número de registros que te ha arrojado tu mysql_query() y si es mayor de 0 .. muestras tus datos .. si es = 0 .. pues no hay resultados ..

Código PHP:
// conectas a tu BD .. seleccionas la BD .. etc ..
$consulta=mysql_query($sql) or die (mysql_error());
if (
mysql_num_rows($consulta) > 0){  // el secreto .. xDD ...
   
while ($registro=mysql_fetch_assoc($consulta)){
     
// bla bla .. presentas tus datos de tu consulta ...
   
}

} else {
   echo 
"no hay resultados ...";

Más optimizado sería hacer una consulta SQL típo:

Código PHP:
$sql_total="SELECT COUNT(*) as total FROM tabla (condiciones si las necesitas ...)";

$consulta_total=mysql_query($sql_total) or die (mysql_error());
if (
mysql_result($consulta,"total",0) > 0){
  
$consulta_datos=mysql_query($sql);
   while (
$registro=mysql_fetch_assoc($consulta_datos){
         
// obtienes tus registros/campos de tu consulta habitual ...     
   
}
} else {
   echo 
"no hay resultados ";

donde $sql es tu consulta que actualmente uses ...

La primera opción usa una sóla consulta (mysql_query() ..) si hay pocos registros que arroje esa consulta y mas o menos siempre va a arrojar + de 1 registro como resultado .. puede ser que sea mas optima la primera opción ..

La segunda opción usa dos consultas .. pero la primera (para ver el total de registros de la consulta) sólo usa un único registro y la "cuenta" la hace Mysql y nó PHP (con lo cual es más rápido) .. Luego hay que hacer la consulta en sí para obtener los registros .. pero para ese momento ya se va hacer una consulta que arroje +1 registro (osease, se va a la segura ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/06/2003, 22:23
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 11 meses
Puntos: 1
Puedes recuperar la cantidad de filas devueltas por la consulta mediante mysql_num_rows(), lo demas te lo puedes imaginar.

Un saludo.
  #4 (permalink)  
Antiguo 13/06/2003, 11:37
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 14 años, 10 meses
Puntos: 0
Muchas gracias a los dos. Cluster como siempre en su línea.. a este hombre hay que hacerle un monumento aunque sea virtual (y no lo digo de broma)
  #5 (permalink)  
Antiguo 13/06/2003, 14:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,
Cita:
Más optimizado sería hacer una consulta SQL típo:

....

La segunda opción usa dos consultas .. pero la primera (para ver el total de registros de la consulta) sólo usa un único registro y la "cuenta" la hace Mysql y nó PHP (con lo cual es más rápido) .. Luego hay que hacer la consulta en sí para obtener los registros .. pero para ese momento ya se va hacer una consulta que arroje +1 registro (osease, se va a la segura ..)
Bueno, seria cuestion de mirar el codigo de la libreria MySQL de PHP para confirmar las cosas, pero yo creo que con mysql_num_rows() no es PHP el que realiza la cuenta, si no que simplemente lee un datos que MySQL le ha facilitado al realizar la consulta. Lo mismo me equivoco, pero me parece lo mas logico. Por cierto, no se si habra alguna diferencia de rendimiento entre count(*) y count(un campo).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:11.