Foros del Web » Programando para Internet » PHP »

Dentro y Fuera del IF (Alternativa?)

Estas en el tema de Dentro y Fuera del IF (Alternativa?) en el foro de PHP en Foros del Web. Hola amigos, Tengo esta situación, encadeno varios días de la semana y quiero que me muestre las actividades que hay dentro. El problema es que ...
  #1 (permalink)  
Antiguo 06/05/2009, 01:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Dentro y Fuera del IF (Alternativa?)

Hola amigos,

Tengo esta situación, encadeno varios días de la semana y quiero que me muestre las actividades que hay dentro.

El problema es que si hay 2 actividades el mismo día me muestra el día 2 veces (porque está dentro del if).

Si lo saco del if, me muestra siempre el día, incluso aunque no haya nada (cosa que no quiero). Qué puedo hacer?

Gracias!

Código PHP:
if ($fecha1 == 'Thursday')
{
echo 
"<td width=10% valign='top'>"."<center><font face=Arial size=2 color=#016599><b>"."JUEVES"."</center><br /><br />";
echo 
"<a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."</b></a><br />";
echo 
"<font face=Arial color=#000000 size=2>" FechaFormateada2($fecha) ."<br />";
echo 
"<font face=Arial color=#000000 size=2>"."Hora: "$horaComienzo .'-'$horaFin."<br /><br />"."</td>";
}
echo 
"<td width=14% valign='top'>"."<center><font face=Arial size=2 color=#016599><b>"."SABADO"."<br />";
if (
$fecha1 == 'Saturday')
{
echo 
"<a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."<br />";
echo 
"<font face=Arial color=#000000 size=2>" FechaFormateada2($fecha) ."<br />";
echo 
"<font face=Arial color=#000000 size=2>"."Hora: "$horaComienzo .'-'$horaFin."<br /><br />"."</td>";

  #2 (permalink)  
Antiguo 06/05/2009, 01:47
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: Dentro y Fuera del IF (Alternativa?)

prueba poniendo dentro del if un bucle para listar todos las actividades de ese dia.
me imagino que estas haciendo una query. pues dentro del if pon el while.
  #3 (permalink)  
Antiguo 06/05/2009, 02:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Eso es!

Gracias!!

Hola, acabo de comprobar y no me queda claro dónde poner el WHILE:

Me podrías indicar cómo hacer? Aquí está el SELECT

Código PHP:
$today date('Y-m-d',mktime(0,0,0,date('m'), date('d'), date('Y')));
$tomorrow date('Y-m-d',mktime(0,0,0,date('m'), date('d')+7date('Y')));
$result mysql_query("SELECT * FROM horarios WHERE fecha<'$tomorrow' AND fecha>='$today' ORDER BY fecha ASC");
echo 
"<table width='600' valign='top'>";

while(
$row mysql_fetch_array($result))
{
$fecha strtotime($row[fecha]);
$fecha1 date('l'strtotime('$fecha'));
$horaComienzo substr ($row[horaComienzo], 0,5);
$horaFin substr ($row[horaFin], 0,5);
if (
$fecha1 == 'Monday')
{
echo 
"<tr><td width=100><center><font face=Arial size=2 color=#016599><b>"."LUNES"."</td>";
echo 
"<td><a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."</b></a></td>";
echo 
"<td><font face=Arial color=#000000 size=2>" FechaFormateada2($fecha) ."</td>";
echo 
"<td><font face=Arial color=#000000 size=2>"."Hora: "$horaComienzo .'-'$horaFin."<br /><br />"."</td></tr>";


Última edición por GatorV; 06/05/2009 a las 14:34
  #4 (permalink)  
Antiguo 06/05/2009, 13:08
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Respuesta: Dentro y Fuera del IF (Alternativa?)

Hay un IF que no necesitas, si es que solamente te sirve para escribir el nombre del día. Puedes hacer un array antes del while:
Código PHP:
$nombre_dias = array('''LUNES''MARTES''MIERCOLES''JUEVES''VIERNES''SABADO''DOMINGO'); 
Y luego, en lugar de usar date() con el parámetro 'l' (ele minúscula), utilizas 'N', así te devuelve el número que tendrá correlación con tu array.

Ahora, para escribir el nombre del día sólo una vez, puedes guardar el último día que leiste y si el actual es igual, ya no lo imprimes.

la verdad, no lo he probado, pero lo que te digo es algo así
Código PHP:
$nombre_dias = array('''LUNES''MARTES''MIERCOLES''JUEVES''VIERNES''SABADO''DOMINGO');
$ultimo_fecha_leida '';

while(
$row mysql_fetch_array($result))
{
    
$fecha strtotime($row[fecha]);
    
$fecha1 date('N'strtotime('$fecha'));
    
$horaComienzo substr ($row[horaComienzo], 0,5);
    
$horaFin substr ($row[horaFin], 0,5);
    
    if(
$fecha != $ultima_fecha_leida)
    {
        echo 
"<tr><td width=100><center><font face=Arial size=2 color=#016599><b>".$nombre_dias[$fecha1]."</td>";
        
$ultima_fecha_leida $fecha;
    }
    echo 
"<td><a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."</b></a></td>";
    echo 
"<td><font face=Arial color=#000000 size=2>" FechaFormateada2($fecha) ."</td>";
    echo 
"<td><font face=Arial color=#000000 size=2>"."Hora: "$horaComienzo .'-'$horaFin."<br /><br />"."</td></tr>";

Saludos,
  #5 (permalink)  
Antiguo 06/05/2009, 15:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Dentro y Fuera del IF (Alternativa?)

Me funciona perfecto. Lo único que se me coloca el siguiente día debajo, en vez de a la derecha.

A ver si me lo puedes mirar.

Mil gracias!!

Código PHP:
echo "<table>";
while(
$row mysql_fetch_array($result))
{
    
$fecha strtotime($row[fecha]);
    
$fecha1 date('N'$fecha);
    
$horaComienzo substr ($row[horaComienzo], 0,5);
    
$horaFin substr ($row[horaFin], 0,5);
if(
$fecha1 != $ultima_fecha_leida)
    {
        
        echo 
"<tr><td width=100><center><font face=Arial size=2 color=#016599><b>".$nombre_dias[$fecha1]."</td></tr>";
        
$ultima_fecha_leida $fecha1;
    }
    echo 
"<tr><td><a href='actividad.php?actividad=".$row['actividad']."'><font face=Arial color=#02669A size=2><b>".$row['actividad']."</b></a><br />";
    echo 
"<font face=Arial color=#000000 size=2>" FechaFormateada2($fecha) ."<br />";
    echo 
"<font face=Arial color=#000000 size=2>"."Hora: "$horaComienzo .'-'$horaFin."<br /><br />"."</td></tr>";

echo 
"</table>"
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 21:24.