| App inventor 2 en español  Cómo programar los teléfonos móviles con Android
 mediante App inventor 2 - Juan Antonio Villalpando
 --- PHP y MySQL en App Inventor 2 -- Volver al índice del tutorial de PHP y MySQL ____________________________ 412.- Cuestionario. MySQLi. PHP.  p412_mysql_test.aia
 - Vamos a realizar un cuestionario, las respuestas se guardarán en MySQL mediante PHP. - Dentro de la base de datos xxxxx_tutorial, vamos a crear otra tabla llamada cuestionario con esta estructura: 
 - La puedes Importar mediante este archivo: 
        
          | cuestionario.sql |  
          | 
		  
-- Juan A. Villalpando.
-- KIO4.COM
CREATE TABLE `cuestionario` (
  `id` int(6) NOT NULL,
  `nombre` varchar(12) COLLATE utf8_spanish2_ci NOT NULL,
  `edad` varchar(2) COLLATE utf8_spanish2_ci NOT NULL,
  `ciudad` varchar(12) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `forofo` varchar(30) COLLATE utf8_spanish2_ci NOT NULL,
  `opinion` varchar(35) COLLATE utf8_spanish2_ci NOT NULL,
  `socio` varchar(40) COLLATE utf8_spanish2_ci NOT NULL,
  `profesion` varchar(20) COLLATE utf8_spanish2_ci NOT NULL,
  `intelectual` varchar(45) COLLATE utf8_spanish2_ci NOT NULL,
  `practica` varchar(2) COLLATE utf8_spanish2_ci NOT NULL,
  `deporte` varchar(120) COLLATE utf8_spanish2_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci;
ALTER TABLE `cuestionario`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `cuestionario`
  MODIFY `id` int(6) NOT NULL AUTO_INCREMENT;
COMMIT;		  		  
		  
 |  -------------------------------------------------------------------------- - Mi aplicación realizará dos ejemplos: 1.- Cuando arranque la aplicación saldrá un Notificador y pedirá el nombre del usuario. La aplicación mediante PHP y MySQL consultará si ese usuario existe en la base de datos , en caso que exista saldra la pantalla del "Cuestionario". El usuario deberá estar creado previamente en la base de datos para que pueda entrar.  2.- En el "Cuestionario" el usuario contestará a las preguntas, las hay de tipo CampoDeTexto, Option y CheckBox. 
        
          | - Este ejemplo funcionará de la siguiente forma:   1.- Saldrá la pantalla Screen1, mediante  un Notificador1 solicitará "Nombre". 2.- Introducimos nuestro "Nombre", éste deberá estar previamente creado en la Base de datos. 3.- Si introducimos el "Nombre" correcto, entrará en la pantalla "cuestionario". 4.- Para autentificar al usuario, el archivo bd_autorizacion.php http://kio4.com/appinventor/php/bd_autorizacion.php 5.- Irá a la base de datos, a la tabla `cuestionario` y contará si hay algún usuario con ese "Nombre", según haya o no haya, devolverá "si" o "no" mediente el archivo bd_autorizacion.php 6.- Si llega un "si", iniciará la pantalla "cuestionario". 7.- También he puesto una TinyBD_Nombre, simplemente para guardar el nombre, por ahora no hace falta.    |  |  ___________________________1A.- Screen1. Diseño.
 
 ___________________________1B.- Screen1. Bloques.
 
 _________________________________1C.- Código PHP.
 
        
          | bd_autorizacion.php |  
          | 
		  
<?php
// Juan Antonio Villalpando
// juana1991@yahoo.com 
// http://kio4.com
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
require_once('bd_autentifica.php');
// 2.- CONEXION A LA BASE DE DATOS
// mysql_select_db($db_name) or die(mysql_error());
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);
// Check connection
if ($link->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}
// COMPRUEBA SI EXISTE.
    $nombre = $_POST['nombre'];
