Anuncios

Bienvenidos sean a este post, hoy veremos como se utiliza el insert into y select desde PHP.

Anuncios

Hable brevemente sobre estas dos instrucciones en este post, para trabajar usaremos el ejemplo que modificamos en el post anterior veamos el codigo actual del mismo:

forms.php

<?php

if (isset($_REQUEST["user"])) { 
	$usuario=$_REQUEST["user"]; 
} else { 
	$usuario=""; 
}
if (isset($_REQUEST["nombre"])) {
	$nombre = $_REQUEST["nombre"];
} else {
	$nombre = "";
}
if (isset($_REQUEST["apellido"])) {
	$apellido = $_REQUEST["apellido"];
} else {
	$apellido = "";
}

include("tutorial.inc");
$con = base_connect("curso");

if ($nombre!="" && $apellido!="" && $usuario!="")
{
	$salida = "si";
} else {
	$salida = "";
}

?>

<html>

<head>
<title>Formulario de usuarios</title>
</head>

<body>

<?php if ($salida!="si") { ?>
<form name="form1" method="post" action="">
Ingresa el usuario: <input type="text" name="user" value=""><br>
Ingresa el nombre: <input type="text" name="nombre" value=""><br>
Ingresa el apellido: <input type="text" name="apellido" value=""><br>
<br>
<button type="submit">Subir</button>&nbsp;&nbsp;&nbsp;
<button type="reset">Cancelar</button>
</form>
<?php } else { ?>
Usuario: <?php echo $usuario; ?><br>
Nombre: <?php echo $nombre; ?><br>
Apellido: <?php echo $apellido; ?><br>
<br>
<button type="button" onclick="location.href='forms.php'">Volver</button>
<?php } ?>

</body>

</html>
Anuncios

Sobre el archivo tutorial.inc en el post anterior explico como habilitarlo en php.ini y como crearlo, con todo esto realizado podemos continuar, hasta este codigo podemos conectarnos a nuestro servidor pero no hace ninguna accion todavia, para esta ocasion vamos a permitir que se agreguen usuarios y podamos verlo si ya existen en la tabla, para ello modificaremos el condicional donde verifica si los tres campos son distintos de nada de la siguiente manera:

if ($usuario!="")
{
        $query="select * from alumnos where usuario='$usuario'";
        $qBuscar=mysqli_query($con, $query);
        while($linea=mysqli_fetch_array($qBuscar))
        {
                $user = $linea[1];
                $name = $linea[2];
                $last = $linea[3];
        } 
        if ($user=="")
        {
                if ($nombre!="" && $apellido!="" && $usuario!="")
                {
                $query="insert into alumnos "
                        . "(id,usuario,nombre,apellido,edad,ciudad) "
                        . "values "
                        . "(NULL,'$usuario','$nombre','$apellido',NULL,NULL)";
                $qIngreso=mysqli_query($con, $query);
                $user = $usuario;
                $name = $nombre;
                $last = $apellido;
                $salida = "si";
                } 
                else 
                {
                $salida = "";
                }
        } else {
                $salida = "si";
        }
} else {
        $salida = "";
}
Anuncios

La primera diferencia que veremos sera que chequeamos unicamente a usuario, en caso de ser distinto de nada viene esta linea:

$query="select * from alumnos where usuario='$usuario'";
Anuncios

Esta sera una variable donde almacenaremos el query a ejecutar, esto se podria hacer directamente con la siguiente linea pero muchas veces es mas practica armar el «query» en una variable para poder visualizarlo mejor en caso de error y tambien volverlo a utilizar en caso de ser necesario, en este caso le decimos que nos traiga todos los campos desde la tabla alumnos pero solamente donde el usuario coincida con el contenido en la variable usuario, veamos la siguiente linea:

$qBuscar=mysqli_query($con, $query);
Anuncios

Aqui usaremos otra variable para almacenar el resultado de esta funcion, la cual se encarga de ejecutar el query y almacena el resultado, observen que primero debemos pasar la conexion y luego el query en si, para este caso le pasamos la variable anterior de lo contrario deberan pasar todo el contenido en esta parte, por eso les recomiendo hacerlo asi, con esto ya hicimos el query en si pero como recuperamos la informacion? aqui entra en accion mysqli_fetch_array en el siguiente bloque:

        while($linea=mysqli_fetch_array($qBuscar))
        {
                $user = $linea[1];
                $name = $linea[2];
                $last = $linea[3];
        }
Anuncios

Para pasar por todo el array que se genero dentro de qBuscar debemos usar un while donde mientras la variable linea tenga algo de informacion se ejecutara, esto es gracias a la funcion que pasara por la variable qBuscar, mientras lo ejecutamos almacenaremos tres columnas solamente, por el momento, en este caso seran los siguientes:

  • user, sera para el usuario almacenado en la tabla
  • name, para el nombre en la tabla
  • last, para el apellido guardado en la tabla
Anuncios
Anuncios

