Seguidores

MIS WEBS



PHP

APUNTES Php

APUNTES PHP

logo php

¿Que es PHP y para que utilizarlo?

Php es un lenguaje de programación del lado del servidor, también conocido com Back End, esto quiere decir que siempre estará oculto a la vista del cliente y que para utilizarlo tenemos que tener nuestra pagina alojada en un servidor.

Para realizar estas practicas yo utilizo wamp es un paquete que posee un servidor local Apache y un administrador de BBDD (phpMyAdmin). Es completamente gratuito de descargar, aquí os dejo la url (wamp).

Para trabajar con php tenéis que tener alojados vuestros documentos html en la carpera del servidor, buscar la siguiente ruta C:\wamp64\www y crear una carpeta donde alojar los archivos.

Una vez tenemos los archivos alojados en la carpeta wwww del wamp64, podremos ver nuestras pagina web escribiendo el buscador http://localhost.

Uno de los fallos frecuentes para que no arranque el wamp es que no cargen los servidores, ten en cuenta que Apache necesita tener libre el puerto 80 y en ocasiones este puede estar siendo utilizado por otro programa como puede ser skype, tines dos opcinoes o desistalar skype o modificar el puerto de salida de Apache.

OPERADORES Y CARACTERES COMODÍN PHP

Tabla de operadores php
OPERADOR USO
== Igual que
=== Igual que y mismo tipo (integer, String, bolean). !=
!$var Si var no es verdadero
&& Y lógico
And y logico
|| Or u o lógico
XOR O exclusivo
! No como
!= Diferente que
<> Diferente si dos variables no son iguales y del mismo tipo
++ Incrementa 1
-- Decremento 1
+= x Incrementa de x en x el valor de un número
-= x decrece de x en x
.= Concatena o incrementa textos.
< Menor que
> Mayor que
<= Menor o igual que
<= Mayor o igual que
$a<=>$b Nave espacial, si el valor de a es el mayor de los dos regresará -1, si a y b son iguales regresará 0 y si b es el mayor regresará 1.
% Resto de la división
Tabla racteres comodín
Carater USO
% cadnea de caracteres (* de SQL para Accces)
_ caracter indiviual (? de SQL para Accces)
like Simpre que utilicemos un caracter comodin para %, _ ... la comparación se realizara con un like: SELEC * FORM nameTable WERE nameRow like "Rogelio";

¿Qué es un bucle?

Un bucle es un fragmento de código que se repetirá hasta que deje de cumplirse una condición dada.

Un bucle puede ser predeterminado si se estable las vueltas de bucle desde el inicio o indeterminado si desconocemos las veces que se repetirá.

While
El código se ejecuta mientras que se cumpla una condición.
Do-while
El código se ejecuta hasta que se cumpla la condición pero en este caso se evaluara al final de vuelta, por lo que como mínimo entrará una vez en el bucle.
For
Es un bucle determinado, el bucle se repetirá en tantas ocasiones como decidamos. Suele utilizarse para recorrer arrays y es uno de lo que más se usa.

Condicionales if y else if

El comparador if se utiliza para confirmar si se cumple una condición, en caso que se cumpla el programa entra en el código de nuestro if. Si ponemos un else junto varios if en caso de no cumplirse las condiciones del if entraria en el else.

Sintaxis del if


if (condicion){
código...
}
if (condicion){
código...
}
else{
código...
}
	

Aquí le estamos indicando.

  1. Si se cumple la primera condición entra en el código
  2. Pasa a segundo if, si se cumple entra.
  3. Si ninguna condición se cumple, entra en el else.

Diferencia entre bucle if y un bucle else if

En el anterior ejemplo hemos anidado varios if por lo que le hemos dicho que entre en cada una de las condiciones cuyo resultado sea true (pueden ser una, varias o ninguna). Mienetras que el condicional else if recorrera el bucle buscando una condición correcta, cuando la encuentra saldrá de él, solo puede existir una respuesta correcta esto hace que el programa no tenga que recorrer todos los registros.

Así se escribe un bucle else if


if (condicion){
código...
}else if (condicion){
código...
}else if (condicion){
código...
}
else{
código...
}
	

Ejmplo de else if


	if ($edad<20) {
	echo "Eres menor de 20";
}else if ($edad>=20 && $edad <=40) {
	echo "Eres ya vas camino de los 41"; 
}else if ($edad>40 && $edad <=50) {
	echo "ups ya eres cuarenton"; 
}else if ($edad>50 && $edad <=65) {
	echo "Vas camino de la juvilación"; 
}else if ($edad>65) {
	echo "Estas jubilado";
}

Operador TERNARIO

Es una función de comparación en la que ponemos una condición si se cumple el programa hará una cosa en caso de no cumplirse el programa realizara otra cosa. cuando solo tenemos que comparar dos cosas nos evitaria el if

SINTAXIS

Condición a evaluar ? Valor si verdadero : Valor si falso

$numer1 = 20;
$numer2 = 40;
$resOk="menos de 100";
$resKo="mas de 100";

echo "<br>" . $numer1 < 100 ?  "Es menos que 100" :  "es mayor que 100";
echo "<br>" . $numer2 > 100 ?  $resOk :  $resKo;
	
 

STR FUNCIONES PREDEFINIDAS DE TEXTO

Comparar textos strcmp(text1,text2) y strcasecmp(text1,text2)

strcmp y strcasecmp son funciones de php que tulizamos para comparar textos. Ambas disponen de dos parámetros que serán los dos String que vamos a comparar. Y su resultado será boleano representandose con 1 si es falso y 0 si es verdadero.
  • strcasecmp(text1,text2): (String compare case) compara teniendo en cuenta mayúsculas y minúsculas.
  • strcmp(text1,text2): (String compare)compara dos String sin tener en cuanta mayúsculas y minúsculas

<?php
	function comparatext(){
	   $text1="david";
	   $text2 = "DAVID";
			//compara dos textos teneindo en cuenta MAYUSCULAS y minusculas
			$comparador= strcmp($text1, $text2);
echo "<br><br> Considerando mayusculas y min la comparacion es " . $comparador;			

$comparador = strcasecmp($text1, $text2);
echo "<br><br> Sin considerar mayusculas y min la comparacion es " . $comparador ;	
}
comparatext();
?>
	

Antes vimos que tenemos el comparador if lo podemos aprobechar, tener que un if en un boleano significa true o 0 en este caso. Por lo tanto le diremos:

  1. Si es verdadero : if (variable){código...}, tal y como digimos antes al ser boleano no es necesario decir if(variable==true){}
  2. Al solo tener dos opciones (true, false), tan solo nos hará falta un else.

Este sería el código:

<?php 
	$str1="DAVID";
	$str2="David";

	if (strcmp($str1, $str2)) {
		echo "solo texto igual ok <br>";
	}else{
		echo "mayusculas y min  KO <br>";
	}if (strcasecmp($str1, $str2)){
		echo "MUYUSCULAS/MIN OK <br>";
	}else{
		echo "No coincide con mayusculas y min <br>";
	}
?>
	

htmlentities: para mostrar los caracteres de html en la pagina.

Convierte todos los caracteres aplicables a entidades HTML, cuando escribimos webs de programación es necesario mostrar frajmentos de código, esta función nos ayuda a sustituir aquellos caracteres que no dejarian mostrarse.

