Esta lección es parte de un tutorial de Encuesta / Encuesta en curso. La primera parte está aquí: cree su propia encuesta / sondeo, junto con todos los archivos que necesita.

Si recuerdas de la página de la encuesta, teníamos un botón que decía "Ver resultados". Este botón formaba parte de un formulario. El formulario tenía una etiqueta HTML oculta. Esta etiqueta oculta tenía el número de identificación de una fila en nuestra tabla de base de datos. Cuando se hace clic en el botón, el formulario pasa este número de identificación oculto al viewResults.php página. La página viewResults usa este ID de fila para extraer registros de la tabla. Aquí está todo el código PHP para viewResults:

Código PHP para los resultados de la encuesta (se abre en una nueva pestaña del navegador como un archivo de texto)

Aquí está la página en sí, cuando hace clic en el botón:

En la parte superior del código, hemos configurado bastantes variables. Diez de esas variables son para las barras horizontales rojas que ves en la imagen de arriba. Las otras variables contendrán información de la tabla de la base de datos. El primer bit de código real es la declaración if:

if (isset ($ _ GET['Submit2']) && isset ($ _ OBTENER['h1'])) {
}

Esto verifica si hay dos cosas configuradas: el botón Enviar del formulario de la encuesta y la variable oculta, a la que llamamos h1. Si es así, podemos OBTENER el valor de h1:

$ qNum = $ _GET['h1'];

Después de conectarnos al servidor y la base de datos, tenemos esto para nuestro SQL:

$ SQL = $ db_found-> prepare ('SELECT * FROM tblsurvey WHERE ID =?');

Esta vez, queremos todos los registros de la tabla. Pero solo DONDE hemos encontrado un campo de identificación coincidente.

De hecho, puede probar para ver si el SQL está bien. Lo haces con una declaración if:

si ($ SQL) {
}

Esto devolverá verdadero si el SQL está bien y falso si no lo está.

Dentro de la prueba SQL, vinculamos los parámetros y ejecutamos:

$ SQL-> bind_param ('i', $ qNum);
$ SQL-> ejecutar ();

Debido a que el campo ID es un número entero en nuestra tabla, necesitamos la letra i como primer parámetro entre los corchetes de bind_param. La variable $ qNum contiene el ID real.

A continuación, intentamos recuperar algunos resultados:

$ resultado = $ SQL-> get_result ();

if ($ resultado-> num_rows> 0) {
}

Si devolvemos con éxito algunas filas, podemos obtener una matriz de valores de la tabla de la base de datos:

$ campo_db = $ resultado-> fetch_assoc ();

Ahora podemos seguir adelante y completar nuestras variables que configuramos en la parte superior del código:

$ pregunta = $ campo_db['Question'];

$ answerA = $ db_field['OptionA'];
$ answerB = $ db_field['OptionB'];
$ answerC = $ db_field['OptionC'];

$ qA = $ db_field['VotedA'];
$ qB = $ campo_db['VotedB'];
$ qC = $ campo_db['VotedC'];

Se accede a cada campo de nuestra tabla y se coloca en variables. Necesitamos todos estos valores de vuelta, ya que los mostraremos en la página web. Entonces obtenemos cuál era la pregunta y las tres opciones que tenía el usuario. También sabemos si votaron A, B o C.

Queremos decir qué porcentaje de los votos recibió una elección en particular. Entonces, la opción A podría haber recibido el 50 por ciento de los votos, la opción B el 25 por ciento y la opción C el 25 por ciento. Las siguientes líneas de código hacen precisamente eso. Aquí está el código PHP que tenemos para la opción A:

$ totalP = $ qA + $ qB + $ qC;
$ percentA = (($ qA * 100) / $ totalP);
$ percentA = piso ($ percentA);

La primera línea obtiene el número total de votos. Luego, convertimos esto en un porcentaje multiplicando los votos emitidos para A por 100 y luego dividiéndolos por el gran total de votos. La tercera línea de arriba solo usa la función PHP incorporada piso para redondear la respuesta.

Las siguientes líneas obtienen los valores porcentuales de las opciones B y C.

La mayor parte del resto del código se ocupa de la creación de una etiqueta HTML para una imagen. Queremos que la imagen de la barra roja se estire o encoja, dependiendo del porcentaje de voto que haya recibido una elección. Como recordatorio, así es como se ve una etiqueta de imagen HTML:

Si codificamos eso, obtendríamos una imagen roja de 10 píxeles de alto y 100 píxeles de ancho.

Pero queremos construir la etiqueta de imagen HTML con PHP. Aquí están las primeras tres líneas para hacer eso:

$ imgWidthA = $ percentA * 2;
$ imgWidthB = $ percentB * 2;
$ imgWidthC = $ percentC * 2;

Lo que estamos haciendo aquí es multiplicar los porcentajes individuales por 2. Si no multiplicamos la imagen por 2, sería muy pequeña y difícil de ver. (Puede multiplicar por un número diferente, si desea una imagen más amplia). Ahora tenemos valores para la parte WIDTH de la etiqueta HTML. El valor de ALTURA fue algo que codificamos en la parte superior de la página:

$ imgHeight = 10;

Si desea una línea roja más alta, puede ajustar este valor.

Ahora tenemos suficiente información para crear la etiqueta de imagen HTML:

$ imgTagA = "";

Aquí, estamos usando el operador de concatenar (.) Para unir las distintas partes de la etiqueta IMG y colocarla en una variable propia ($ imgTagA).

Ahora examine el HTML en la sección BODY del código:

imprimir $ pregunta. "
";
imprimir $ respuestaA. "". $ imgTagA. "". $ percentA. "%". $ qA. "
";
imprimir $ respuestaB. "". $ imgTagB. "". $ percentB. "%". $ qB. "
";
imprimir $ respuestaC. "". $ imgTagC. "". $ percentC. "%". $ qC. "
";

?>

Primero, imprimimos la pregunta. Luego unimos las distintas partes para cada respuesta:

imprimir $ respuestaA. "". $ imgTagA. "". $ percentA. "%". $ qA. "
";

Primero imprimiremos la respuesta (una de las tres opciones que tenía el usuario). Luego tenemos la etiqueta IMG que creamos anteriormente. Luego viene el porcentaje real y finalmente el número real de votos emitidos para esa elección. Aquí hay una representación visual de dónde terminan las diversas variables:

Variables de PHP de la página de la encuesta

No hay mucho que hacer ahora, para la encuesta. La parte final es agregar nuevas preguntas a la base de datos.



<- Atrás una página | Pasar a la siguiente parte ->

Volver a la página de contenido de PHP

Recomendado para ti