Foros del Web » Programando para Internet » PHP »

Q estoy haciendo mal en esta consulta para contar registro

Estas en el tema de Q estoy haciendo mal en esta consulta para contar registro en el foro de PHP en Foros del Web. hola como estas necesito contar las horas asignadas de un docente y no se porq no me da, tengo 4 campos diferentes en una tabla ...
  #1 (permalink)  
Antiguo 08/01/2013, 07:55
ruben_chirinos_1985
Invitado
 
Mensajes: n/a
Puntos:
Q estoy haciendo mal en esta consulta para contar registro

hola como estas necesito contar las horas asignadas de un docente y no se porq no me da, tengo 4 campos diferentes en una tabla donde se registran las horas asignadas a un docente, y quisiera poder contar esas horas para poder validar el reggistro de horarios de clases a docentes, los registros o horas se guardan de esta manera en los 4 campos 01-02-03-04, y quisiera contar esos datos pero de los 4 campos, aqui les dejo los codigos q estoy tratando de hacer

Código PHP:
Ver original
  1. <?php
  2. include('cone.php');
  3. conectarse();
  4. //contar palabras normales
  5.  
  6. //Probar de esta forma
  7. $query = "select dish1, dish2, dish3, dish4 from horarios where cod_doc = '38'";
  8.  
  9. $comida = array(
  10.   'dish1' => '$dish1',
  11.   'dish2' => '$dish2',
  12.   'dish3' => '$dish3',
  13.   'dish4' => '$dish4'
  14.   );
  15.      
  16.   foreach($comida as $keys)
  17.   {
  18.     $separa=explode("-",$keys);
  19.     $numero=count(array_diff($separa, array('')));
  20.      echo "Hay ".$numero."";
  21.   }
  22.  
  23.  
  24.    
  25. ?>
  #2 (permalink)  
Antiguo 08/01/2013, 08:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Q estoy haciendo mal en esta consulta para contar registro

No se entiende mucho lo que pides, y el codigo que pones parece uno cualquiera que has encontrado.... que tiene que ver una variable llamada comida con lo que nos explicas....

Pero haciendo un esfuerzo de imaginación...

Primero

Entre la linea 7 y 9 te falta ejecutar la query y obtener un array con su resultado....

Cita:
01-02-03-04
Esto es el contenido de uno de los campos?

Si es el contenido de un campo luego

$separa=explode("-",$keys);

efectivamente te separa en un array

$separa Array(
[0]->"01"
[1]->"02"
[2]->"03"
[3]->"04"
)

Que hay que hacer con esos datos sumarlos entre si... sumar el primero de cada campo, y el segundo...

Pon un ejemplo completo de los datos de un registro y el resultado que esperas y asi quizas se te entendrá.....

Un comentario mas... esos campos no serán multi valuados... es que no se entiende nada la estructura de esa tabla horarios....huele a error garrafal de diseño.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/01/2013, 08:41
ruben_chirinos_1985
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Q estoy haciendo mal en esta consulta para contar registro

bueno aqui esta la tabla con algunos registros,