Cuando tu muestras < en una web lo que escribes en tu html & l t ;. si fuera así el navegador lo analizaría como una etiqueta html y no mostraría código.

Ejemplo htmlentities("string")

<?php 
	$str= "<dfn>Convierte todos los caracteres aplicables a entidades HTML&l;/dfn>";
	echo htmlentities($str);
?>
	

strtoupper: Convierte texto de minusculas a mayusculas

<?php echo strtoupper("david") ?>

strtolower: Convierte texto de mayusculas a minusculas

<?php echo strtolower("DAVID") ?>

ucwords: Pasa a mayusculas el primer caracter de cada frase.

<?php echo ucwords("este testo es el que utilizas"); ?>

Comparador switch en php

Si tenemos varias repeticiones de comparación con if en ocasiones puede resultar más util y agil hacer esa comparación con un comparador switch, al ser más sencillo.

Lo utilizaremos para comparar varias opciones posibles.

Ejemplo de switch:

	
switch ($Conbustible) {
	case 'Gasoil':
		echo 'el precio del Gasoil es 1.40€'; 	
	break;
	case 'Super 95':
		echo 'el precio de Super 95 es 1.60€'; 	
	break;
	case 'Super 98':
		echo 'el precio de Super 98 es 1.70€';
	break;
}



						

Sintaxis de While

<?php	
	while(condición){

	código......
};
?>

Sintaxis de Do-While

<?php
	do{

	código......
}while(condición);

?>

Sintaxis de for

<?php
	for($i=valorInicio;$i<valorFinal; i++){
	código....
};

?>

En el siguiente ejemplo escriviremos en pantalla valores entre 1 y 10

Le indicamos que i inicie su bucle en 0 y lo finalice en 9 (i<10) y que a cada buelta de bucle el valor de i incremente 1 (i++)

	
<?php

	for($i=0; $i<10; $i++){
		echo "$i , ";
	}

?>

Si deseamos utilizar un for para recorrer un array en php utilizaremos la función count(), en Java, javaScript,Vba y otros idiomas se utilizaren length (longitud), pero en php utilizaremos $i<count($array).

En el siguiente ejemolo creamos un array y lo mostraremos por tantalla

<?php 
	$opciones = ["multiplicar", "dividir", "restar","sumar" ];
		for ($i=0; $i<count($opciones) ; $i++) { 
						
					echo "$opciones[$i] <br>";
			}
?>

";
			}
?>

Sentencias para ronmper ciclos: break y continue

break;
Lo utilizaremos para salir del bucle en un punto determinado.
continue;
Lo utilizaremos para que una vuelta de bucle no se ejecute.

Cómo forzar la salida de un bucle for

Un bucle for se tiene que repetir hasta que se cumpla la condición establecida, pero puedo ocurrir errores que no permitan que se cumpla dicha condición y esto generaría que se quedara en un bucle infinito, para salir del bucle de forma forzada utilizaremos la instrucción break;

En el siguiente código vamos a establecer que i inicie en 0 y como condición que mientras que i hasta que i sea 10000000000000000000000000000000000000 i incremente 10000000000000000000000000000000000000.Con testa instrucción el código se repetira 10000000000000000000000000000000000000 veces. Le vamos ha indicar que si i es igual a 10 que salga.

<?php
	for($i=0; $i<10000000000000000000000000000000000000; $i++){
	echo "$i , ";
		if ($i==10) {
		break;		}
}

?>

Como evitar que se ejecute una buelta de bucle

En ocasiones no nos ineresa que una buelta de bucle en concreto no se ejecute para ello utilizaremos la instrucción continue.

En el siguiente jemplo vamos a dividir 50 entre el valor de nuestro bucle. Pero si dividimos cualquier numero entre 0 nos generará un herror matemático y el programa fallara. para evitarlo lo que haremos es decirle a nuestro bucle que cuando el valor de $i sea 0 no realizce ese vuelta.

Así sería el código


<?php 

for ($i=10; $i>= -10 ; $i--) { 

	if ($i==0) { 
		echo "valor de 50 / $i = 	NO SE PUEDE CALCULAR <br>";
		continue;
		}
	 echo "valor de 50 / $i = " . (50/$i) . "<br>";
		
	} 
?>

Funciones en Php

Una función es un conjunto de instrucciones que podemos recuperar desde nuestro programa actual u otro programa posterior. En ocasiones repetimos el mismo fragmento de código para hacer un programa varias ocasiones, en esos casos vale la pena crear una función y luego inbocarla.

Tipos de funciones

Funciones predefinidas
Están realizadas por la comunidad php y nosotros podemos reutilizar cuando nos resulten necesarias.
Funciones propias
Son las que tu mismo harás para no depender de nadie, en ocasiones vale la pena hacerla uno mismo para que se adapte a nuestro programa.

Como declaramos una función:

Para crear una función tendremos que utilizar la palabra clave function, luego pondremos el numbre que le asignaremos a la función, parentesis, abriremos corchetes, escribiremos el código que deseamos que ejecute y cerraremos corchetes.
function NombreFuncion(){
	code.....;
	code.....;
}

Como llamamos a una función

Una función es un fragmento de código que utilizaremos para ahorarnos volber a escribir las mismas líneas una y otra vez. Tu puedes encerrar 100 líneas de código dentro de una función y luego tan solo tienes que llamarla. La llamarás de la siguiente manera:
	NombreFuncion();

¿Que es pasar por parámetros argumentos?

En ocasiones es posible que nos interese introducir valores dentro de nuestra función, para que dentro de ella se realicen operaciones, a esto se le conoce como el modelo de caja negra o BlackBox. Savemos la información introducida y veremos el resultado, pero no tenemos vision de lo que sucede dentro. Ejmplo

Modelo de caja contenedor o BlackBox (caja negra) para funciones

En el siguiente ejemplo realizaremos una función que sumara dos númmeros, cuando la llamemos introduciremos los números y ella los sumara y nos regresará el resultado.

<?php 
//creamos la función con dos parámetros r1 y r2
function Ejmplo($r1,$r2){

echo ($r1+$r2);
}
//llamamos a la función 
Ejmplo(10,20);
 ?>

parámetros por defecto

En ocasiones nos interesa que un paramtro tenga un valor inical por defecto, imagina que deseas sacar un Impuesto en una función, el impuesto no suele variar muy amenudo pero en ocasiones aumenta o disminulle.
  1. Creamos la función y un parametro lo dejamos con valor.
  2. cuando llamemos a la función el valor del segundo parametro no hace falta rellenarlo, pero en caso de necesitar modificarlo lo podemos rellenar.
  3. La segunda vez que la llamamos rellenamos su valor.
	
<?php 
function Impuestos($importe, $iva=1.21){

		return ($importe*$iva);

}

echo Impuestos(150) . "<br>";
echo Impuestos(150,1.07);
?>	

parámetros por valor y parámetros por referencia

Hasta ahora hemos pasado parámetros por valor introduciendo una variable en la función ($var), si deseamos pasar un parametro por referencia lo introduciremos con un ampersan (&$var). Imagen de pasos por parámetros en php por valor o por referencia

Cuando le pasamos una variable por valor a una función le estamos pasando tan solo el valor que tiene esa variable, pero no la estamos modificando.