$resultado = mysqli_query($link,"SELECT * FROM cuestionario WHERE nombre = '$nombre'  ");
$datos = mysqli_fetch_array($resultado, MYSQLI_NUM);
// Responde si existe o no
if($datos[0] > 0) {echo "si";}
else	{echo "no";}
mysqli_close($link);
?>		  		  
		  
 |  ______________________________________________________________________________________
 ___________________________________________
 ___________________________________________
 
        
          | - Pantalla cuestionario: 1.- Saldrá la pantalla cuestionario, observamos CampoDeTexto, elecciones únicas y elecciones varias en deportes. 2.- Después de rellenar las 10 preguntas, pulsamos el botón de "Enviar". 3.- Mediante bd_cuestionario.php, se enviará las respuestas a la base de datos mediante PHP. |  |  _________________________________2A.- Diseño.
 
 _________________________________2B.- Bloques.
 
 _________________________________2C.- Código PHP.
 - Observa en esta línea el acento `grave` en `cuestionario` y `nombre` - La comilla simple en '$nombre' - La comilla doble al principio y al final del "SELECT.....)" $res=mysqli_query($link, "SELECT nombre FROM `cuestionario` WHERE `nombre`='$nombre' "); 
        
          | bd_cuestionario.php |  
          | 
		  
<?php
// Juan Antonio Villalpando
// juana1991@yahoo.com 
// http://kio4.com
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
require_once('bd_autentifica.php');
// 2.- CONEXION A LA BASE DE DATOS
// mysql_select_db($db_name) or die(mysql_error());
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);
// Check connection
if ($link->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}
	$nombre = $_POST['nombre'];
	$edad = $_POST['edad'];
    $ciudad = $_POST['ciudad'];
	$forofo = $_POST['forofo'];
	$opinion = $_POST['opinion'];
	$socio = $_POST['socio'];
	$profesion = $_POST['profesion'];
	$intelectual = $_POST['intelectual'];
	$practica = $_POST['practica'];
	$deporte = $_POST['deporte'];
	// $deporte = implode('|', $_POST['deporte']); // Para Web
	
$res=mysqli_query($link, "SELECT nombre FROM `cuestionario` WHERE `nombre`='$nombre' ");
$row=mysqli_fetch_array($res);
$count = mysqli_num_rows($res);
if( $count == 0 ) { // Si ha contado 0 nombre, es que el usuario no esta registrado. Lo registra y pone los datos.
$query="insert into cuestionario (nombre, edad, ciudad, forofo, opinion, socio, profesion, intelectual, practica, deporte) values ('$nombre','$edad', '$ciudad', '$forofo', '$opinion','$socio','$profesion', '$intelectual','$practica','$deporte')";
			$result = mysqli_query($link, $query);
			echo 'Registrado';
	}else{
			echo ' Ya estaba registrado';
			// Actualiza
			$query="update cuestionario set edad='$edad', ciudad='$ciudad', forofo='$forofo', opinion='$opinion', socio='$socio', profesion='$profesion', intelectual='$intelectual', practica='$practica', deporte='$deporte' WHERE nombre='$nombre' ";
			
			$result = mysqli_query($link, $query);
			}
	
mysqli_close($link);
?>	  		  
		  
 |  ____________________- Comentarios.
 - Fíjate cómo se envía las elecciones únicas y la elección múltiple de "deportes". - "deporte" se enviará: Andar|Ver televisión|||Jugar al fútbol|| - Estudia el archivo "bd_cuestionario.php", si no existiera el usuario, lo crearía e insertaría los valores. En esta app el usuario debe exister para entrar en la aplicación según la pantalla Screen1. - Pero lo he puesto de esta manera para que se vea la diferencia entre insertar y actualizar. - Si el usuario existe (debería existir, aunque no es necesario), actualizaría las respuestas de ese usuario. - Observa la diferencia entre Insertar y Actualizar. __________________________________    |