Código SQL:
Ver original
  1. CREATE TABLE `horarios` (
  2.   `grado` INT(11) NOT NULL,
  3.   `cod_mat` INT(3) NOT NULL,
  4.   `seccion` VARCHAR(5) COLLATE utf8_spanish_ci NOT NULL,
  5.   `cod_mencion` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL,
  6.   `cod_doc` INT(11) NOT NULL,
  7.   `dia1` INT(11) NOT NULL,
  8.   `dish1` VARCHAR(15) COLLATE utf8_spanish_ci NOT NULL,
  9.   `aula1` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL,
  10.   `dia2` INT(11) NOT NULL,
  11.   `dish2` VARCHAR(15) COLLATE utf8_spanish_ci NOT NULL,
  12.   `aula2` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL,
  13.   `dia3` INT(11) NOT NULL,
  14.   `dish3` VARCHAR(15) COLLATE utf8_spanish_ci NOT NULL,
  15.   `aula3` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL,
  16.   `dia4` INT(11) NOT NULL,
  17.   `dish4` VARCHAR(15) COLLATE utf8_spanish_ci NOT NULL,
  18.   `aula4` VARCHAR(10) COLLATE utf8_spanish_ci NOT NULL
  19. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
  20.  
  21. INSERT INTO `horarios` (`grado`, `cod_mat`, `seccion`, `cod_mencion`, `cod_doc`, `dia1`, `dish1`, `aula1`, `dia2`, `dish2`, `aula2`, `dia3`, `dish3`, `aula3`, `dia4`, `dish4`, `aula4`) VALUES (8,16,'A','',2,1,'01-02-03-04','',0,'---','',0,'---','',0,'---',''),(8,16,'B','',2,1,'05-06-07-08','',0,'---','',0,'---','',0,'---',''),(8,21,'A','',2,2,'01-02-03-04','2',4,'01-02-03-04','3',0,'---','',0,'---',''),(8,21,'B','',2,3,'01-02-03-04','3',5,'12-13-14-15','3',0,'---','',0,'---',''),(9,28,'C','',38,1,'01-02-03-04','5',0,'---','',0,'---','',0,'---',''),(9,25,'C','',42,2,'01-02-03-04','6',0,'---','',0,'---','',0,'---',''),(9,34,'C','',29,1,'05-06-07-08','3',3,'10-11-12-13','3',0,'---','',0,'---',''),(9,33,'C','',18,3,'01-02-03-04','4',5,'01-02-03-04','4',0,'---','',0,'---',''),(9,31,'C','',40,4,'01-02-03-04','7',0,'---','',0,'---','',0,'---','');

lo q quisiera es poder contar las horas q tiene el docente registrada en horarios ya sean en los campos dish1,dish2,dish3 y dish4
  #4 (permalink)  
Antiguo 09/01/2013, 02:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Q estoy haciendo mal en esta consulta para contar registro

Lo siento pero sigo sin entederte del todo

(8,16,'A','',2,1,'01-02-03-04','',0,'---','',0,'---','',0,'---',''),
(8,16,'B','',2,1,'05-06-07-08','',0,'---','',0,'---','',0,'---',''),
(8,21,'A','',2,2,'01-02-03-04','2',4,'01-02-03-04','3',0,'---','',0,'---',''),
(8,21,'B','',2,3,'01-02-03-04','3',5,'12-13-14-15','3',0,'---','',0,'---',''),
cod_doc=2 el señor 2 tendria 24 horas?

(9,28,'C','',38,1,'01-02-03-04','5',0,'---','',0,'---','',0,'---',''),
cod_doc=38 el señor 38 tendria 4 horas?


(9,25,'C','',42,2,'01-02-03-04','6',0,'---','',0,'---','',0,'---',''),
cod_doc=42 el señor 42 tendria 4 horas?

(9,34,'C','',29,1,'05-06-07-08','3',3,'10-11-12-13','3',0,'---','',0,'---',''),
cod_doc=29 el señor 29 tendria 8 horas?

(9,33,'C','',18,3,'01-02-03-04','4',5,'01-02-03-04','4',0,'---','',0,'---',''),
cod_doc=18 el señor 18 tendria 8 horas?


(9,31,'C','',40,4,'01-02-03-04','7',0,'---','',0,'---','',0,'---','')
cod_doc=40 el señor 40 tendria 4 horas?

Ese es el resultado que esperas?

Si es ese el resultado

Código PHP:
Ver original
  1. $result = mysql_query("select dish1, dish2, dish3, dish4 from horarios where cod_doc = 2");
  2.  
  3. /*
  4. '01-02-03-04','---','---','---'
  5. '05-06-07-08','---','---','---'
  6. '01-02-03-04','01-02-03-04','---','---'
  7. '01-02-03-04','12-13-14-15','---','---'
  8. */
  9. $horas="";
  10. while ($row = mysql_fetch_assoc($result)) {
  11.     if($horas!="") $horas.="-";
  12.     $horas.=$row['dish1']."-".$row['dish2']."-".$row['dish3']."-".$row['dish4'];
  13. }
  14.  
  15. /*Ahora tenemos algo así
  16.  
  17. 01-02-03-04------------05-06-07-08------------01-02-03-04-01-02-03-04---------01-02-03-04-12-13-14-15--------
  18.  
  19. en la variable horas
  20. */
  21.  
  22. $arHoras=explode("-",$horas);
  23.  
  24. $numHoras=0;
  25.  
  26. for($h=0;count($arHoras);$h++){
  27.      if(!is_null($arHoras[$h]) && $arHoras[$h]!=""){
  28.           $numHoras++;
  29.      }
  30. }
  31.  
  32. echo "Hay ".$numHoras."";
  33.  
  34. /* 24 */


No se como actualizas todo esto pero eso son campos multi valuados que directamente estan prohibidos en un sistema relacional.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: haciendo, registro, tabla
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 12:14.