Ejemplo. En el siguiente ejemplo le pasaremos la variable numero que está inicada en 10 y le diremos a la función que nos regrese su valor. Luego imprimiremos la variable otro vez para que se vea que su valor inicial no ha cambiado. El resultado de nuestra función será (10+1) 11 mientras que la variable numero continuará valiendo 10.

<?php 
$numero=10;
function pValor($num){

	$num++;
	return $num;
}

//pedimos que imprima la funcion
echo pValor($numero). "<br>";
//imprime la variable
echo $numero;
 ?>

Cuando le pasamos una variable por refencia le estasmos pasando la variable por lo que, si modifica su valor de origen.

Ejemplo. Ahora vamos a realizar la misma función que antes pero la paseremos por referencia, veras que al imprimir de nuevo numero ha canviado su valor, por lo que modifica la variable numero.

<?php 
$numero=10;
function pValor(&$num){

	$num++;
	return $num;
}

//pedimos que imprima la funcion
echo pValor($numero). "<br>";
//imprime la variable
echo $numero;
 ?>

LLAMAR UNA función PHP DESDE OTRO ARCHIVO PHP

Tenemos dos formas include y require, la primero llamaremos a la función y en caso de error el programa continua lanzándonos el error y require corta el flujo de ejecución al caer en el error.
include require
}
<?php
include(‘File.php');
 mifunction();
?>

								
<?php
require(‘File.php');
 mifunction();
?>
								

CONSTANTES

Una constante es un espacio en la memoria del ordenador que no puede cambiar durante la ejecución de código.

Como declarar una contaste en php

Tenemos que hacer un llamada a la función define y pasarle por parámetros el nombre de nuestra constante en mayúsculas y el su valor.

El nombre de las constantes no lleva el símbolo $ como el resto de las variables y su ámbito será global por defecto.

En versiones anteriores a php7 no podíamos almacenar arrays en constantes pero en la actualidad ya se pueden almacenar. La forma en que definimos una constante en php es la siguiente:

<?php 
define("MINOMBRE", "DAVID GIMÉNEZ PLAZA");
echo MINOMBRE;
 ?>

function if(isset(botonSubmit))

Se utiliza para desencadenar una acción cuando el usuario presiones un boton determinado de submit. Si tulizamos la contante super global $_POST['name'] podemos indicarle con que boton submit de nuestro html desencadena la acción. Es muy importante que pongamos el formulario a la escucha. <form action="nameFile.php" method="post">

Con el siguiente código realizaremos el calculo con php. Para poderlo activar tenemos que poner a la escucha nuestro form action="nameFile.php" method="post":


	
<?php 


	if (isset($_POST["envia"])) {
		$calculo= $_POST["accion"];
		$n1= $_POST["num1"];
		$n2= $_POST["num2"];
			echo $calculo;
				switch ($calculo){

					case 'sumar':
						echo ($n1+$n2);
					break;
					case 'restar':
						echo ($n1-$n2);
					break;
					case 'multiplicar':
						echo ($n1*$n2);
					break;
					case 'dividir':
						echo ($n1/$n2);
					break;
					default:
						echo "no Entra";
					break;

					}
				
			}
?>

Función is_null($var)

Utilizaremos es ta fución para valorar si la variable esta vacía o nula.La sitaxis será la siguiente :
 
if (is_null($var)) {
	# code...
}

			

Casting o refundición (conversión de tipos)

Es modificar el tipo de una variable por otro tipo. Imaginemos que tenemos una variable integer y de repente la tenemos que utilizar como varchar o String, realizaremos una refundición o casting con ella.

En php existen dos tipos de castin (casting inplicito y casting explicito)

(int)$var;

casting inplicito
php por defecto asigna el tipo de variable cuando la inicamos. Cuando cargamos unas "" pensará que es un string, 111 integer, 1.589 float, true bolean... Si por el camino modificamos de un string a un integer nos lo aceptará. Ejemplo:
<?php 
//inica como integer
	$n1=1; 
//pasa a string
	$n1="256";
//pasa a float
	$n1= 2.36987;
 ?>	

casting explicito

Imginrmod que desemos modificar el tipo de dato de forma forzada. Imagina que tu programa tene una variable con un string y otra con un tiguer, si las sumas daria fallo

.

<?php 
	$n1="100";
	$n2=50;
$sum= $n1 + $n2;
 ?>	
	

Para esto php nos da la opción de hacer un casting explicito



<?php 

	$n1="100";
	$n2=50;
echo $n1 + (int)$n2;
 ?>


	

POO Programacion Orienada a Objetos para PHP

La programación orientada a objetos es un paradigma de la programación, en el que nos dice que cada una de las parter de nuestro programa es un objeto que tiene sus propios métodos y atributos.

Oriented Object Programing OOP

El acronimo ingles de Programación Orientada a Objetos serrá OOP.

Que es un objeto

En la vida real estamos rodeados de objetos, un coche tiene una serie de atributos y métodos

  • Métodos (lo que hace): Acelera, frena, consumo combustible, gira....
  • Atributos (caracteristicas o propiedades): Color, puetas (4 0 5), peso, aire acondicionado...

Intentando que vemos un programa como la vida real conseguimos que el ser humano comprenda mejor lo que está haciendo, pudiendo crear un mapa de su programa.

En nuestro programa irémos creando nuestros objetos para luego reutilizarlos.

Que es una clase

Una clase es un modelo de objeto del que luego parten otros objetos.

Ejemplo. Un vehiculo seria una classe. Coche, moto, camion, autobus, vicicleta serian objetos que son veiculos, todos tienen ruedas, se conducen, aceleran, frenan...

Que es una instancia

Es reutilizar una clase para crear los diferentes objetos. Daremos una série de métodos genericos a la clase vehiculo que luego reutilizaremos para crear otros objetos(Coche, moto, camion, autobus, vicicleta...). Cada uno de los nuevos objetos serían una instancia de la clase principal o padre.

Como crear una clase

Construiremos nuestra clase padre dandole una serie de propiedes y métodos.

ejemplo de clase

<?php 
	
	class ClassName
	{
		
		function __construct(argument)
		{
			# code...
		}
	}	
?>

Como instanciar una clase

Cada uno de nuestros objetos creados como instancias de la clase ClassName tendran por defecto su propiedades y métodos.

Ejmplo de instancias

 <?php 
	$miObjeto1 = new ClassName();
	$miObjeto2 = new ClassName();
	$miObjeto3 = new ClassName();
	$miObjeto4 = new ClassName();
	$miObjeto5 = new ClassName();

  ?>
	
 

Como asignar propiedades y métodos a una clase

Las propiedades o atributos las generamos creando variables dentro de nuestra clase, mientras que los métodos creando funciones

En el siguiente ejemplo las variables sueldo, fechaAlta, fechaNaciemiento, departamento, telContacto, numeroHijos serían atributos. Mientras que Antiguedad sería un método. La función getdate() de php nos regresa la fehca de hoy, por lo que la fecha actual menos fechaAlta sera la antiduedad del Empleado.

<?php 

class ClassEmpleado {

	var $sueldo;			var $departamento;
	var $fechaAlta;			var $telContacto;
	var $fechaNacimiento;	var $numeroHijos;
	
	function Antiguedad($fechaAlta){
		$CalulaAnt = getdate()-$this->fechaAlta ;

		return $CalulaAnt;

	}
}

 ?>	

Cómo utilizar un método creado

Cuando instancioemos el objeto le indicaremos con -> que deseamos utilizar el método Antiduedad.

<?php 
$Administrativo = new ClassEmpleado();
$Administrativo->Antiguedad();
 ?>

Cómo acceder a una propiedad creada

Así nos regresaría el sueldo que tiene un empleado en este momento. Pero este valor aún no se lo hemos dado

<?php 
$Administrativo = new ClassEmpleado();
echo $Administrativo->sueldo;
 ?>

Que es un constructor de clase y como crearlo

Cada vez que nosotros realizamos una instancia a un objeto lo que estamos haciendo es llamar al constructor que es un método que se encargará de darle un estado inical a nuestros objetos. Para crearlo haremos una función con el nombre de nuestra clase dentro de la clase

En el siguiente ejemplo le indicaremos que todos nuestros empleados tendran un sueldo inical de 1200€

<?php 

class ClassEmpleado
{
	/* atributos*/
	var $sueldoInicial;			var $departamento;
	var $fechaAlta;			var $telContacto;
	var $fechaNacimiento;	var $numeroHijos;

	/*constructor le indicamos que por defecto 
	el sueldo de los empleados es de 1200€*/
	function ClassEmpleado()
	{
		$this->sueldoInicial=1200;

	}


	/* Metodo*/
	function Antiguedad($fechaAlta){
		$CalulaAnt = getdate()-$this->fechaAlta ;

		return $CalulaAnt;

	}
}

 ?>
	

Pasar por parámetros una propiedad a un método


<?php 

class Empleado
{

	var $sueldoInicial;			var $departamento;
	var $fechaAlta;				var $telContacto;
	var $fechaNacimiento;		var $numeroHijos;
	var $NombreEmpleado;
	function Empleado()   //constructor
	{
		$this->sueldoInicial = 1200;
	}
	function setNombre($Nombre){//metodo

			$this->NombreEmpleado=$Nombre;
			return $this->NombreEmpleado;
	}
}
//creamos un objeto de la clase ClassEmpleado
$empleado1 = new Empleado;

//Establecemos el nombre empleado con el 
//metodo setNombre
echo $empleado1->setNombre("David Giménez Plaza"). "<br>";
//imprimimos la propiedad sueldoIcial
echo  $empleado1->sueldoInicial;

 ?>	

Crear una clase que herede de otra

Que es la herencia
La herencia es la propiedad que tienen los objetos de adquiriri propiedades y métodos de otro objeto al que denominaremos objeto padre o clase padre.

Cuando existan dos objetos muy parecidos con bastantes propiedades en común nos esta apareciendo la necesidad de crear un objeto hijo que herede los métodos y propiedades comunes y cree los suyos propios.

Para crear una clase que herede de otra utilizaremos la palabra extends .

En el siguiente ejemplo Administrativo hereda las propiedades y métodos que tenega empleado.

	
class Administrativo extends Empleado
{
	
	function __construct()
	{
		# code...
	}
}


En el siguiente ejemplo un Administrativo es una empleado que tiene todas las propieadades y metodos de empleado y ademas una propiedad propia propipa (ordenadorAsignado).


<?php 
class Administrativo extends Empleado
{
	var $OrdenadorAsignado;
	function Administrativo($OrdenadorAsignado)
	{
			$this->OrdenadorAsignado=$OrdenadorAsignado;
	}
}

$Juan= new Administrativo(2020);

echo $Juan->OrdenadorAsignado;
 ?>	

Sobre escribir un método

En ocasiones puede ser que una clase hija le interese modificar uno de los métodos de la clase padre, en ese caso tan solo creamos una función con el nombre del método y lo sobreescribimos.

<?php 
class Administrativo extends Empleado
{
	var $OrdenadorAsignado;
	function Administrativo($OrdenadorAsignado)
	{
			$this->OrdenadorAsignado=$OrdenadorAsignado;
	}

	function setNombre($NombreyApellidos){//metodo

			$this->NombreEmpleado=$Nombre;

			return $this->NombreEmpleado;

	}

}

$Juan= new Administrativo(2020);

echo $Juan->OrdenadorAsignado;
echo "  " . $Juan->setNombre("Eufraso Perez Lopez");
 ?>

Reutilizar un metodo de la clase padre en la clase hija parent::

En ocasiones la clase padre puede terner metodos que necesitemos mejorar, para ellos llamaremos dentre la funcion del método hijo a la función del padre y ampliaremos nuestro código.



Modularización

Cuando diseñemos nuestro programas tendremos que dividirlo en modulos o clases que estén conectados entre ellos y trabajen como una unidad.

Cada modulo por si mismo debe poder hacer un tabajo de forma independiente pero se conectarán entre ellos hacidno una unidad. Un ordenador tiene un ventilador, una placa base, una cpu, un teclado. Cada elemento por si solo hace un trabajao y el conjunto de estos trabajos será un PC.

Si un modulo de nuestro programa cae el resto continuará ejcuatando procesos. Si el ventilador del ordenador se extropea el equipo continua trabajando, porlomenos hasta que se sobrecalienta.

Ambitos de las Variables

Encapsulación

Es una propiedad que tienen los objetos de mantenerse dentro de un ambito determinado si lo deseamos. Existirán objetos, métodos, atributos que nos interese no hacerlos accesible a otras clases y por esa razón los dejaremos dentro de una capsula. Esto protegera la integridad de nuestro programa en algunas ocasiones.

Por ejemplo una clase motor no necesitaría saber si la clase rueda esta más o menos inchada.

Modificadores de acceso

Para conseguir encapsular los métodos (funciones), atributos (variables de clase) existen 3 comanados a los que llamaremos modificadores de acceso, cada uno de ellos restringirá la accesibilidad de nuestro objeto un ambito determinado:

  • PUBLIC: Accesible desde cualquier punto del programa.
  • PRIVATE: Accesible desde la propia clase.
  • PROTECTED: Accesible desde la propia clase y sus hijos.

Ejemplo de encapsulación de propiedades o varialbes de clase


class Empleado
{

	private 	$sueldoInicial;			
	protected 	$departamento;
	private 	$fechaAlta;				
	public 		$telContacto;
	public 		$fechaNacimiento;		
	public 		$numeroHijos;
	public 		$NombreEmpleado;

	//Constrctor
	function Empleado(){
		$this->sueldoInicial = 1200;
	}
}	

Al encapsular nuestra varible dentro de la clase no podremos acceder desde otra parte de nuestro programa. La forma que tenemos de obtener datos de nuestra clase es crear un método get (obtener) o set (establecer).

Implementando estos métodos si accedemos será de una forma consciente.

En el siguiente ejemplo crearemos un método getter para obtener el valor de nuestra variable y un método setter para establecer su valor. Tal como ves el ambito de nuestras variables es protected (Solo dentro de la clase y de sus hijos). Un método getter normalmente tenedra un método reurn.


<?php 

class Empleado
{
protected $NombreEmpleado;
protected $edad;

//obtener Nombre
function getNombre(){

	return $this->NombreEmpleado;
}
//establece Nombre
function setNombre($Nombre){

	$this->NombreEmpleado=$Nombre;
}

}


$Miempleado = new Empleado();
$Miempleado->setNombre("Troloo troloo troloo");
echo $Miempleado->getNombre();


 ?>	

VARIABLES Y METODOS STATIC

Una variable o método estático es aquella que solo puede pertenecer a la clase que lo crea, no se podra llamar desde un objeto hijo. La podemos utilizar para aquellos métodos o varibles que deseemos matener seguros ante los demas.

Por ejemplo un impuesto no esgo que deba ser modificado por las clases hijas, la clase padre tiene que tenerlo y ser la uníca que puede modificarlo.

Para declarar una clase statica utilizaremos el operador static y cuando la llamemos utilizaremos la expresion ::

Crear una variable static:

static $SueldoInicial=1200;

Llamar a una variable static:

self::$SueldoInicial;

Modificar un método estático

classStaticName :: setmethod(9000000000000000 );

Ejemplo de variable estática

class Empleado
{
protected $NombreEmpleado;
protected $edad;
private static $SueldoInicial=1200;
var $Sueldo;
//obtener Nombre
function getNombre(){

	return $this->NombreEmpleado;
}
//establece Nombre
function setNombre($Nombre){

	$this->NombreEmpleado=$Nombre;
}
function getSueldo(){

	return $this->Sueldo+ self::$SueldoInicial;
}
}

$juan= new Empleado();
echo "<br>" . $juan::$SueldoInicial;

				

Métodos estaticos

Será un método que pertenecera a la clase principal y no a la instancia.


<?php 

class CarritoCompra
{
	protected $PVP =0;
	protected $IvaIgisOrIpsi="";
	protected $PvpImpuesto =0;
	static	  $descuento=95; 

	function __construct($tipoImpositivo)
	{
		$this->IvaIgisOrIpsi = $tipoImpositivo;

		if (strcasecmp($this->IvaIgisOrIpsi, "IVA")) {
					$this->PvpImpuesto = 1.21; 
		} if (strcasecmp($this->IvaIgisOrIpsi, "IGIS")) {
					$this->PvpImpuesto = 1.07;	
		} if (strcasecmp($this->IvaIgisOrIpsi, "IPSI")) {
					$this->PvpImpuesto = 1.04;
					
			}else{    $this->PvpImpuesto = 1;   }
	}


		static function setdescuento ($descpvp=10){
				return self::$descuento=$descpvp;
		}


		function setPvpArt1($pvpArt){

			$this->PVP += $pvpArt;
		}
		function setPvpArt2($pvpArt){

			$this->PVP += $pvpArt;
		}
		function setPvpArt3($pvpArt){

			$this->PVP += $pvpArt;
		}
		function getPVP(){
			$resultado =  ($this->PVP * $this->PvpImpuesto) - self::$descuento ;
			return  $resultado ;
		}

	}
	class Mercadona  extends CarritoCompra
	{
		

	}
//para modificar el método setdescuento tendremos que llamar 
al objeto CarritoCompra al ser un método estatico.
CarritoCompra::setdescuento(9000000000000000);

$comprador1 = new Mercadona("ipsi");
$comprador1->setPvpArt1(355000);
$comprador1->setPvpArt2(5000);
$comprador1->setPvpArt3(15000);

echo $comprador1->getPVP();

 ?>
	

ARRAYS O ARREGLOS

Un array es un conjunto de variables acumulado bajo una mascara principal, la forma mejor de representarlo es una tabla. El array mas utilizado en programación es varchar o text (cadena texto) que no deja de ser un conjunto de char (letras) Un array inicia siempre en la posición 0.

Arrays indexados

Son aquellos que tienen un indice para recuperar los valores, suelen ser los mas comunes. El indice de un array iniciará en 0.

Este es un ejemplo de array indexado con el que formamos una palabra:


$MiArray = array('h','o','l','a');
	echo $MiArray[0] ;  
	echo $MiArray[1] ;  
	echo $MiArray[2] ;  
	echo $MiArray[3] ;   
	
						

Tambien lo podemos declarar así, php asignara a cada uno el indice inicando desde 0:

$MiArray[]= "david";
$MiArray[]= "junito";
$MiArray[]= "perico";
$MiArray[]= "palote";

						

Otra forma de declarar un array indexado es la siguiente, a mí me parece la más simple:

	
$MiArray = ["multiplicar", "dividir", "restar", "sumar"];

Array asociativo

Php nos permite asociar las posiciones del array a nombres, podremos utilizar cadenas de texto como localizador de la posición. Las cadenas utilizadas no pueden tener espacios intermedios y es muy conveninete no utilizar acentos.

Para qué utilizamos los array asociativos

Una de las grandes utilidades que tiene php es conectar con BBDD, por lo que cada asocición puede ser vinculada a los nombres de columna. Algo que más adelante podremos ver que resulta muy util.

Este es un ejmplos de array asocitivos

Le indicaremos que la posición ES guarda España, la posición I guardará INGLATERRA y la posción EEUU guardará EESTADOS UNIDOS.

$MiArray = ("ES"=>"ESPAÑA", "I"=>"INGLATERRA", "EEUU"=>"ESTADOS UNIDOS");	
echo $MiArray["I"];				

Función para confirmar si una variable es un array is_array()

Es una función boleana que nos indicará si una variable es un array o no.
function ESTEArray(){
	$MiArray= array("ES"=>"ESPAÑA", "EEUU"=> "ESTADOS UNIDOS", "CH" =>"CHINA");

	
		if (is_array ($MiArray)){
	echo "Es un array";
}else{
	echo "No es un array";
}	
	

return $MiArray["CH"];
}				
							

Arrys muldimensionales

Lo utilizarimos para meter un array dentro de cada indice creado. La mejor representación que tenemos para esto es una tabla. En el sigueinte ejemplo existe un array asociativo con (Nombre, Primer_Apellido, Segundo_Apellido) y:
  1. Dentro del indice Nombre tenemos un array con (Juan, Manoli, Oscar).
  2. Dentro del indice Primer_Apellido tenemos un array con (Perez, Gimenez, De la Cosa)
  3. Dentro del indice Segundo_Apellido tenenos un arra con (Muñoz, Lopez, Colza).

En el caso de que desearamos un array tridimensional dentro de Juan introduciriamos otro array.

Representacion de un array asociativo de 2 dimensiones
Nombre Primer_Apellido Segundo_Apellido
Juan Perez Muñoz
Manoli Gimenez Lopez
Oscar De La cosa Colza

Ejemplo de Array de 2 dimensiones



<?php 
function Array2D(){

$EjmAray2D = Array ( 
		"Nombre"=>Array("Juna", "Manoli", "Oscar"), 
		"Primer_Apellido" => Array( "Perez", "Gimenez", "De La Cosa"), 
		"Segundo_Apellido"=>Array("Muñoz", "Lopez", "Colza")
					);

// Buscará el array Primer Apellido y dentro de el
// la fila 2, recuerda que un array inicia en 0

echo $EjmAray2D["Primer_Apellido"][1];

}

Array2D();
 ?>

Ejemplo de array asociativo

		
			
<?php
	$arrayAsociativo = [
		"diasSemanda" => ["Lunes", "Marte", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"],
		"Meses" => ["Enero", "Febreo", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Nobiembre", "Diciembre"],
		"Años" => [2020, 2021, 2022, 2023, 2024]
	];

	echo $arrayAsociativo["diasSemanda"][0];
?>

		
	

Bucle forEach para recorrer arrays asociativos

Recorrer un array indexado es algo comun en cualquier lenguaje de programación, pero php posee arrays asociativos y esto es diferente a lo visto en otros lenguajes. Los podremos utilizar e conexiones a BBDD.

En el siguiente ejemplo recorreremos el array y a cada vuelta de bucle imprimiremos el nombre lave ($key) y su valor ($value)

 <?php 
function MisClientes(){
	$NombreDelArray = array("Nombre" =>"Lolo",
				"Apellidos"=>"Hernandez Gomez",
				"Edad"=>50 );

		foreach ($NombreDelArray as $Key => $value) {
			echo "A la clave <strong> $Key</strong> le 
			corresponde el valor <strong>$value</strong> <br>";
		}

}

MisClientes();

  ?>
							
esquema de como utilizar un foreach para recorrer un array de dos dimensiones

Recorrer un arry de dos dimensones.

Utilizando la función var_dump puedes recorrer un array bidimensional. Pudes utilizarla directamente sin introducirla en un forecha como lo he hecho yo, pero te lo muestra todo seguido y para darle un break of line (<br>) he preferido meterlo en un foreach.

No utilizar la función each() porque esta obsoleta.


<?php 
function Array2D(){

 
$equipo_futbol = array
			(
			"Nombre"=>array("Juan ","Perico","Lupe"),
			"Primer_Apellido"=>array("Suarez"),
			"Segundo_apellido"=>array("Torres","Terry","Etoo")
			);
 foreach ($equipo_futbol as $key=>$value) {
	
	echo var_dump($equipo_futbol[$key]) . "<br>";

 }


}
Array2D();
 ?>
	

Qué es MySql

Es un gestos de BBDD (bases de datos) relacional, multihilo y multiusuario. Es un gestor de BBDD gratuito con open source (código abierto) y muy utilizado hoy en día. El lenguage con el que trabaja el SQL (Estructed Query Lengauage). Por esta razón es inprescindible aprender SOL para trabajar con PHP.
Relacional
La información se reparte en varias tablas relacionadas enre si.
Multihilo
Las BBDD soportan varios hilos de ejecución a la vez o varios procesos de consulta en simultaneo.
Multiusuario
Puede ser utilizado por varios usuarios al mismo tiempo. Podremos dar a cada usuario una contraseña determinada y un nivel de acceso (es posible que a determinados usuarios no le permitamos borrar tablas).

Conectar a un servidor en local

Uno de lo usos más frecuentes paro los que utilizaremos la conexion a una BBDD desde una pagina web es para obtener, insertar o eliminar registros. Para ello conectaremos utilizando php nuestro formulario a la BBDD y generaremos consultas o querys utilizando SQL.

Para crear una conexion será inprescindible:

  • Saber la dirección de nuestra BBDD.
  • Conocer el nombre de nuestra BBDD.
  • Nombre Usuario BBDD
  • Contraseña BBDD.
  • Lenguaje en el que se regresa la respuesta.

Yo estoy trabajando en local con wamp, por lo que por defecto el acceso del wamp es.

  • Dirección: LocalHost
  • Usuario: Si no lo has cambiado serian Root
  • Contraseña: Si no la has cambiado será "".
  • Nombre de BBDD: La que crees para hacer estas practicas.
  • Lenguaje en el que nos regresa la consulta: En nuestro caso utf8 (español).

Formas de conecctar a una BBDD

Existen dos formas de conectar a una BBDD:

Si programamos Orientado a Obejetos Clase Mysqli

métodos

  • mysqli_connect( $host, $user, $password) Realiza la conexión a la BBDD
  • mysqli_connect_errno()confinar conexión correcta
  • mysqli_select_db($conect, $database) or die ("string") confirma que la base de datos escogida existe
  • mysqli_set_charset($conect, $db_lang )indicaremos el lenguaje utf8 será español
  • mysqli_query($conect,$sql) realiza la consulta a la tabla de la bbdd
  • mysqli_fetch_row($resultset) cada vez que es llamada regresa un fila de la respuesta obtenida. En caso de no quedar respuesta nos regresará un falso
  • mysqli_close($conect) cierra la conexión para no perder recursos
  • mysqli_fetch_aray($resulset, MYSQL_ASSOC)Nos permite trabajar con arys asocitivos. mysqli_fetch_row obtenia con array indexado con los datos de la fila de la consulta mysql. Pues con mysqli_fetch_aray obtendremos un aray asocitivo que nos permitira identificar cada una de las columnas.
  • mysqli_affected_rows($link) Nos regresa el número de filas afectadas por una conuslta de inserción, eliminacion o actualización.
  • mysqli_real_space_string($link, $input) La utilizamos para evitar inyecciones sql en nuestro código. Para que funcione las variles que absorben el $_POST["name_input"] han de declararse tras la conexión a la BBDD.

Conectar a una BBDD paradigma funcional con mysqli

  1. Conectamos a la BBDD, utilizaremos la funcion mysqli_connect($host,$user, $pasword, $database) y le pasaremos por parametros :
    1. $host : Direccion de nuestra BBDD
    2. $user : Nombre usuario.
    3. $password: Clave acceso del usuario.
    4. $database: Nombre de la BBDD
    5. $lenguage="utf8" : Para generar caracteres en español.
  2. Primero indicamos las variables y conectamos al servidor.
    $host = 'localhost'; 
    $user = 'root';			
    $password = '';			
    
    $database = 'apunte_php'; 
    $lenguage="utf8";
    
    
    	$link= mysqli_connect($host, $user, $password);
    
  3. En caso de no conectar avisanos y salte.
    	
    	if (mysqli_connect_errno()) {
    
    			echo  "no has podido conectar a la bbdd";
    
    			exit();
    		}
    
  4. Conectar a la BBDD y en caso que no este nuestra base avisame.
    	mysqli_select_db($link, $database) or die ("no esta la BBDD");
    
  5. Le selecionamos el idioma con el que será la respuesta de nuestra consulta
    mysqli_set_charset($link, $lenguage);	
    
  6. Creamos una consulta con la BBDD utilizando la funación mysqli_query($link, $query) y almacenaremos el resultado en una variable $Miquery que será un recordset donde almacenaremos la informacion obtenida.
    $query = "SELECT * FROM alumnos";
    	
    $result = mysqli_query($link, $query);
    		
    								
  7. Obtener los datos almacenados en nuestra variable dato con la función mysqli_fetch_row($result), luego lo pasamos por un for para imprimir todas las celdas de la fila, utilizaremos la función count($var) para saber el final del array.
    	
    
    	$dato=  mysqli_fetch_row($result);
    
    for ($i=0; $i <count($dato) ; $i++) { 
    		echo $dato[$i] . "<br>";
    	}
    

Recorrer mysqli_fetch_row()

Anidaremos dos bucles, un for dentro de un shile. Le dirémos como condición a un bucle while que mientras existan filas ($dato = mysqli_fetch_row($result)) == true ejecute el codigo, si existe fila genera un break y entra en el for al que le decimos que se ejecute alta final del array $i <count($dato). Al entrar en el for iprime la posicion del array que toca echo $dato[$i] y hace un break.

	while ($dato = mysqli_fetch_row($result)){
		echo "<br>";		

		for ($i=0; $i <count($dato) ; $i++) { 

			echo $dato[$i] . "<br>";
		
			};
	}	

Si deseamos recorrer nuestro recorset como array asociativo mysqli_fetch_array($result, MYSQL_ASSOC)

Es posible que te resulte más lógico nombrar los datos por su nombre fila, para esto utilizaremos mysqli_fetch_array() y selecionaremos las filas que deseamos mostrar. Esto mismo lo podríamos hacer en el query indicandole las filas que desamos que nos regrese, pero si os resulta más como así, lo podeis hacer. Para gustos los colores.

<?php 
	while ($dato = mysqli_fetch_array($result, MYSQL_ASSOC)){

		echo"<br>" . $dato["Nombre"] . "<br>";
		echo"<br>" . $dato["ciudad"] . "<br>";
		echo"<br>" . $dato["tipo_articulo"] . "<br>";
		echo"<br>" . $dato["fecha_compra"] . "<br>";
	}
?>	

Cerramos la conexion a al BBDD

mysql_close($link);

El código completo para conectar a auna BBDD sería el sigiente, con el podras recurar el resultado en una tabla.


<?php 


$host = 'localhost';
$user = 'root';
$password = '';

$database = 'apunte_php';
$lenguage="utf8";


	$link= mysqli_connect($host, $user, $password);
	if (mysqli_connect_errno()) {
			echo  "no has podido conectar a la bbdd";
			exit();
		}

		//si no esta la bbdd abisame
	mysqli_select_db($link, $database) or die ("no esta la BBDD");
	//caracteres castellano
	mysqli_set_charset($link, $lenguage);

	$query = "SELECT * FROM clientes";
	$result = mysqli_query($link, $query);

	
	//Mientras que existan filas en el 
	//recordset imprime los datos de las celdas.
	echo "<table>";
	$contador=0;
	while ($dato = mysqli_fetch_row($result)){

	

		echo "<tr>";
					

			for ($i=0; $i <count($dato) ; $i++) { 

				echo "<td>".$dato[$i] ."</td>";
			
			}
		echo "</tr>";
	}
	echo "</table>";
	mysqli_close($link);

?>
							

No utilizar la función mySqul_conect, esta obsoleta desde las versiones php 5.5 por lo que tenemos que utilizar mysqli_connect

CONECTAR BBDD PARDIGNA ORIENTACIÓN OBEJETOS CON MSQLI

				
			<?php

			$link = new mysqli("localhost", "root", "", "formularios");

			if( $link->connect_errno){
				echo "error de conexion a BBDD" . $link->connect_errno;
			};

			$link->set_charset("utf8");

			$sql = "SELECT * FROM paises";

			$resulset = $link->query($sql);

			if($link->errno){
				echo "Consulta sql incorrecta". $link->errno;
			}

			echo "<table>
					<thead>
						<tr>
							<th>CONTINENTE</th>
							<th>PAÍS</th>
							<th>CAPITAL</th>
						</tr>
					</thead>
					<tbody>



			";

			while($fila = $resulset->fetch_assoc()){
				echo "<tr>";
				echo "<td>". $fila["CONTINENTE"] . "</td>";
				echo "<td>".$fila["PAÍS"]. " </td>    ";
				echo "<td>".$fila["CAPITAL"]. "</td>";
				echo "</tr>";
			}<

			echo "</tbody></table>";

			$link->close();

			?>		
			
			

stdClass() para crear objetos literales para JSON

Supongo que habreis visto las variables literales de JS pues con la clase stdClass() crearemos su homólogo en php.

		

	$datisForm = new stdClass();

	$datisForm	->	nombre 		= "Manuel";
	$datisForm	->	apellidos 	= "Carrascosa de la Blanca";
	$datisForm	->	web 		= "http://mjcarrascosa.com";
						

Función json_encode

Utilizatemos esta función para para convertir un objeto literal stdClass() en un JSON.

	
	$datisForm = new stdClass();

	$datisForm	->	nombre 		= "Manuel";
	$datisForm	->	apellidos 	= "Carrascosa de la Blanca";
	$datisForm	->	web 		= "http://mjcarrascosa.com";

	$json =  json_encode($datisForm);

	return $json;

						

Crear una consulta de busqueda

A pesar de que el código eixste no podras verlotrabajando en esta página porque esta alojada en bloguer en lugar de mi propio hosting. Bajo te dejo el código tanto de PHP, como HTMl y css.

Crearemos un formularaio con html

En el método action de la etiqueta form le indicamos que que la ación de nuestro php repercutira sobre nuestra misma página o lo que es lo mismo que lo vas ha ver en tu propia pagina por lo que le tendras que poner su host. Y como método será get.


				

<form action="index.php" method="get">

	<label>Texto buscado: 
		<input type="tex" name="Buscar" list="FORMAPAGO">
		</label>
			<datalist id="FORMAPAGO">
					<option>CONTADO</option>
					<option>TARJETA</option>
					<option>APLAZADO</option>
			</datalist>
			<input type="submit" name="Ir" value="Filtrar">

	</form>

Ahora cargamos nuestro css

table,tr, td{
	margin: 10px auto;
	border-collapse: collapse;
	border-style: solid;
	border-width: 2px;
	border-color: blue;
}
td{
	text-align: center;
	width:70px;
	padding: 5px;
}	

Nuestro php para hacer una consulta de busqueda he insertarla en una tabla



<?php 

$host = 'localhost';
$user = 'root';
$password = '';

$database = 'apunte_php';
$lenguage= "utf8";

				$palabraBuscada= $_GET["Buscar"];

				$link = mysqli_connect($host, $user, $password);

						if (mysqli_connect_errno()) {
							echo "No te has conectado";
							exit();
						}

				mysqli_select_db($link, $database) or die ("la Base selecionada no existe");
				mysqli_set_charset($link, "utf8");

				$query = "SELECT * FROM `pedidos` WHERE `FORMA DE PAGO` = '$palabraBuscada'";


				$result = mysqli_query($link, $query);

				echo "<table>";

							while ($dato= mysqli_fetch_row($result)) {
								echo "<tr>";
										for ($i=0; $i < count($dato); $i++) { 
											echo "<td>" . $dato[$i] . "</td>";
										}

								echo "</tr>";
							}

				echo "</table>";
				mysqli_close($link);


 ?>

	

Formulario de registro

Un formulario de registro es aquel que utilizamos para que un usuario cargue una serie de datos en nuesra BBDD. Por lo que para hacer uno en primer lugar realizaremos una serie de inputs y una vez rellenos un submit que bolcará nuestros datos en la BBDD utilizando la instruccion SQL ISERT INTO

Instruccion SQL requerida

INSERT INTO NombreTabla
(fila1, fila2, fila3...)
VALUES
(valor1, valor2, valor3)

Ejemplo de inserción de valores en una tabla, podemos inserta valores en todas las columnas de nuestra fila o en alguna de ellas como acabo de hacer yo.

INSERT INTO  materiales_construcción 
(`categoria`,`MATERIAL`,`PROVEEDOR`) 
VALUES  
("Enfoscados", "Mortero monocapa blanco", "BRICOMAT")

Fúncion php para insertar registros en una BBDD

Una de las consultas más abitulaes con php es la insercion de datos en una BBDD y para ello tenemos que manejar las consultas de insción de datos


function ConsultaDeinsercion(){
	$host= 'localhost';
	$user='root';
	$password='';

	$database="apunte_php";
	$lenguage= "utf8";

		//conecxion a la bbdd
		$link = mysqli_connect($host, $user, $password);
			if (mysqli_connect_errno()) {
				echo ("no estas conectado a la BBDD");
				exit();
					}
		mysqli_select_db($link,$database) 
			or die ("la tabla selecionada no existe");



		mysqli_set_charset($link, $lenguage);
		

$query=" INSERT INTO materiales_construcción 
					(`categoria`, 
					`MATERIAL`, 
					`PROVEEDOR`, 
					`DIRECCION`, 
					`TEL`,
					`CANTIDAD`, 
					`PRECIO UNITARIO`, 
					`PRECIO SIN IVA`, 
					`PRECIO CON IVA`,
					`COSTE POR METRO`,
					`PRECIOS`)
	 VALUES 
					('Albañileria', 
					'puntal escayola', 
					'CASS, SL', 
					'AVENIDA LA GUARDIA 23', 
					625252525, 
					10, 
					12, 
					12, 
					12*1.21, 
					0,
					12*20*1.21)";


		$result = mysqli_query($link, $query);


}

Inserta datos desde un formulario a una BBDD

En la siguiente practica crearemos un formulario que utilizaremos para volcar datos en nuestra BBDD

Consulta de insercion de datos en una Tabla

En el siguiente código utilizaremos php para volcar los datos de nuestros inputs en la tabla materiales_construcción de nuestra BBDD apunte_php, como servidor utilizare loclahost y como contraseña acceso a BBDD nulo. El lenguaje que utilizaré es español españa (utf8). Cuando abramos nuestra etiqueta form recurda recurda ponerle en method el atributo post y en action la hoja donde esta el código de conexion a tu php en mi caso BackEnd.php (form method="post" action="BackEnd.php")

Por ultimo creará una tabla indicandonos los datos introducidos.

ConsultaDeinsercion();
function ConsultaDeinsercion() {
  $host= 'localhost';
  $user='root';
  $password='';

  $database="apunte_php";
  $lenguage= "utf8";
		
  //conecxion a la bbdd
  $link=mysqli_connect($host, $user, $password);
		if (mysqli_connect_errno()) {
			echo ("Servidor caido");
			exit();
					}
	mysqli_select_db($link,$database) 
		or die ("la tabla no existe");



	mysqli_set_charset($link, $lenguage);
		
$categoria = $_POST['categoria'];
$MATERIAL  = $_POST['MATERIAL'];
$PROVEEDOR = $_POST['PROVEEDOR'];
$DIRECCION = $_POST['DIRECCION'];
$TEL	   = $_POST['TEL'];
$CANTIDAD  = $_POST['CANTIDAD'];
$PRECIO_UNITARIO = $_POST['PRECIO_UNITARIO'];
$PRECIO_sin_iva  = $_POST['PRECIO_sin_iva'];
$PRECIO_con_iva  = $_POST['PRECIO_con_iva'];
$COSTEPORMETRO   = $_POST['COSTEPORMETRO'];
$PRECIOS  		 = $_POST['PRECIO'];


	$query=" INSERT INTO materiales_construcción 
					(`categoria`,
					 `MATERIAL`,
					 `PROVEEDOR`,
					 `DIRECCION`,
					 `TEL`,
					 `CANTIDAD`,
					 `PRECIO UNITARIO`,
					 `PRECIO SIN IVA`,
					 `PRECIO CON IVA`,
					 `COSTE POR METRO`,
					 `PRECIOS`
					 )
			 VALUES 
					('$categoria' , 
					 '$MATERIAL', 
					 '$PROVEEDOR', 
					 '$DIRECCION', 
					 '$TEL',
					 '$CANTIDAD', 
					 '$PRECIO_UNITARIO', 
					 '$PRECIO_sin_iva', 
					 '$PRECIO_con_iva',
					 '$COSTEPORMETRO',
					 '$PRECIOS'
					 )";


		$result = mysqli_query($link, $query);
		if ($result==false) {
			echo "Error en la consulta realizada";
		}else{
			echo "<h2> 
Los registros han sido introducidos el material  
		<table><tr>
			<td>$categoria</td>
			<td>$MATERIAL</td>
			<td>$PROVEEDOR</td>
			<td>$DIRECCION</td>
			<td>$TEL</td>
			<td>$CANTIDAD</td>
			<td>$PRECIO_UNITARIO</td>
			<td>$PRECIO_sin_iva</td>
			<td>$PRECIO_con_iva</td>
			<td>$COSTEPORMETRO</td>
			<td>$PRECIOS</td>																 
		</tr></table></h2>";
		}
}

	

Eliminar registros desde un formulario DELETE

Necesitamos una instrucción SQL para eliminar filas que cumplan una derminada condicion

DELETE FROM nombreTabla WHERE campo = Criterio;
						

Crearemos un pagina neva con una nunción identica a la anterior pero en la consulta SQL introduciremos un DELETE.

Inyección SQL

Si no protegemos los datos que introduce un usuario en nuestro formulario. Alguien puede introducir una cadena sql y obtenr o borrar datos de nuestra BBDD. Si alguien introduce en un formularo que utilizamos para hacer un filtro la siguiente instruccion ' or 0=0 ´ obtendria todos los datos de neustra BBDD. Por al absorber los datos del input e introducirlos en la cosulta SQL estomos diciendole. SELECT * FROM operadores_moviles WHERE `operador` = "" or 0 = 0 . En el caso de ser un formulario para eliminar registros con la misma instrucción podria eliminar todos los registros de nuestra bbdd.

Par ello utilizaremos el método mysqli_real_space_string($link, $input) Que escapara de los caracteres que no sean de texto formal.

Consultas preparadas con mysqli

Podemos evitar la inyecciñon de código utilizando este paquete de métodos:

    Metodos para evitar inyecciñon SQL
  1. mysqli_prepare($link , $sql)
  2. mysqli_stmt_bind_param($resulset , "tipo dato parametros" , $param_1 , $param_2, $param_3, $param_4 ... )
  3. mysqli_stmt_execute($resulset)
  4. mysqli_stmt_bind_result($resulset, $fila1, $fila2, $fila3 ...)
  5. mysqli_stmt_fetch($result)
  6. mysqli_stmt_close($result)

Actualizar registros de una tabla

Es posible que tengamos que acceder a un registro determinado y modificar su contenedo o a varios de ellos y modificarlos.
UPDATE nombreTabla SET campo = valor  WHERE campo = Criterio;

UPDATE practicaformulario SET `MENSAJE` = 'new Mensaje' WHERE `NOMBRE`='david'

Ejercico de formulario que inserta registros, busa registros, los seleciona y los modifica.

En el siguiente ejercicio creamos un formulario. Ese formulario busca registros en nuestra BBDD. Cuando selecionesmo el botón buscar creará una array que a su vez creará una tabla con los resultado de la busqueda. Seleciona. Esa tabla tendra un check box por cada registro. Selecionaremso el que desamos modificar. Rellenaremos los datos que deseamos cargar y tocaresmo el boton modificar o el botón borrar.

FORMULARIO CRUD

Un CRUD es un formurario que podemos utilizar para crear,leer, actulizar y eleminar registros (Create, Read, Update, Delete).

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital