Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/03/2013, 07:40
andrescev
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Tabla con coordenadas PHP.

Muchas gracias, lo he probado pero nada, lo que has dicho que pongo todo dentro del mismo script... haber eso es parte de una funcion, te la pongo:

Código PHP:

function getCalendarMed($mes$año$tipo_profesional) {

    global 
$diaM;
    global 
$mesM;
    global 
$añoM;
    global 
$diaS;
    global 
$idents;
    global 
$consguardias;

    
$año_ substr($año22);
    
$cal "'%" $mes $año_ "_'";

    if (
$tipo_profesional == 'profesional1') {
        
$tipo_profesional '"01"';
        
$profs getMedicos();
    } elseif (
$tipo_profesional == 'profesional2') {
        
$tipo_profesional '"06"';
        
$profs getEnfermeras();
    }

    
$consulta_dias 'SELECT DISTINCT `identificador` FROM `guardia` where `identificador` LIKE ' $cal 'AND `anio` LIKE ' $año ' GROUP BY `identificador` ORDER BY `guardia`.`identificador` ASC';
    
$consulta_diasC mysql_query($consulta_dias);

    while (
$ident mysql_fetch_array($consulta_diasCMYSQL_BOTH)) {
        
$idents[] = $ident;
    }

    foreach (
$idents as $row) {

        
$diaM substr($row[0], 02);
        
$mesM substr($row[0], 32);
        
$añoM substr($row[0], 42);
        
$diaS substr($row[0], -1);

        if (
$diaS == 1) {
            
$diaS 'L';
        } elseif (
$diaS == 2) {
            
$diaS 'M';
        } elseif (
$diaS == 3) {
            
$diaS 'X';
        } elseif (
$diaS == 4) {
            
$diaS 'J';
        } elseif (
$diaS == 5) {
            
$diaS 'V';
        } elseif (
$diaS == 6) {
            
$diaS 'S';
        } elseif (
$diaS == 7) {
            
$diaS 'D';
        }
        
$Ndia[] = $diaS;
        
$Mdia[] = $diaM;
    }

    
$ndias count($idents) + 1;
    
$nprof count($profs) + 2;

    
$consulta_guardias 'SELECT DISTINCT `cod_prof`, `id_dia`, `incidencia` FROM `cl_dia` WHERE substring(`cias`, 7, 2) LIKE' $tipo_profesional 'AND `id_dia` LIKE ' $cal 'AND `centro` LIKE ' $_SESSION['centro'] . ' ORDER BY `cod_prof` ASC';
    
$consulta_guardiasC mysql_query($consulta_guardias);

    while (
$guardias mysql_fetch_row($consulta_guardiasCMYSQL_ASSOC)) {
        
$consguardias[] = $guardias;
    }


    
$infoProf = array();

    foreach (
$consguardias as $ar) {
        
        
$ard str_pad($ar['id_dia'], 7"0"STR_PAD_LEFT);
        
$ards substr($ard02);
        
        
$infoProf[$ar['cod_prof']][$ards] = $ar['incidencia'];
    }


    if (
$mes == 01) {
        
$mes 'Enero';
    } elseif (
$mes == 02) {
        
$mes 'Febrero';
    } elseif (
$mes == 03) {
        
$mes 'Marzo';
    } elseif (
$mes == 04) {
        
$mes 'Abril';
    } elseif (
$mes == 05) {
        
$diaS 'Mayo';
    } elseif (
$mes == 06) {
        
$mes 'Junio';
    } elseif (
$mes == 07) {
        
$mes 'Julio';
    } elseif (
$mes == 08) {
        
$mes 'Agosto';
    } elseif (
$mes == 09) {
        
$mes 'Septiembre';
    } elseif (
$mes == 10) {
        
$mes 'Octubre';
    } elseif (
$mes == 11) {
        
$mes 'Noviembre';
    } elseif (
$mes == 12) {
        
$mes 'Diciembre';
    }


// DIbujamos el calendario.
    
$idTable "calTable";
    
printf("<form name=datos action=recogida.php method=post>\n
        <table id=%s align=center border=1 cellspacing=3 cellpadding=3>\n
        <caption>%s</caption>\n"
$idTable$mes);
    for (
$i 01$i <= $nprof$i++) {
        
printf("<tr id=Col%s>"$i);

        for (
$j 01$j <= $ndias$j++) {
            
            
$idHref "href" . ($i 2) . ($j 1);
            
$idInput "inp" . ($i 2) . ($j 1);
            
            if (
$i == && $j == 1) { //Celda "profesionales"
                
print("<td>Profesionales</td>\n");
            }
            if (
$i == && $j >= 2) { //Nombre dias
                
printf("<td id='%s'>%s</td>\n"$Ndia[$j 2], $Ndia[$j 2]);
            }
            if (
$i == && $j == 1) { // Celda de control - Para que no descuadre la tabla.
                
print("<td></td>");
            }
            if (
$i == && $j >= 2) { //Numero dias
                
printf("<td>%s</td>\n"$Mdia[$j 2]);
            }
            if (
$i >= && $j == 1) { //Columna de profesionales
                
printf("<td id='Prof%s'>%s</td>\n"$profs[$i 3], $profs[$i 3]);
            }
            if (
$i >= && $j >= 2){
                if (
$i_.$j_== $infoProf[$profs[$i_]][$Mdia[$j_]]){
                    print(
$infoProf[$profs[$i_]][$Mdia[$j_]]);                    
                } else{
                    
printf("<td>\n<a id=%s href=# class='boton' onClick='darValorID(this.id)'>N</a>\n
              <input id=%s name=%s type=hidden value='N'>\n</td>\n"
$idHref$idInput$idInput);
                }
                
               
                
            }
        }

        print(
"</tr>");
    }
    print(
"</table>");
    print(
"</form>");
    
//getIDTable();


este es el array de infoProf:

Código:
Array ( [01] => Array ( [12] => 7 [17] => 7 [25] => 7 [29] => 7 ) [02] => Array ( [11] => 7 [31] => 7 [04] => 7 ) [03] => Array ( [10] => 7 [13] => 7 [19] => 7 [22] => 7 [27] => 7 [30] => 7 [03] => 7 ) [04] => Array ( [20] => 7 [02] => 7 [23] => 7 [29] => 7 [09] => 7 ) [05] => Array ( [10] => 7 [18] => 7 [31] => 7 [06] => 7 ) [08] => Array ( [16] => 7 [25] => 7 [07] => 7 ) [09] => Array ( [17] => 7 [21] => 7 [28] => 7 [05] => 7 ) [10] => Array ( [14] => 7 [18] => 7 [26] => 7 [30] => 7 ) [12] => Array ( [01] => 7 [18] => 7 [21] => 7 [08] => 7 ) [13] => Array ( [13] => 7 [16] => 7 [24] => 7 [08] => 7 ) [15] => Array ( [15] => 7 [20] => 7 [29] => 7 [09] => 7 ) [16] => Array ( [10] => 7 [15] => 7 [27] => 7 [04] => 7 ) [MA1] => Array ( [11] => 7 [17] => 7 [20] => 7 [02] => 7 [23] => 7 [25] => 7 [27] => 7 [04] => 7 [07] => 7 ) [MA2] => Array ( [12] => 7 [14] => 7 [22] => 7 [24] => 7 [26] => 7 [28] => 7 [03] => 7 [06] => 7 ) [MA3] => Array ( [12] => 7 [14] => 7 [16] => 7 [19] => 7 [02] => 7 [23] => 7 [28] => 7 [30] => 7 [05] => 7 [07] => 7 ) [MA4] => Array ( [01] => 7 [15] => 7 [19] => 7 [22] => 7 [26] => 7 [03] => 7 [05] => 7 [08] => 7 [09] => 7 ) [MA5] => Array ( [01] => 7 [11] => 7 [13] => 7 [21] => 7 [24] => 7 [31] => 7 [06] => 7 ) )
como te he dicho, la key de cada array dentro del macro array es el codigo del profesional y dentro de cada array se guarda el tipo de trabajo cuya key es el dia que se realizo.

Aqui el tema es cojer el ID de las celdas donde se imprime el codigo del profesional y comprar con la celda superior para meter la informacion oportuna, segun te entiendo tu lo comparas directamente con el array no ? si te digo la verdad esto es caotico, me han dado un BD ya montada con los datos pero sin relacion alguna entre ellas, (si, como lo lees) y me las tengo que apañar.

Observaras un monton de cosas raras como substring dentro y fuera de las consultas sql es que esta todo mezclado y aveces incompleto, por hay hay alguna funcion de completado para las fechas... es un caos.

Entonces lo que he hecho o intentado, es meterle un id a las celdas donde se escribe el codigo del profesional con el mismo codigo y en las celdas donde van las fechas igual y a partir de hay me gustaria poder comparar pero llevo todo el dia y no he conseguido nada...

Por ultimo te dejo un captura de como deberia quedar la tabla (es como la dibuja la funcion citada)

http://imageshack.us/photo/my-images/203/81633345.png

Última edición por andrescev; 25/03/2013 a las 07:45 Razón: colocar bien link de imagen