PHP - Problemas con calendario y conexion con BD.

 
Vista:

Problemas con calendario y conexion con BD.

Publicado por coi (4 intervenciones) el 28/08/2008 21:33:28
Hola.
Espero que alguien me pueda ayudar ya que no soy tan experto en php.
Mi problema es el siguiente, tengo un calendario en php y cuando busco la conexión con la BD para que me marque los días que están ocupados simplemente el elseif no me lo marca en cambio si lo pongo manual si los marca, como puedo realizar esto para que el elseif sea tanto como numero de registros tenga en mi BD. Ya he intentado separar toda la fecha por día, mes y año pero también tengo en mi BD en el campo fecha, la fecha con mktime, por favor AYUDA
el codigo es el siguiente:
esto es para que lo muestre en mi pagina.

Código PHP:

require_once("coiCalendar.class.php");
$myCelandar = new coiCalendar();
$mk2=$month;
$mk=$year;
$myCelandar->showCalendar($mk,$mk2);

y este es el php del calendario coiCalendar.class.php


include ("fecha.php");
class coiCalendar{
function showCalendar($year=0,$month=0){
if ($month == "01"){
$monthnow = "Enero";
}
if ($month == "02"){
$monthnow = "Febrero";
}
if ($month == "03"){
$monthnow = "Marzo";
}
if ($month == "04"){
$monthnow = "Abril";
}
if ($month == "05"){
$monthnow = "Mayo";
}
if ($month == "06"){
$monthnow = "Junio";
}
if ($month == "07"){
$monthnow = "Julio";
}
if ($month == "08"){
$monthnow = "Agosto";
}
if ($month == "09"){
$monthnow = "Septiembre";
}
if ($month == "10"){
$monthnow = "Octubre";
}
if ($month == "11"){
$monthnow = "Noviembre";
}
if ($month == "12"){
$monthnow = "Diciembre";
}
// Get today, reference day, first day and last day info
if (($year == 0) || ($month == 0)){
$referenceDay = getdate();
} else {
$referenceDay = getdate(mktime(0,0,0,$month,1,$year));
}
$firstDay = getdate(mktime(0,0,0,$referenceDay['mon'],1,$referenceDay['year']));
$lastDay = getdate(mktime(0,0,0,$referenceDay['mon']+1,0,$referenceDay['year']));
$today = getdate();


// Create a table with the necessary header informations
echo '<table class="month">';
echo ' <tr ><th colspan="7">'.$monthnow." - ".$referenceDay['year']."</th></tr>";
echo ' <tr class="days" class="menu4"><td>Lu</td><td>Ma</td><td>Mi</td><td>Ju</td><td>Vi</td><td>Sa</td><td>Do</td></tr>';


// Display the first calendar row with correct positioning
echo '<tr>';
if ($firstDay['wday'] == 0) $firstDay['wday'] = 7;
for($i=1;$i<$firstDay['wday'];$i++){
echo '<td> </td>';
}
$actday = 0;

for($i=$firstDay['wday'];$i<=7;$i++){
$actday++;

include("conexion.php"); //conexion BD
$resultados=mysql_query("SELECT * FROM agenda where id='$_REQUEST[id]' ORDER BY fecha " , $link);
while ($rowx = mysql_fetch_array($resultados)){
$dia=$rowx["dia_ini"];
$com=$rowx["mes_ini"];
$comq=$rowx["ano_ini"];
$mesano="$com/$comq";
$ok="$month/$year";
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
}
//no me muestra nada y si modifoco por ejemlo $dia por 2 y $mesano por 08/2008 me marca el dia y si pongo otro elseif tambien con la fecha manual tambien me lo marca pero con la BD NO
elseif (($actday == $dia) && ($mesano== $ok)) {
$class = ' class="actday1"';
} else {
$class = '';
}
} //del while


echo "<td$class><a href='miagendav.php?id=".$_SESSION[idusuario]."&dia=$actday&mes=$month&año=$year' class='menu4'>$actday</a></td>";
}
echo '</tr>';

//Get how many complete weeks are in the actual month
$fullWeeks = floor(($lastDay['mday']-$actday)/7);

for ($i=0;$i<$fullWeeks;$i++){
echo '<tr>';
for ($j=0;$j<7;$j++){
$actday++;
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
} else {
$class = '';
}
echo "<td$class><a href='miagendav.php?id=".$_SESSION[idusuario]."&dia=$actday&mes=$month&año=$year' class='menu4'>$actday</a></td>";
}
echo '</tr>';
}

//Now display the rest of the month
if ($actday < $lastDay['mday']){
echo '<tr>';

for ($i=0; $i<7;$i++){
$actday++;
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
} else {
$class = '';
}

if ($actday <= $lastDay['mday']){
echo "<td$class><a href='miagendav.php?id=".$_SESSION[idusuario]."&dia=$actday&mes=$month&año=$year' class='menu4'>$actday</a></td>";
}
else {
echo '<td> </td>';
}
}


echo '</tr>';
}

echo '</table>';
}

}
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

RE:Problemas con calendario y conexion con BD.

Publicado por Pineapple (183 intervenciones) el 29/08/2008 01:35:08
Que haces manual? cual else if? A que te refieres con que intentaste separar? no entiendo la vdd lo que quieres hacer, separa el codigo y di donde te marca el error o danos una explicacion mas detallada recuerda que nosotros no vemos lo que estas ejecutando
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

RE:Problemas con calendario y conexion con BD.

Publicado por coi (1 intervención) el 29/08/2008 16:39:15
Hola, antes que nada gracias por responder.
voy a intentar comentarte mejor mi duda y posiblemente el if y el eseif no son mi solución, puedes ver lo que se ejecuta con las dos partes que puse la primera es lo que pongo en la pagina para que me muestre el calendario y la segunda parte es el código del calendario. pero bueno voy a intentar explicarme mejor.
Si ejecuto el código como esta solo me marca el día que es hoy, ya que no me esta respetando el elseif que es quien tendría que hacer la función con la BD y si pongo solo el if la conexión con la BD me marca toda la línea después del ultimo dato de la BD por ejemplo mi calendario es algo así:

Agosto 2008
Lu Ma Mi Ju Vi Sa Do
1 2 3 //esta es la línea que tengo conexión de BD
4 5 6 7 8 9 10 //en todas las líneas tendría que tener conexión,
11 12 13 14 15 16 17 pero no las he puesto ya que estas tendrían que
18 19 20 21 22 23 24 ser igual a la primera
25 26 27 28 <29>30 31 // ahora solo me marca el día que es hoy
<color>

//si ago la funcion solo con el if queda así <color>

Agosto 2008
Lu Ma Mi Ju Vi Sa Do
1 <2> <3> //BD con if y si mi ultimo numero de esa línea es el
4 5 6 7 8 9 10 2 de agosto del 2008 en la BD me marca así
11 12 13 14 15 16 17 <color> continua sin quitar el color
18 19 20 21 22 23 24
25 26 27 28 <29>30 31

// y ahora me explico como me gustaría que quedara, pero solo lo logro con el esleif de forma manual

explico el codigo y despues pongo el ejemplo:
// el if me marca el dia que es hoy $class = es el color da <td>

if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
}
//es aquí donde no se si este haciendo las cosas bien o posiblemente tenga que ser otro planteamiento. Esto es de forma manual sin conexión con BD y si me da bien el resultado que quiero. por ejemplo solo marco el 1 de Agosto del 2008 y el 3 de Agosto del 2008.

elseif (($actday == 1) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}
elseif (($actday == 3) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}else {
$class = '';
}

//esto me da como resultado:

Agosto 2008
Lu Ma Mi Ju Vi Sa Do
<1> 2 <3> //<color>
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

Espero que con esto me explique mejor gracias.
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

RE:Problemas con calendario y conexion con BD.

Publicado por Diego Romero (1450 intervenciones) el 29/08/2008 09:46:32
Haz un echo de $mesano y $ok antes del if en cuestión. Me parece que no tienen el mismo formato y por tanto en el elseif, el and siempre defuelve falso.
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

RE:Problemas con calendario y conexion con BD.

Publicado por coi (4 intervenciones) el 29/08/2008 16:43:41
si tienen el mismo formato incluso en la respuesta anterior puse mas explicado, gracias por tu respuesta., ojala me puedas ayudar.
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

RE:Problemas con calendario y conexion con BD.

Publicado por Pineapple (183 intervenciones) el 29/08/2008 19:06:45
Si imprimes esto con un echo:

if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';

Si te esta dando los valores que tu quieres? y el formato?
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

RE:Problemas con calendario y conexion con BD.

Publicado por coi (4 intervenciones) el 29/08/2008 23:03:51
Primero que nada Gracias por responder y si imprime bien, es lo que me da el dia que es hoy, "actday" es parte de una hoja de estilo que es esta:

.month{
width:180px;
float:left;
border:1px solid #ccc;
margin:0px;
border-collapse:collapse;
}

.actday{
background-image: url(images/hbg.gif);
background-repeat: repeat-x;
color:#fff;
font-weight:bold;
}
.actday1{
background-image: url(images/hbg1.gif);
background-repeat: repeat-x;
color:#fff;
font-weight:bold;
}
.days{
background-color:#f1f1f1;
}

quisa si la pones dentro de la pagina que te muestra el calendario, podras ver como se ve. pero lo que no me esta haciendo es lo que esta en el esleif.

Gracias
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

RE:Problemas con calendario y conexion con BD.

Publicado por Pineapple (183 intervenciones) el 30/08/2008 01:04:08
Aqui

elseif (($actday == 1) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}
elseif (($actday == 3) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}else {
$class = '';
}

ponlo asi

elseif (($actday == 1) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}
elseif (($actday == 3) && ("08/2008"== $ok)) {
$class = ' class="actday1"';
}elseif {
$class = '';
}

Haber si te funciona saludos!!
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

RE:Problemas con calendario y conexion con BD.

Publicado por coi (4 intervenciones) el 30/08/2008 15:43:20
no funciona me manda error:

Parse error: syntax error, unexpected '{', expecting '(' in /home/grupobor/public_html/admin/coiCalendar.class.php on line 86

gracias
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