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.

En la parte anterior de esta lección, viste la estructura de la base de datos de la Encuesta. La primera página PHP que veremos es la setSurvey.php archivo, que se encuentra en la carpeta de scripts / encuesta que descargó. Es donde establecemos una pregunta para la encuesta. Como recordatorio, la página se ve así en un navegador:

Usando su editor de texto favorito, abra el archivo llamado setQuestion.php nuevamente, y eche un vistazo al código:

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

En la parte superior de la página, tenemos nuestro exigir line, que obtiene las constantes para la base de datos y la conexión al servidor. Observe que la referencia de ubicación del archivo tiene dos conjuntos de puntos / puntos / barra al principio. Esto se debe a que hemos colocado nuestro configurar archivo fuera de la carpeta raíz web. Debe cambiar la referencia del archivo para que coincida con el lugar donde ha guardado su propio archivo de configuración.

Después de obtener una referencia al archivo de configuración, configuramos algunas variables. La mayoría de las variables se establecen en cadenas en blanco. Excepto estos dos:

$ startSelect = "";

Tenemos que construir nuestro propio cuadro desplegable HTML con PHP. Si lo estuviera haciendo puramente en HTML, entonces un cuadro desplegable se ve así:

El código HTML anterior le daría una lista desplegable con dos elementos. Así que necesitamos agregar las dos partes SELECT, la inicial y la final, usando código PHP. Completaremos las partes de OPCIÓN más tarde.

Cuando la página se cargue por primera vez, la llenaremos con opciones de la tabla de la base de datos. Sin embargo, debemos detectar si se hizo clic en el botón del formulario. La siguiente parte de nuestro código PHP detecta que:

if (isset ($ _ GET['Submit1'])) {

$ getDropdownID = $ _GET['drop1'];
header ("Ubicación: survey.php? h1 =". $ getDropdownID);

}

Volveremos a este código más tarde. Pero comprueba si se ha establecido un objeto de formulario HTML llamado Submit1. Este objeto de formulario es el botón. Queremos redirigir a la página de la encuesta, donde se cargará la encuesta que seleccionó el usuario.

Lo primero que hace el resto del código es conectarse al servidor y la base de datos. Entonces tenemos esta línea:

$ stmt = $ db_found-> prepare ("SELECCIONAR ID, Pregunta DE tblsurvey");

if ($ stmt) {

// RESTO DE CÓDIGO AQUÍ

}

La primera línea es una declaración preparada. Entre paréntesis, tenemos esto:

SELECCIONAR ID, Pregunta DE tblsurvey

En tutoriales anteriores, seleccionamos todos los registros de una tabla de base de datos. Usamos el símbolo de asterisco

:

SELECCIONAR * DE tblsurvey

Sin embargo, no es necesario que seleccione todos los campos de su tabla. Puede seleccionar solo los campos (columnas de la tabla) que necesite. Solo necesitamos el número de identificación y la pregunta, por lo que solo estamos seleccionando estos dos campos. La pregunta se agregará al cuadro desplegable. El número de identificación se coloca en una etiqueta HTML oculta. Cuando redirigimos a la página de la encuesta, survey.php tomará esta identificación y la usará para extraer los registros correctos de la tabla.

La declaración if ($ stmt) está probando que realmente obtuvimos un resultado de ese SQL. Si lo hicimos, la variable tendrá un valor verdadero. Si el SQL falló, $ stmt será falso. Hemos agregado una parte else para imprimir algo, si el SQL falla:

if ($ stmt) {

// RESTO DE CÓDIGO AQUÍ
}

demás {

imprimir "Error - DB ERROR";

}

Si el SQL es exitoso, lo ejecutamos y obtenemos los resultados:
$ stmt-> ejecutar ();

$ res = $ stmt-> get_result ();

A continuación, probamos si el número de filas es mayor que cero. Si no es así, imprimimos un mensaje:

if ($ res-> num_rows> 0) {

// RESTO DE CÓDIGO AQUÍ

}

demás {

imprimir "Error - No hay filas";

}

Si se encontraron filas, podemos recorrer y construir nuestro código HTML desplegable:

while ($ fila = $ res-> fetch_assoc ()) {['ID']$ qID = $ fila
;['Question']$ pregunta = $ fila
;

$ menú desplegable = $ menú desplegable. "". $ pregunta. "". "
";

}

$ wholeHTML = $ startSelect. $ menú desplegable. $ endSelect;

El bucle da vueltas y vueltas mientras hay filas en la tabla. Lo primero que hacemos es tomar los valores de ID y Pregunta de la tabla:['ID']$ qID = $ fila
;['Question']$ pregunta = $ fila

;

El ID de fila va en la variable $ qID que configuramos en la parte superior del código; la pregunta de la fila entra en una variable propia, $ question. Una vez que tenemos estos valores, podemos usarlos para construir el HTML:

$ menú desplegable = $ menú desplegable. "". $ pregunta. "". "
";
Solo necesitamos la parte OPTION de la etiqueta SELECT, aquí. Agregamos $ qID como el parámetro VALUE. La pregunta en sí entra entre paréntesis puntiagudos.

Una vez que el ciclo ha hecho su trabajo, ¿cuándo se puede juntar todo el HTML para obtener una lista desplegable?

$ wholeHTML = $ startSelect. $ menú desplegable. $ endSelect;

Podemos usar la variable $ wholeHTML en la parte FORM del HTML. Aquí está el HTML para el FORMULARIO:

La ACCIÓN de este formulario es enviarse a sí mismo para su procesamiento. Lo hace cuando se hace clic en el botón con el TIPO llamado "Enviar". El NOMBRE de este botón Enviar es "Enviar1".

Sin embargo, observe la declaración impresa:


La variable $ wholeHTML contiene nuestra lista desplegable.

Clics de botones

Detectamos si se hizo clic en el botón del formulario con este código PHP, que está en la parte superior:['Submit1']if (isset ($ _ GET

)) {['drop1']$ getDropdownID = $ _GET

;

header ("Ubicación: survey.php? h1 =". $ getDropdownID);

}

Esto detecta si se hizo clic en el botón con el NOMBRE Enviar1. Si lo fue, tenemos esto como primera línea:['drop1']$ getDropdownID = $ _GET

;

Estamos intentando obtener el NOMBRE del cuadro desplegable SELECCIONAR HTML. Si recuerdas, teníamos esto para SELECT:

$ startSelect = "