Observen las posiciones del array que pasamos, en este caso sabemos que la posicion inicial (0) es para el id interno de la base y no lo necesitamos, como el siguiente es el usuario le pasamos el valor 1, y asi con los otros dos datos, con estos tres datos obtenidos salimos del ciclo pero tenemos un condicional donde verificamos si user es igual a nada, esto equivale a decir que no existe en la tabla por lo tanto despues tenemos el siguiente condicional donde verifica la condicional original, es decir que se hayan pasado los tres valores necesarios, en caso de ser verdadero generamos otro query:

                $query="insert into alumnos "
                        . "(id,usuario,nombre,apellido,edad,ciudad) "
                        . "values "
                        . "(NULL,'$usuario','$nombre','$apellido',NULL,NULL)";
Anuncios
Anuncios

Pueden usar una sola linea sin necesidad de concatenar pero por un tema de practicidad para que quede mejor visualizado lo hice de esta manera, pero observen como usamos un insert into vemos los campos que posee la tabla y despues pasamos los valores obligatorios directamente entre las comillas simples y para los ultimos dos que no son necesarios por el momento los pasamos como NULL, despues de esto usamos nuevamente a mysqli_query para ejecutarlo, como se daran cuenta esta funcion se encarga de correr todos los querys que podemos usar en el interprete de la base de datos, en este caso como no devuelve ningun resultado no corremos ningun bucle despues de este, lo unico que hacemos es establecer los valores de las variables del primer query con los nuevos valores y damos el valor de si a salida para que muestre los datos, en caso de que no hayamos pasado todos los datos al no existir en la tabla procede a volver al menu principal, por ultimo tenemos el else del query original y procede a establecer si en salida para mostrar todos los datos, por ultimo tenemos el else que se ejecuta cuando usuario esta en blanco, por ultimo debemos cambiar estas lineas:

Usuario: <?php echo $usuario; ?><br>
Nombre: <?php echo $nombre; ?><br>
Apellido: <?php echo $apellido; ?><br>
Anuncios

De la siguiente manera:

Usuario: <?php echo $user; ?><br>
Nombre: <?php echo $name; ?><br>
Apellido: <?php echo $last; ?><br>
Anuncios

Eso lo hacemos para certificar que es informacion nueva y no solamente la que cargamos originalmente, antes de probarlo veamos el codigo final hasta el momento:

forms.php

<?php

if (isset($_REQUEST["user"])) { 
	$usuario=$_REQUEST["user"]; 
} else { 
	$usuario=""; 
}
if (isset($_REQUEST["nombre"])) {
	$nombre = $_REQUEST["nombre"];
} else {
	$nombre = "";
}
if (isset($_REQUEST["apellido"])) {
	$apellido = $_REQUEST["apellido"];
} else {
	$apellido = "";
}

include("tutorial.inc");
$con = base_connect("curso");

if ($usuario!="")
{
	$query="select * from alumnos where usuario='$usuario'";
	$qBuscar=mysqli_query($con, $query);
	while($linea=mysqli_fetch_array($qBuscar))
	{
		$user = $linea[1];
		$name = $linea[2];
		$last = $linea[3];
	} 
	if ($user=="")
	{
		if ($nombre!="" && $apellido!="" && $usuario!="")
		{
		$query="insert into alumnos "
			. "(id,usuario,nombre,apellido,edad,ciudad) "
			. "values "
			. "(NULL,'$usuario','$nombre','$apellido',NULL,NULL)";
		$qIngreso=mysqli_query($con, $query);
		$user = $usuario;
		$name = $nombre;
		$last = $apellido;
		$salida = "si";
		} 
		else 
		{
		$salida = "";
		}
	} else {
		$salida = "si";
	}
} else {
	$salida = "";
}

?>

<html>

<head>
<title>Formulario de usuarios</title>
</head>

<body>

<?php if ($salida!="si") { ?>
<form name="form1" method="post" action="">
Ingresa el usuario: <input type="text" name="user" value=""><br>
Ingresa el nombre: <input type="text" name="nombre" value=""><br>
Ingresa el apellido: <input type="text" name="apellido" value=""><br>
<br>
<button type="submit">Subir</button>&nbsp;&nbsp;&nbsp;
<button type="reset">Cancelar</button>
</form>
<?php } else { ?>
Usuario: <?php echo $user; ?><br>
Nombre: <?php echo $name; ?><br>
Apellido: <?php echo $last; ?><br>
<br>
<button type="button" onclick="location.href='forms.php'">Volver</button>
<?php } ?>

</body>

</html>
Anuncios

Pasemos a ver como trabaja ahora nuestra pagina mediante el siguiente video

Anuncios

En el video podemos ver como nuestra tabla vacia se va completando a medida que agregamos un usuario con todos los datos necesarios, si nos falta algun dato lo omite, si ya existe nos devuelve el dato y en caso de no existir nos devuelve a la pagina principal, como pueden ver es bastante simple usarlo si se aplica correctamente la sintaxis de los query, tambien hemos puesto en practica varios de las funciones y metodos vistos anteriormente.

Anuncios

En resumen, hoy hemos visto como utilizar a select con PHP, hemos visto como hacerlo por medio de mysqli_query y por medio de mysqli_fetch_array obtener los resultados devueltos por el select y la funcion ejecutora, despues vimos como usar a insert into a traves de la misma funcion y como pudimos decirle al programa que en base a las distintas condiciones posibles trabaje de una forma u otra, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50