Hola, tengo que utilizar el IF de mysql en una web que estoy haciendo, pero no sé como utilizarlo en este caso.
He programado antes con IF en java pero en mysql me cuesta entenderlo.
en mi web quiero mostrar las noticias de esta semana, pero empezando por el lunes, de modo que si estamos a miércoles las noticias sean del lunes pasado al domingo.
Así que tengo que decir "si hoy es miércoles muestra las noticias del 'día actual' menos 2 días, hasta 'día actual' más 4 días.
He mirado tutoriales y ejemplos pero no me aclaro. A ver si alguien me ayuda...
Este es mi intento de código en php que no funcionó por razones obvias... estaba utilizando una función mysql en un IF de php:
<?php $link = mysql_connect("mysql13.000webhost.com","a4047274_fiestas","urkaka12"); mysql_select_db("a4047274_fiestas", $link); //intento de usar IF de mysql --> $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 7 DAY), IF( DAYNAME(CURDATE()) == 'monday' ", $link); if(DAYNAME(CURDATE()) == 'monday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 7 DAY)", $link); } else if($dia_actual == 'tuesday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -1 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 6 DAY)", $link); } else if($dia_actual == 'wednesday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -2 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 5 DAY)", $link); } else if($dia_actual == 'thursday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -3 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 4 DAY)", $link); } else if($dia_actual == 'wensday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -4 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 3 DAY)", $link); } else if($dia_actual == 'saturday'){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -5 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 2 DAY)", $link); } else if($dia_actual == 'sunday'){$result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -6 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 1 DAY)", $link); } //$result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 7 DAY)", $link); while($row = mysql_fetch_array($result)){ echo "<hr>"; echo "Pueblo: ".$row['pueblo']."<br>"; echo "Fiesta: ".$row['fiesta']."<br>"; echo "Comentarios: ".$row['comentarios']."<br>"; } mysql_free_result($result); mysql_close($link); echo "<hr>"; ?>
Gracias.
Hola, he estado mirando lo que me has dicho y he modificado el código.
Pero al parecer estoy haciendo mal el "IF".
<?php $dia_actual = date("l"); $fecha_actual = date("Y-m-d"); echo "fecha actual: ".$fecha_actual; echo "día actual: ".$dia_actual; $fecha_1 = date("Y-m-d"); $fecha_2 = date("Y-m-d"); echo $fecha_1; echo $fecha_2; $link = mysql_connect("mysql13.000webhost.com","a4047274_noticias","******"); mysql_select_db("a4047274_noticias", $link); if(strcmp($dia_actual, "monday")== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -1 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 6 DAY)", $link); } else if(strcmp($dia_actual, 'tuesday')== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -1 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 6 DAY)", $link); } else if(strcmp($dia_actual, "Wednesday")== TRUE){ echo "Wednesday"." x"; $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -2 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 5 DAY)", $link); } else if(strcmp($dia_actual, 'thursday')== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -3 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 4 DAY)", $link); } else if(strcmp($dia_actual, 'friday')== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -4 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 3 DAY)", $link); } else if(strcmp($dia_actual, 'saturday')== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -5 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 2 DAY)", $link); } else if(strcmp($dia_actual, 'sunday')== TRUE){ $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN DATE_ADD(SYSDATE(), INTERVAL -6 DAY) SYSDATE() AND DATE_ADD(SYSDATE(), INTERVAL 1 DAY)", $link); } while($row = mysql_fetch_array($result)){ echo "<hr>"; echo "Pueblo: ".$row['pueblo']."<br>"; echo "Noticia: ".$row['noticia']."<br>"; echo "Comentarios: ".$row['comentarios']."<br>"; } mysql_free_result($result); mysql_close($link); echo "<hr>"; ?>
Además te hago un par de preguntas:
1- para comparar dos strings se utiliza el strcomp() verdad?
2- se pone ==TRUE después del strcomp?
3- si es así, ¿porqué cuando llega a $result = mysql_query(... me da error, y encima no llega a ejecutar lo que está dentro del IF?.
Gracias y disculpa las molestias. De verdad, gracias por haberme respondido.
Bueno, tenías razón, me estaba liando.
Al final este es el código:
<?php $dia_actual = date("l"); $fecha_actual = date("Y-m-d"); $link = mysql_connect("mysql13.000webhost.com","a4047274_noticias","******"); mysql_select_db("a4047274_noticias", $link); if(strcmp($dia_actual, "Monday")== 0){ $fecha_1 = $fecha_actual; $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+6 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Tuesday")== 0){ $fecha_1 = strtotime ('-1 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+5 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Wednesday")== 0){ $fecha_1 = strtotime ('-2 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+4 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Thursday")== 0){ $fecha_1 = strtotime ('-3 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+3 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Friday")== 0){ $fecha_1 = strtotime ('-4 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+2 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Saturday")== 0){ $fecha_1 = strtotime ('-5 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = strtotime ('+1 day', strtotime ($fecha_actual)); $fecha_2 = date ( 'Y-m-j' , $fecha_2); } else if(strcmp($dia_actual, "Sunday")== 0){ $fecha_1 = strtotime ('-6 day', strtotime ($fecha_actual)); $fecha_1 = date ( 'Y-m-j' , $fecha_1); $fecha_2 = $fecha_actual; $fecha_2 = date ( 'Y-m-j' , $fecha_2); } $result = mysql_query("SELECT * FROM valencia WHERE fecha_inicio BETWEEN '$fecha_1' AND '$fecha_2'", $link); while($row = mysql_fetch_array($result)){ echo "<hr>"; echo "Pueblo: ".$row['pueblo']."<br>"; echo "Noticia: ".$row['noticia']."<br>"; echo "Comentarios: ".$row['comentarios']."<br>"; } mysql_free_result($result); mysql_close($link); echo "<hr>"; ?>
Y funciona!!! Gracias por haberme ayudado. Creo que sin tu ayuda no lo hubiese conseguido.