PageRenderTime 40ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/fb/Cuestionario.php

https://bitbucket.org/sergiohzlz/reportaprod
PHP | 475 lines | 325 code | 72 blank | 78 comment | 37 complexity | bcc79d769c88cff759ad84244eb48c11 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, AGPL-1.0, LGPL-2.1
  1. <?php include('header.php') ?>
  2. <div class="columna_central">
  3. <div id="recuadro">
  4. <h3> CUESTIONARIO </h3>
  5. <?php
  6. /*
  7. Antes que nada, los numeros de los cuestionarios <-----------------------------
  8. */
  9. $cuestinic = 5; // Inicial
  10. $cuestpost = 2; // Rutrinario
  11. $cuestdoct = 3; // Tras volver del Doc
  12. $cuestcucho = 4;
  13. /*
  14. Luego la conexión a la DB
  15. */
  16. require_once('fb_init.php');
  17. require_once('../config.php');
  18. $conexion = mysql_connect($BD_URL,$BD_USR,$BD_PWD);
  19. mysql_set_charset('utf8',$conexion);
  20. mysql_select_db($BD, $conexion);
  21. $Pemail = mysql_real_escape_string($datos_usuario[0]['proxied_email']);
  22. $Qusuario = mysql_query("SELECT * FROM usuario WHERE EMail='".$Pemail."'");
  23. $usuario = mysql_fetch_array($Qusuario);
  24. /*
  25. -- Ahora las F U N C I O N E S A U X I L I A R E S ---------------
  26. */
  27. /*
  28. Determina si el usuario ha esperado lo suficiente para volver a participar.
  29. */
  30. function haesperado($elusuario)
  31. {
  32. $muynuevos = mysql_query("SELECT (HOUR( TIMEDIFF('".date("Y-m-d H:i:s")."', UltimaRespuesta))) AS ur FROM usuario WHERE IDUsuario=".$elusuario);
  33. while($dife = mysql_fetch_array($muynuevos))
  34. {
  35. if (($dife['ur']!=NULL)&&($dife['ur']<96))
  36. {
  37. return false;
  38. }
  39. return true;
  40. }
  41. }
  42. /*
  43. Determina si esta pregunta es una de esas que te ponen un botón de salida.
  44. */
  45. function mostrarlelasalida($pregunta)
  46. {
  47. if ($pregunta==17)
  48. {
  49. return "</table><hr><br><b> Si no tuviste ninguno de esos síntomas, puedes salir del cuestionario dando clic <INPUT class=\"enviar\" type=\"submit\" value=\"Aquí\" name=\"Sano\"><br><br><table></b><br>";
  50. }
  51. if ($pregunta==21)
  52. {
  53. return "</table><hr><br><b>Si no recibiste atención médica, puedes salir del cuestionario dando clic <INPUT class=\"enviar\" type=\"submit\" value=\"Aquí\" name=\"NOFUE\"><br><br><table></b>";
  54. }
  55. return "";
  56. }
  57. /*
  58. Si esta pregunta tiene una introducción, esta función hace que aparezca
  59. */
  60. function introapreg($pregunta)
  61. {
  62. return "";
  63. }
  64. /*
  65. En esta función se determina si se le debe dar a una persona una recomendación para que vaya al médico
  66. */
  67. function aldoctor($posteado)
  68. {
  69. if ((!mysql_real_escape_string($posteado['RR260']))&&(!mysql_real_escape_string($posteado['RR268'])))
  70. return false;
  71. if ((mysql_real_escape_string($posteado['19'])!=179)&&(mysql_real_escape_string($posteado['19'])!=180)&&(mysql_real_escape_string($posteado['19'])!=181))
  72. {
  73. return false;
  74. }
  75. return true;
  76. }
  77. /*
  78. Esta función muestra un cuestionario
  79. */
  80. function muestracuest($numcuestionario)
  81. {
  82. $salida="";
  83. $preguntas = mysql_query("SELECT * FROM relCuestPreg where IDCuestionario = ".$numcuestionario." ORDER BY Orden");
  84. while($rowP = mysql_fetch_array($preguntas)) // POR CADA PREGUNTA
  85. {
  86. $salida=$salida."\n". "<tr>\n";
  87. $contpregunta = mysql_query("SELECT * FROM pregunta where IDPregunta = ".$rowP['IDPregunta']);
  88. $rowC = mysql_fetch_array($contpregunta);
  89. $salida=$salida."\n". "<TD>\n";
  90. $salida=$salida."\n".introapreg($rowC['IDPregunta']);
  91. $salida=$salida."\n"."<b>".$rowC['Titulo'] . "</b> <br> " . $rowC['Descripcion'];
  92. $salida=$salida."\n"."\n<TD>\n";
  93. $respuestas = mysql_query("SELECT * FROM respuesta where IDPregunta = ".$rowC['IDPregunta']);
  94. if ($rowC['Varias']==0) // <-- Si la pregunta solo tiene una opcion
  95. {
  96. $salida=$salida."\n"."<select name=\"".$rowC['IDPregunta']."\">\n";
  97. $salida=$salida."\n"."<option value=\"0\"> Elige una opción </option>";
  98. while($rowA = mysql_fetch_array($respuestas)) // POR CADA RESPUESTA
  99. {
  100. $salida=$salida."\n"."<option value=\"".$rowA['IDRespuesta']."\">".$rowA['Valor']."</option>\n";
  101. }
  102. echo "</select>";
  103. }
  104. else // <-- Si puede tener varias
  105. {
  106. while($rowA = mysql_fetch_array($respuestas)) // POR CADA RESPUESTA
  107. {
  108. $salida=$salida."\n"."<input type=checkbox name=\"RR".$rowA['IDRespuesta']."\"> ".$rowA['Valor']." <br>";
  109. }
  110. }
  111. $salida=$salida."\n".mostrarlelasalida($rowC['IDPregunta']); //Hay algunas preguntas que te ofrecen salirte, veamos si esta es una.
  112. $salida=$salida."\n"."</select>\n</tr><tr><td><hr><td><hr></tr> ";
  113. }
  114. return $salida;
  115. }
  116. /*
  117. -- Ahora lo principal ---------------
  118. */
  119. /*
  120. Las entradas hay que limpiarlas contra SQL injection
  121. */
  122. $Pestado = mysql_real_escape_string($_POST['Festado']);
  123. $Pmunicipio = mysql_real_escape_string($_POST['Fmunicipio']);
  124. $Pcp = mysql_real_escape_string($_POST['CCCP']);
  125. $Pcp2 = mysql_real_escape_string($_POST['CCCP2']);
  126. $Ppaso = mysql_real_escape_string($_POST['Fpaso']); // <- Indica si el usuario acaba de llenar un cuestionario
  127. $Pquest = mysql_real_escape_string($_POST['Fquest']); // <- Indica cual es el cuestionario que el usuario acaba de llenar
  128. $Pcalle = mysql_real_escape_string($_POST['Fcalle']);
  129. $Pentre1 = mysql_real_escape_string($_POST['Fentre1']);
  130. $Pentre2 = mysql_real_escape_string($_POST['Fentre2']);
  131. $Pfechaapasar = mysql_real_escape_string($_POST['Ffechaapasar']);
  132. // Tiene que haber uno y solo uno con este correo y contraseña
  133. if (mysql_num_rows($Qusuario)!=1) // <- Si es un usuario inválido
  134. {
  135. echo "<center><FONT color=FF0000> Correo electrónico o contraseña incorrectos, intentalo de nuevo</FONT></center><br>";
  136. }
  137. else
  138. { //Si es un usuario válido
  139. if($Ppaso=="ALLENNNNNAR")
  140. {
  141. if($Pquest==$cuestinic) // <- Acaba de llenar el cuestionario inicial, hay que guardar su municipio.
  142. {
  143. if ($Pcp==NULL)
  144. {
  145. $Pcp = "MALO";
  146. }
  147. $actualizar = mysql_query("UPDATE usuario SET Municipio=\"".$Pmunicipio."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  148. $actualizar = mysql_query("UPDATE usuario SET CP=\"".$Pcp."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  149. $actualizar = mysql_query("UPDATE usuario SET CP2=\"".$Pcp2."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  150. $actualizar = mysql_query("UPDATE usuario SET ENTRE1=\"".$Pentre1."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  151. $actualizar = mysql_query("UPDATE usuario SET ENTRE2=\"".$Pentre2."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  152. $actualizar = mysql_query("UPDATE usuario SET CALLE=\"".$Pcalle."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  153. /*
  154. Aquí analizamos sus respuestas y escogemos, en función de ello un cuestionario a desplegarle.
  155. Para ello cambiamos el valor de la variable $cuestpost
  156. */
  157. if ((mysql_real_escape_string($_POST['37'])!=305)&&(mysql_real_escape_string($_POST['37'])!=0))
  158. {
  159. // Tuvo algo esta semana... hay que mandarle al cucho con la fecha reciente
  160. $cambiaronelcuest = 1;
  161. $fechaaponer = $_POST['37'];
  162. }
  163. if ((mysql_real_escape_string($_POST['38'])!=314)&&(mysql_real_escape_string($_POST['38'])!=0))
  164. {
  165. // Tuvo algo en los últimos dos mese.. hay que mandarle el cucho con la fecha remota
  166. $cambiaronelcuest = 1; // <-- Con esto hacemos que ponga el campo fecha artificialmente
  167. $fechaaponer = $_POST['38'];
  168. if ((mysql_real_escape_string($_POST['37'])!=305)&&(mysql_real_escape_string($_POST['37'])!=0))
  169. {
  170. $fechaaponer = $_POST['37'];
  171. $fechaapasar = $_POST['38'];
  172. // El probe tipo tuvo ADEMAS, algo esta semana
  173. }
  174. }
  175. } // FIN de Acaba de llenar el cuestionario inicial
  176. // Lo que sigue lo hacemos no importa que cuestionario acabe de llenar
  177. // Debemos verificar que haya pasado el tiempo suficiente.
  178. if (haesperado($usuario['IDUsuario']))
  179. {
  180. /*
  181. Primero guardamos en la tabla encuesta la info de que acaban de llenar
  182. El IDCuestionario, IDUsuario y la fecha actual
  183. */
  184. $insertar = mysql_query("INSERT into encuesta (IDUsuario,Fecha,IDCuestionario) VALUES (".$usuario['IDUsuario'].",\"".date("Y-m-d H-i-s")."\",".$Pquest.")");
  185. /*
  186. Obtenemos el valor de IDEncuesta para encuesta que acabamos de llenar
  187. */
  188. $IDdeEstaEncuesta = mysql_insert_id();
  189. if ((($Pquest==$cuestpost)&&($Pfechaapasar == NULL))||($Pquest==$cuestdoct))
  190. {
  191. /*
  192. Y guardamos la fecha en que acaba de llenar este cuestionario, para que no lo llene muy seguido. Pero solo si no acaba de llenar el inicial
  193. */
  194. $actualizar = mysql_query("UPDATE usuario SET UltimaRespuesta=\"".date("Y-m-d H-i-s")."\" WHERE IDUsuario=".$usuario['IDUsuario']);
  195. }
  196. if ($Pquest==$cuestdoct)
  197. {
  198. // Acaba de mandarnos a guardar el cuestionario de doctor, hay que quitarle la marca.
  199. echo "<br>Gracias por colaborar y tener una actitud responsable al ir al doctor<br>";
  200. $actualizar = mysql_query("UPDATE usuario SET AlDoctor=0 WHERE IDUsuario=".$usuario['IDUsuario']);
  201. }
  202. /*
  203. Ahora buscamos todas las preguntas del cuestionario que acaba de llenar
  204. Tomamos el ID de cada una y examinamos el arreglo $_POST en ese índice para ver la respuesta que escogio.
  205. A cada respuesta, hacemos una entrada (numencuesta,idrespuesta) en la tabla valoresencuestas
  206. */
  207. // ------
  208. // INICIA PROPIAMENTE EL L L E N A D O D E E N C U E S T A
  209. // ___________________________________________________-----
  210. $preguntas = mysql_query("SELECT * FROM relCuestPreg where IDCuestionario = ".$Pquest);
  211. while($rowP = mysql_fetch_array($preguntas)) // POR CADA PREGUNTA
  212. {
  213. $contpregunta = mysql_query("SELECT * FROM pregunta where IDPregunta = ".$rowP['IDPregunta']);
  214. $rowC = mysql_fetch_array($contpregunta);
  215. if ($rowC['Varias']==0) // <-- Si la pregunta solo tiene una opcion
  216. {
  217. $respuesta=mysql_real_escape_string($_POST[$rowP['IDPregunta']]);
  218. $insertar = mysql_query("INSERT into valoresEncuesta (IDEncuesta,IDRespuesta) VALUES(".$IDdeEstaEncuesta.",".$respuesta.")");
  219. }
  220. else
  221. {
  222. $respuestasmultiples = mysql_query("SELECT * FROM respuesta where IDPregunta = ".$rowP['IDPregunta']);
  223. while ($rowA = mysql_fetch_array($respuestasmultiples)) // Por cada una de las posibles respuestas
  224. {
  225. $respuesta=mysql_real_escape_string($_POST['RR'.$rowA['IDRespuesta']]);
  226. if ($respuesta)
  227. {
  228. $insertar = mysql_query("INSERT into valoresEncuesta (IDEncuesta,IDRespuesta) VALUES(".$IDdeEstaEncuesta.",".$rowA['IDRespuesta'].")");
  229. }
  230. }
  231. }
  232. }
  233. // TERMINA EL L L E N A D O D E E N C U E S T A
  234. // Hay que actualizar los datos del usuario en el script por si ahora si tiene municipio
  235. $Qusuario = mysql_query("SELECT * FROM usuario WHERE EMail='".$Pemail."'");
  236. $usuario = mysql_fetch_array($Qusuario);
  237. } // No ha esperado lo sufciente para volver a participar, cómo llego aqui???
  238. else
  239. {
  240. //Esta tratando de enviar una encuesta muy pronto
  241. }
  242. } // FIN de hay que llenar
  243. // Ya escribimos a la base de datos todo lo que teniamos que escribir... ahora hay que mostrarle los cuestionarios pertinentes
  244. if ($usuario['Municipio']==NULL) // <= El usuario acaba de registrarse, en este caso este script no ha escrito nada a la DB.
  245. {
  246. /*
  247. Hay que pedirle su municipio
  248. Y mostarle el cuestionario inicial
  249. */
  250. echo "Por ser la primera vez, por favor responde estas preguntas para que tu participación sea más valiosa<BR>";
  251. echo "Este cuestionario sólo tendrás que llenarlo una vez.<BR><BR>";
  252. $mpos = mysql_query("SELECT * FROM municipios WHERE Estado= ".$usuario['Estado']." ORDER BY Municipio");
  253. ?>
  254. <Form method="post" action="Cuestionario.php">
  255. <INPUT type="hidden" name="Femail" value="<?php echo $Pemail; ?>">
  256. <INPUT type="hidden" name="Fquest" value="<?php echo $cuestinic; ?>">
  257. <INPUT type="hidden" name="Fpaso" value="ALLENNNNNAR">
  258. <hr>
  259. <table width="100%">
  260. <tr><td><b> ¿En qué municipio o delegación vives? </b>
  261. <td><select name="Fmunicipio">
  262. <?php // ---- Este select muestra todos los municipios del estado que nos pasaron
  263. while($mipio = mysql_fetch_array($mpos))
  264. {
  265. echo "<option value=\"".$mipio['Municipio']."\">".$mipio['Municipio']."</option>\n";
  266. }
  267. ?> </select>
  268. </tr><tr><td><hr><td><hr></tr>
  269. <tr><td><b>¿Cuál es el código postal de tu casa?</b> <td> <input type="text" name="CCCP"> </tr>
  270. </tr><tr><td><hr><td><hr></tr>
  271. <tr><td><b>¿En qué calle está tu casa?</b><br><u>Estrictamente opcional</u> ¡Esto nos ayuda a ubicar los datos en el mapa con más precisión!
  272. <td> <input type="text" name="Fcalle"> </tr>
  273. </tr><tr><td><hr><td><hr></tr>
  274. <tr><td><b>Entre la calle: <br>Y la calle</b><br><u>Estrictamente opcional</u>
  275. <td> <input type="text" name="Fentre1"> <br> <input type="text" name="Fentre2"> <br><br></tr>
  276. </tr><tr><td><hr><td><hr></tr>
  277. <tr><td><b>¿Cuál es el código postal de tu trabajo o escuela?</b> <td> <input type="text" name="CCCP2"> </tr>
  278. </tr><tr><td><hr><td><hr></tr><tr>
  279. <?php
  280. echo muestracuest($cuestinic);
  281. ?>
  282. <tr></tr>
  283. <tr>
  284. <td>
  285. <td><INPUT class="enviar" type="submit" value="Continuar al cuestionario rutinario" name="terminoquestI">
  286. </tr>
  287. </table>
  288. </form>
  289. <?php
  290. } // FIN DE MUNICIPIO == NULL ES DECIR, FIN DE ES UN USUARIO NUEVO, MOSTRARLE EL INICIAL
  291. else
  292. { //El usuario ya lleno el cuestionario inicial
  293. if ( (($Pquest==$cuestpost)&&($Pfechaapasar == "")) || (($Pquest==$cuestinic)&&($fechaaponer==NULL)))
  294. // Además acaba de llenar el cuestionario posterior y no tendrá que llenar el siguiente. O acaba de llenar el inicial y no tuvo problema alguno.
  295. {
  296. /*
  297. No queda más que agradecerle;
  298. */
  299. if (aldoctor($_POST)) // Si hay que mandarlo al doctor
  300. {
  301. echo "La definición operacional de la Secretaría de Salud de caso sospechoso de influenza es: Fiebre y alguna de las siguientes: odinofagia (dolor al tragar) o tos.";
  302. echo "<br><br>Si cumples con estos síntomas, debes ir al doctor para una evaluación más profunda.<br>";
  303. $actualizar = mysql_query("UPDATE usuario SET AlDoctor=1 WHERE IDUsuario=".$usuario['IDUsuario']);
  304. }
  305. echo "<BR>Gracias por llenar el cuestionario. Por favor regresa en una semana para seguir ayudando a monitorear, recuerda que sólo lleva un minuto. <br><br>La proxima vez solo tendrás que introducir información si tuviste síntomas en la última semana.<b>".$Pfechaapasar."</b>";
  306. echo "<br> ¡Y pasa la voz!";
  307. }
  308. else // No acaba de llenar el posterior, o tiene que llenarlo de nuez porque se enfermo dos veces así que debe llenarlo ahora
  309. {
  310. if ($usuario['AlDoctor']==1) // Le habiamos dicho que fuera al doctor
  311. {
  312. /*
  313. Aquí hay que poner la parte de las preguntas
  314. de cuando regresa del doctor
  315. */
  316. ?>
  317. La última vez que participaste, mostrabas un conjunto de síntomas que ameritaba ir al doctor.
  318. <Form method="post" action="Cuestionario.php">
  319. <INPUT type="hidden" name="Femail" value="<?php echo $Pemail; ?>">
  320. <INPUT type="hidden" name="Fquest" value="<?php echo $cuestdoct; ?>">
  321. <INPUT type="hidden" name="Fpaso" value="ALLENNNNNAR">
  322. <hr>
  323. <table width="100%">
  324. <?php
  325. echo muestracuest($cuestdoct);
  326. ?>
  327. <tr></tr>
  328. <tr>
  329. <td>
  330. <td><INPUT class="enviar" type="submit" value="Terminar" name="terminoquestd">
  331. </tr>
  332. </table>
  333. </form>
  334. <?php
  335. } // Fin de le habiamos dicho que fuera al doctor
  336. else
  337. { // No le habiamos dicho que fuera al doctor
  338. if (haesperado($usuario['IDUsuario'])) // Ya puede llenar de nuevo
  339. {
  340. if($Pquest==$cuestinic) // Acaba de llenar el cuestionario inicial
  341. {
  342. if ($fechaaponer!=NULL)
  343. {
  344. $fechas = mysql_query("SELECT * FROM respuesta WHERE IDRespuesta= ".$fechaaponer);
  345. $row = mysql_fetch_array($fechas);
  346. echo "Hablanos un poco de los síntomas que tuviste <b>".$row['Valor'].".</b><br>Cuentanos con más precisión cuales fueron estos síntomas";
  347. }
  348. }
  349. if ($Pfechaapasar != "")
  350. {
  351. $fechas = mysql_query("SELECT * FROM respuesta WHERE IDRespuesta= ".$Pfechaapasar);
  352. $row = mysql_fetch_array($fechas);
  353. echo "Hablanos un poco de los síntomas que tuviste <b>".$row['Valor'].".</b> <br>Cuentanos con más precisión cuales fueron estos síntomas";
  354. }
  355. if (($Pfechaapasar == "") && ($fechaaponer==NULL))
  356. {
  357. echo "En los <b>últimos siete días</b>:" ;
  358. }
  359. /*
  360. Aquí va el cuestionario en si. El rutinario.
  361. */
  362. ?>
  363. <Form method="post" action="Cuestionario.php">
  364. <INPUT type="hidden" name="Femail" value="<?php echo $Pemail; ?>">
  365. <INPUT type="hidden" name="Fpaso" value="ALLENNNNNAR">
  366. <INPUT type="hidden" name="Fquest" value="<?php echo $cuestpost; ?>">
  367. <?php
  368. if ($cambiaronelcuest==1) // SI este NO es el rutinario normal... (Nota: esta variable solo se altera cuando acabo de leer el inicial)
  369. {
  370. echo "\n<INPUT type=\"hidden\" name=\"18\" value=\"".$fechaaponer."\">"; // <--- Aquí ponemos la fecha porque el cuest que vamos a poner no la trae.
  371. echo "\n<INPUT type=\"hidden\" name=\"Ffechaapasar\" value=\"".$fechaapasar."\">";
  372. $cuestpost = $cuestcucho;
  373. }
  374. if ($Pfechaapasar!=NULL) // Si me pasaron una fecha como fecha a pasar, quiere decir que el tipo es de los que se enfermaron twice
  375. {
  376. echo "\n<INPUT type=\"hidden\" name=\"18\" value=\"".$Pfechaapasar."\">"; // <--- Aquí ponemos la fecha porque el cuest que vamos a poner no la trae.
  377. $cuestpost = $cuestcucho;
  378. }
  379. ?>
  380. <hr>
  381. <table>
  382. <?php
  383. echo muestracuest($cuestpost);
  384. ?>
  385. <tr></tr>
  386. <tr>
  387. <td>
  388. <td><INPUT class="enviar" type="submit" value="Terminar" name="terminoquestP">
  389. </tr>
  390. </table>
  391. </form>
  392. <?php
  393. } // FIN DE HAESPERADO
  394. else
  395. { // NO HA ESPERADO LO SUFICIENTE
  396. echo "Espera al menos 5 días para volver a participar";
  397. } // FIN DE NO HA ESPERADO LO SUFICIENTE
  398. } // FIN de NO le habiamos dicho que fuera al doctor
  399. } // Fin de tiene que llenar el posterior
  400. } // FIN de El usuario ya lleno el cuestionario inicial
  401. } //FIN de si es un usuario válido
  402. ?>
  403. <?php include('footer.php') ?>