Registros insertados en base de datos y consultas

Hola, quiero comprobar si la consulta no produce ningún resultado, para así realizar un if.
Esta es la consulta:
$sql=mysql_query("SELECT*FROM registro WHERE DATEDIFF('$hoy',fecha) <=1",$seleccion);
Con esa consulta muestro los registros insertados en la bd hace menos de un día. Y si no se han ingresado registros, que diga "no se han ingresado registros", este es el código:
<?php if (!empty($sql)) { while ($row=mysql_fetch_array($sql)) {?>
<table>
<tr>
<td width="74">Nombre:</td>
<td width="198"><?php echo $row['nombre'];?></td>
</tr>
<tr>
<td>Fecha:</td>
<td><?php echo $row['fecha'];?></td>
</tr>
<tr>
<td>Mail:</td>
<td><?php echo $row['mail'];?></td>
</tr>
<tr>
<td valign="top" bgcolor="#CCFFCC">Comentario:</td>
<td bgcolor="#CCFFCC"><?php echo $row['comentarios'];?></td>
</tr>
<tr>
<td colspan="2" valign="top">
<hr size="3">
</td>
</tr>
</table>
<?php }} else{echo 'no se han ingresado registros';}
?>
Pero no me resulta
Respuesta
1
El problema que veo es que estas aplicando el empty al query, no a los resultados
tienes que hacerlo al $row, aunque realmente no haría falta ya que si el resultado es nulo (ninguna fila recibida) ya no se entraría en el while
<? while ($row=mysql_fetch_array($sql)) { ?>
...lo que sea...
<? } else echo 'no hay resultados'; ?>
ya lo intente, pero de esa manera me aparece :  unexpected T_ELSE  otra manera es esta, pero no me aparecen todos los registros nuevos ingresados durante el dia, faltan por ejemplo, los que se ingresaron hace 23 horas atras.  Este es una parte del codigo: $sql=mysql_query("SELECT * FROM registro WHERE DATEDIFF('$hoy',fecha) <=1",$seleccion) or die( mysql_error() );
$num = mysql_num_rows( $sql );
if ($num > 0 ) {while ($row=mysql_fetch_array($sql)) {?>  obiamente despues viene el ELSE, ¿existe otra manera aparte del empty? lo que quiero hacer en realidad es que todos los dias, a las 9 de la mañana, se envie un correo mostrando los ultimos registros ingresados en una tabla. Obviamente ejecutaria el script con un cron.
Pero el else no es necesario
$correo_enviado=0; //contador de email enviados correctamente
while ($row)
{
    ······ 
    if( enviar_email()) $correo_enviado++;
    ······
}
//aqui mostramos la cantidad de correos enviados, si es 0 es que no ha enviado ninguno
echo 'se han enviado'.$correo_enviado.' correos';
O cualquier comprobación parecida, pero lo puedes hacer después del while. Si no hay resultados no entrará en while, así que si solo lo quieres para saber si hay resultados lo puedes hacer después

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas