Taller PHP


Modelo de estructura para intruducir código PHP en HTML:
<html>
  <head>
    <title>hola mundo</title>
  </head>
  <body>
    <h1>incluir código PHP en html</h1>
    <p><? acá va el código PHP ?></p>
  </body>
</html>


Variables:
$hola = "hola mundo";

Ejemplo "Hola Mundo" usando variable:
<? $hola = "hola mundo"; ?>
<html>
  <head>
    <title><? echo $hola; ?></title>
  </head>
  <body>
    <h1>incluir código PHP en html</h1>
    <p><? echo $hola; ?></p>
  </body>
</html>


Lugar para colocar los archivos de tu página Web en XAMPP:
c:\xampp\htdocs\

Nota: La página se llama así: http://localhost/index.php

Ejemplos de declaración de variables:
<?
  $miVariable1 = "hola, esta es una cadena de texto";
  $miVariable2 = 30;
  $miVariable3 = array( 'hola', 'este', 'es', 'un', 'array' );
  $miVariable4 = true;
?>


Crear una variable global:
<?
  global $miGlobal = "esta es una variable global";
?>


Constante:
<?
  define('HOLA', 'Hola Mundo');
?>


Ejemplo "Hola Mundo" usando constante:
<? define('HOLA', 'Hola mundo'); ?>
<html>
  <head>
    <title><? echo HOLA; ?></title>
  </head>
  <body>
    <h1>incluir código PHP en html</h1>
    <p><? echo HOLA; ?></p>
  </body>
</html>


Estructura de control de flujo if:
<?
if ( $fecha == '04.02.2008' ) {
  echo "Hoy es 4 de Febrero de 2008";
}
?>

Estructura de control de flujo if...else:
<?
if ( $usuario != false ) {
  echo "Bienvenido de nuevo $usuario";
} else {
  echo "Hola, si aún no estas registrado puedes hacerlo ...";
}
?>

Estructura de control de flujo if...elseif:
<?
if ( $hoy == 'Lunes' ) {
  echo 'Hoy es Lunes, tenemos carne para almorzar';
} elseif ( $hoy == 'Martes' ) {
  echo 'Hoy es Martes, tenemos fideos para almorzar';
} elseif ( $hoy == 'Miercoles' ) {
  echo 'Hoy es Miercoles, tenemos estofado para almorzar';
} elseif ( $hoy == 'Jueves' ) {
  echo 'Hoy es Jueves, tenemos pizza para almorzar';
} elseif ( $hoy == 'Viernes'{
  echo 'Hoy es Viernes, tenemos tarta para almorzar';
} elseif ( $hoy == 'Sabado'{
  echo 'Hoy es Sabado, tenemos ravioles para almorzar';
} else ( $hoy == 'Domingo'{
  echo 'Hoy es Domingo, no almorzamos :(';
}
?>

Estructura de control de flujo switch:
<?
switch($hoy) {
  case 'Lunes':
    echo 'Hoy es Lunes, tenemos carne para almorzar';
    break;
  case 'Martes':
    echo 'Hoy es Martes, tenemos fideos para almorzar';
    break;
  case 'Miercoles':
    echo 'Hoy es Miercoles, tenemos estofado para almorzar';
    break;
  case 'Jueves':
    echo 'Hoy es Jueves, tenemos pizza para almorzar';
    break;
  case 'Viernes':
    echo 'Hoy es Viernes, tenemos tarta para almorzar';
    break;
  case 'Sabado':
    echo 'Hoy es Sabado, tenemos ravioles para almorzar';
    break;
  case default:
    echo 'Hoy es Domingo, no almorzamos :(';
    break;
}?>

Ejemplo de formulario con estructura de control de flujo:
<html>
  <body>
    <h2>Deja tu opinión</h2>
<form action="" method="post">
<? If ($usuario == true) {?>
<p> Sesion iniciada como <a href="">just</a><a href="">Cerrar sesión.</p>
<? } else { ?>
<label>  <input type="text" name="nombre"/>Nombre real (obligatorio)</label>
<label>  <input type="text" name="email"/>Email (no será publicado) (obligatorio)</label>
<label>  <input type="text" name="web"/>Sito Web</label>
   <? } ?>
   <!–-- TEXTAREA PARA EL CUERPO DEL COMENTARIO -->
<textarea name="cuerpo_comentario"></textarea>
<input type="submit" value="ENVIAR COMENTARIO" />
</form>
 </body>
</html> 


Operadores aritméticos:
+     Adición de valores.
-     Resta de valores.
*     Multiplicacion de valores.
/     Division de valores.
%     Resto de una division.
++    Incrementa en una unidad.
--    Resta en una unidad.


Operadores de asignación:
=     Asigna al primer miembro el segundo. Es decir $a = 4, le asigna el valor 4 a $a.
+=    Asigna al primer miembro la suma del primer miembro con el segundo.
$a =4; $b = 5; $b += $a, ahora $b pasa a valer 9.
-=    Asigna al primer miembro la resta del primer miembro con el segundo.
*=    Asigna al primer miembro la multiplicacion del primer miembro con el segundo.
/=    Asigna al primer miembro la division del primer miembro con el segundo.
%=    Asigna al primer miembro el resto de la division del primer miembro dividido el segundo.
.=    Concatena el primer miembro con el segundo y se lo asigna al primero.
Es decir $a = ‘Hola ‘; $b = ‘Mundo’. $a .= $b; ahora $a = ‘Hola Mundo’;


Operadores de comparación:
==    Comprueba si dos valores son iguales, por ejemplo if ($a == $b) si $b es igual $a, el condicional
devuelve TRUE y continua ejecutando el script.
!=    Comprueba si dos valores son distintos.
>     Comprueba si el valor del primer miembro es mayor al segundo, por ejemplo if ( $a > 5), va a
devolver TRUE para todos aquellos valores de $a mayor a 5.
<     Comprueba si el valor del primer miembro es menor al segundo.
>=    Comprueba si el valor del primer miembro es mayor o igual al segundo.
<=    Comprueba si el valor del primer miembro es menor o igual al segundo.


Operadores lógicos:
!     Operacion de negativa, por ejemplo dentro de un condicional se puede realizar todo tipo de operaciones y funciones, una que veremos mas adelante es una funcion propia de php que devuelve TRUE o FALSE dependiendo si la variable esta vacia, entonces si nosotros preguntamos if (!empty($a)) va a devolver si $a = 5, TRUE, ya que empty($a) devuelve FALSE, pero !empty($a) seria como preguntar Si $a NO esta vacia.
and   Comparador Y. Dentro de un condicional es necesario que ambas condiciones se cumplan es decir if ( $a == 4 AND $b == 5 ) continua con el script.
or    Comparador O. Dentro de un condicional es necesario que se cumpla una de las dos condicione, es decir if ( $a == 4 OR $b == 5 ) con que $a = 4 o $b = 5 el script va a continuar su ejecucion.
xor   Va a devolver verdadero si al menos una de las dos condiciones es verdadera pero no ambas.

&&    Es igual que el and.
||    Es igual que el or.


Estructura while:
Sintaxis:
<code>
<?
  while ( condicion ) {
    [instrucciones]
  }
?>
</code>

Ejemplo:
<code>
<?
  $c = 1;
  while ( $c < 11) {
    echo "$c <br>";
    $c++;
  }
?>
</code>

Estructura do while:
Sintaxis:
<code>
<?
  do {
    intrucciones
  } while (condición)
?>
</code>

Estructura for:
Sintaxis:
<?
  for( expresión 1; expresión 2; expresión 3 ) {
    [instrucciones]
  }
?>

Sintaxis alternativa:
<?
  for ( expresión 1; expresión 2; expresión 3 ):
    [instrucciones]
  endfor;
?>

Ejemplo:
<?
  for ($c = 1; $c < 11; $c++) {
    echo "$c <br />";
  }
?>

Estructura foreach:
Sintaxis:
<?
  foreach ( expresión1 as expresión2 ) {
    [instrucciones]
}
?>

Ejemplo 1:
<?
  // definimos el arreglo con los días de la semana
  $semana = array( 'lunes','martes','miércoles',jueves','viernes','sábado','domingo' );
  // mostrarnos el mensaje inicial
  echo "Los días de la semana son:<br />";
  // comienza el bucle
  foreach ( $semana as $dia ) {
    echo "$dia <br />";
  }
?>

Ejemplo 2:
<?
  $noticia = array(
    'titulo' => 'Php Clase 5 - Bucles',
    'cuerpo' => 'Acá va el contenido de la clase 5 de php, mucho texto, mucho mucho',
    'autor' => 'Justi'
  );
?>

<?
  foreach ( $noticia as $valor ) {
    echo "$valor<br />";
  }
?>

Ejemplo 3:
<?
  $noticia = array(
    'titulo' => 'Php Clase 5 - Bucles',
    'cuerpo' => 'Acá va el contenido de la clase 5 de php, mucho texto, mucho mucho',
    'autor' => 'Justi'
  );
?>

<?
  foreach ( $noticia as $indice => $valor ) {
    echo "$indice: $valor<br />";
  }
?>

Ejemplo 4:
<?
  $noticia = array(
    'titulo' => 'Php Clase 5 - Bucles',
    'cuerpo' => 'Acá va el contenido de la clase 5 de php, mucho texto, mucho mucho',
    'autor' => 'Justi'
  );
?>

<?
  foreach ( $noticia as $indice => $valor ) {
    if ( $indice == 'titulo' ) { echo "<h1>$valor</h1>"; }
    if ( $indice == 'cuerpo' ) {echo "<p>$valor</p>"; }
    if ( $indice == 'autor' ) {echo "<span>$valor</span>"; }
  }
?>


¿Cómo armar un formulario para que sea procesado por PHP?
Form:
<form action="contacto_script.php" method="post" id="contacto"></form>

Label e Inputs:
Ejemplo 1:
<label for="input_campo">Nombre Campo</label>
<input id="input_campo" type="text" name="nombreCampo" value="" />

Ejemplo 2 (Textbox completado por defecto):
<label for="input_contacto">Nombre Campo</label>
<input id="input_contacto" type="text" name="nombreContacto" value="Complete con sus nombres y apellidos" />

Ejemplo 3 (Radio button):
<label for="input_si">Si</label><input id="input_si" type="radio" name="suscribirse" value="si" />
<label for="input_no">No</label><input id="input_no" type="radio" name="suscribirse" value="no" />

Ejemplo 4 (Checkbox):
<input id=input_acuerdo" type="checkbox" name="acuerdoLegal" value="1" />

Ejemplo 5 (Password):
<input id="input_password" type="password" name="password" value="" />

Ejemplo 6 (Hidden):
<input type="hidden" name="idUsuario" value="25" />

Ejemplo 7 (Submit):
<input type="submit" name="submit" value="Enviar consulta" />

Textarea:
Sintaxis:
<textarea id="textarea_comunicacion" name="comunicacion" rows="10" cols="50"></textarea>

Ejemplo:
<textarea id="textarea_comunicacion" name="comunicacion" rows="5" cols="50">Escribe aquí lo que quieras</textarea>

SelectBox:
Sintaxis:
<select id="select_sexo" name="sexo">
<option value="M">Masculino</option>
<option value="F">Femenino</option>
</select>

Ejemplo:
<select id="select_gustos" name="gustos" multiple="multiple">
<option value="1">Me gusta jugar al Tennis</option>
<option value="2">Me gusta jugar al Futbol</option>
<option value="3">Me gusta jugar al Correr</option>
</select>

¿Cómo recibir datos de un formulario?
Ejemplo de formulario: contacto.php
<form action="contacto_script.php" method="post" id="contacto">
  <label for="input_nombres">Nombre y Apellido</label><br />
  <input id="input_nombres" type="text" name="nombres" value="" /><br /><br />

  <label for="input_email">Email</label><br />
  <input id="input_email" type="text" name="email" value="" /><br /><br />

  <label for="input_sexo">Sexo</label><br />
  <select id="select_sexo" name="sexo">
  <option value="M">Masculino</option>
  <option value="F">Femenino</option>
  </select><br /><br />

  <label for="textarea_mensaje">Mensaje</label><br />
  <textarea id="textarea_mensaje" name="mensaje" rows="5" cols="50"></textarea><br /><br />

  <input type="submit" name="submit" value="Enviar consulta" />
</form>


Ejemplo para recibir datos del formulario: contacto_script.php

<?
  // definimos las variables o marcamos el error
  if ( !empty($_POST['nombres']) ) $nombres = $_POST['nombres']; else $error = true;
  if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error = true;
  if ( !empty($_POST['sexo']) ) $sexo = $_POST['sexo']; else $error = true;
  if ( !empty($_POST['mensaje']) ) $mensaje = $_POST['mensaje']; else $error = true;

  // verificamos que no exista un error
  if ( !empty($error) ) {
    header( 'Location: contacto_error.php' );
    die;
  }

  // definimos el cuerpo del email
  $cuerpo = "
  De: $nombres \n\r
  Email: $email \n\r
  Sexo: $sexo \n\r
  Mensaje: \n\r
  $mensaje
  ";

  // enviamos el email
  if ( mail( 'direccion.del.destinatario@email.com','Recibiste un mensaje a través del formulario de contacto de tu sitio',$cuerpo ) ) {
    header( 'Location: contacto_exitoso.php' );
    die;
  } else {
    header( 'Location: contacto_error.php' );
    die;
  }
?>





Funciones:
Sintaxis:

<?php
  function nomber($argumento1, $argumento2, ..., $argumento_n)
  {
    echo "Función de ejemplo.";
    return $resultado;
  }
?>


Ejemplo de función para calcular la edad:

<?
  public function edad($nacimiento){
    //restamos los años (año actual - año cumpleaños)
    $edad = date("Y") - ereg_replace("^(.{4}).*","\\1",$nacimiento);

    //si pasamos de año, pero aún no cumplimos años, resta 1
    if( date("m-d") < ereg_replace(".*(.{5})$","\\1",$nacimiento) ) $edad--;

    return $edad;
  }
?>


Ejemplo de uso de la función anterior:

Mi nombre es Hernán y tengo <? echo edad('1977-07-06'); ?> años de edad.



Tipos de consultas básicas:
  Select: busca información en la base de datos.
  Insert: ingresa información para almacenarla y luego ser obtenida mediante una consulta select.
  Update: actualiza la información guardada.
  Delete: borra la información.


Conexión a bases de datos:
<?
  // datos de configuracion
  $ip = 'localhost';
  $usuario = 'nombre_de_usuario_que_conecta_con_la_db';
  $password = 'password_de_la_db';
  $db_name = 'nombre_de_la_base_de_datos_que_usamos';
  // conectamos con la db
  $conn = mysqli_connect($ip,$usuario,$password) or die();
  // seleccionamos la base de datos
  $huboerror = mysqli_select_db(
$conn,$db_name) or die();
?>

Ejemplo de consulta a una base de datos:
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias`";
$response = mysqli_query(
$conn,$query);
$c = 0;
while( $row = mysqli_fetch_assoc($response) ) {
  $noticia[$c] = $row;
  $c++;
}


Ejemplo para mostrar el campo de un registro:
<? echo $noticia[0][‘titulo’]; ?>

Ordenar nuestras consultas:
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` ORDER BY idNoticia DESC";

Filtrar las consultas:
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE estado = 'publicado' ORDER BY idNoticia DESC";


Sintaxis para insertar registro en una tabla desde PHP:
$query = "INSERT INTO `nombre_tabla` (campo1,campo2) values (valoresCampo1,valoresCampo2)";
$response = mysqli_query(
$conn,$query);

Ejemplo para insertar registro en una tabla desde PHP:
Parte HTML:

<html>
  <head>
    <title>Formulario de Notícias</title>
  </head>
  <body>
    <h1>Agregar Nueva Noticia</h1>
    <form action="subir-noticias.php" method="post">
      <label for="titulo">Titulo</label><br />
      <input id="titulo" type="text" name="titulo" value="" /><br /><br />
      <label for="cuerpo">Cuerpo</label><br />
      <textarea id="cuerpo" name="cuerpo" rows="5" cols="50"></textarea><br /><br />
      <label for="estado">Estado</label><br />
      <select id="estado" name="estado">
        <option value="publicado">Publicado</option>
        <option value="borrador">Borrador</option>
      </select><br /><br />
      <button type="submit" name="submit" value="1">Enviar Noticia</button>
    </form>
  </body>
</html>


Script de PHP:
<?
  // datos de configuracion
  $ip = 'localhost';
  $usuario = 'usuario';
  $password = 'password';
  $db_name = 'baseDeDatos';
  // conectamos con la db
  $conn = mysqli_connect($ip,$usuario,$password) or die();
  // seleccionamos la base de datos
  $huboerror = mysqli_select_db(
$conn,$db_name) or die();
  // si se envia el formulario
  if ( !empty($_POST['submit']) ) {
    $query = "INSERT INTO `noticias` (titulo,cuerpo,estado) values ('{$_POST['titulo']}','{$_POST['cuerpo']}','{$_POST['estado']}')";
    $response = mysqli_query(
$conn, $query);
  }
?>


Script completo (Archivo: subir-noticias.php):
<?
  // datos de configuracion
  $ip = 'localhost';
  $usuario = 'root';
  $password = '';
  $db_name = 'db';
  // conectamos con la db
  $conn = mysqli_connect($ip,$usuario,$password) or die();
  // seleccionamos la base de datos
  $huboerror = mysqli_select_db($conn, 
$db_name) or die();
  // si se envia el formulario
  if ( !empty($_POST['submit']) ) {
    $query = "INSERT INTO `noticias` (titulo,cuerpo,estado) values ('{$_POST['titulo']}','{$_POST['cuerpo']}','{$_POST['estado']}')";
    $response = mysqli_query(
$conn, $query);
  }
?>

<html>
  <head>
    <title>Formulario de Notícias</title>
  </head>
  <body>
    <h1>Agregar Nueva Noticia</h1>
    <form action="subir-noticias.php" method="post">
      <label for="titulo">Titulo</label><br />
      <input id="titulo" type="text" name="titulo" value="" /><br /><br />
      <label for="cuerpo">Cuerpo</label><br />
      <textarea id="cuerpo" name="cuerpo" rows="5" cols="50"></textarea><br /><br />
      <label for="estado">Estado</label><br />
      <select id="estado" name="estado">
        <option value="publicado">Publicado</option>
        <option value="borrador">Borrador</option>
      </select><br /><br />
      <button type="submit" name="submit" value="1">Enviar Noticia</button>
    </form>
  </body>
</html>


Sintaxis UPDATE:
$query = "UPDATE `nombre_tabla` set campo1 = 'valoresCampo1', campo2 = 'valoresCampo2' WHERE primaryKey = 'valorPrimaryKey' LIMIT 1";
$response = mysqli_query(
$conn, $query);

Sintaxis DELETE:
$query = "DELETE FROM `nombre_tabla` WHERE primaryKey = 'valorPrimaryKey' LIMIT 1";
$response = mysqli_query(
$conn, $query);


Editar una noticia:
http://direccion.com/editar.php?idNoticia=23

if ( !empty($_GET['idNoticia']) ) {
  // traemos la noticia
  $query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} limit 1";
  $response = mysqli_query(
$conn, $query);
  $noticia = mysqli_fetch_assoc($response);
}

<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
  <label for="titulo">Título</label><br />
  <input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?> " type="text" /><br /><br />
  <label for="cuerpo">Cuerpo</label><br />
  <textarea id="cuerpo" name="cuerpo" rows="5" cols="50"><? echo $noticia['cuerpo']; ?></textarea><br /><br />
  <label for="estado">Estado</label>
  <select id="estado" name="estado">
    <option value="publicado" <? if ( $noticia['estado'] == 'publicado' ) echo 'selected="selected"'; ?>>Publicado</option>
    <option value="borrado" <? if ( $noticia['estado'] == 'borrado' ) echo 'selected="selected"'; ?>>Borrado</option>
  </select><br /><br />
  <button type="submit" name="submit" value="1">Editar Noticia</button>
  <input name="idNoticia" value="<? echo $noticia['idNoticia']; ?>" type="hidden" />
</form>

if ( !empty($_POST['submit']) ) {
  $query = "UPDATE `noticias` set titulo = '{$_POST['titulo']}', set cuerpo = '{$_POST['cuerpo']}', estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
  $response = mysql_query($query, $conn);
}


Archivo terminado (editar-noticias.php):
<?
  // datos de configuracion
  $ip = 'localhost';
  $usuario = 'root';
  $password = '';
  $db_name = 'baseDeDatos';
 
  // conectamos con la db
  $conn = mysqli_pconnect($ip,$usuario,$password) or die();

  // seleccionamos la base de datos
  $huboerror = mysqli_select_db(
$conn, $db_name) or die();

  // si se envia el formulario de edicion
  if ( !empty($_POST['submit']) ) {
    $query = "UPDATE `noticias` set titulo = '{$_POST['titulo']}', set cuerpo = '{$_POST['cuerpo']}', estado = '{$_POST['estado']}' WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1";
    $response = mysqli_query(
$conn, $query);
 }

  // si tenemos id de noticia
  if ( !empty($_GET['idNoticia']) ) {
    // traemos la noticia
    $query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} limit 1";
    $response = mysqli_query(
$conn, $query);
    $noticia = mysqli_fetch_assoc($response);
  }
?>

<html>
  <head>
    <title>Formulario de Edición de Noticias</title>
  </head>
  <body>
    <h1>Agregar Nueva Noticia</h1>
    <form action="editar-noticias.php" method="post">
      <label for="titulo">Titulo</label><br />
      <input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?> " type="text" /><br /><br />
      <label for="cuerpo">Cuerpo</label><br />
      <textarea id="cuerpo" name="cuerpo" rows="5" cols="50"><? echo $noticia['cuerpo']; ?></textarea><br /><br />
      <label for="estado">Estado</label>
      <select id="estado" name="estado">
        <option value="publicado" <? if ( $noticia['estado'] == 'publicado' ) echo 'selected="selected"'; ?>>Publicado</option>
        <option value="borrado" <? if ( $noticia['estado'] == 'borrado' ) echo 'selected="selected"'; ?>>Borrado</option>
      </select><br /><br />
      <button type="submit" name="submit" value="1">Editar Noticia</button>
      <input name="idNoticia" value="<? echo $noticia['idNoticia']; ?>" type="hidden" />
  </form>
</body>


Borrar una noticia:
if ( !empty($_GET['idNoticia') ) {
  $query = DELETE FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} LIMIT 1";
  $response = mysqli_query(
$conn, $query);
}


Join:
SELECT noticias.titulo, noticias.cuerpo, usuarios.nombre, usuarios.apellido FROM noticias INNER JOIN usuarios ON noticias.idAutor = usuarios.idUsuario

Inner, Left y Right Joins:
SELECT noticias.titulo, noticias.cuerpo, noticiasImagenes.archivo FROM noticias RIGHT JOIN noticiasImagenes ON noticias.idNoticia = noticiasImagenes.idNoticia

Sintaxis Union:
SELECT ... UNION [ALL | DISTINCT] SELECT ...

Count:
SELECT COUNT(*) FROM noticias WHERE estado = 'publicado';
SELECT autor, COUNT(*) FROM noticias GROUP BY autor;

Max y Min:
SELECT MAX(precio) FROM productos;
SELECT MIN(precio) FROM productos;

Promedio (AVG):
SELECT AVG(precio) FROM productos WHERE idProducto = 15;

SUM:
SELECT SUM(precio) FROM carrito WHERE idUsuario = 3;


LIMIT:
SELECT COUNT(*) FROM productos LIMIT 1;
SELECT * FROM productos LIMIT 5,10;





http://www.elwebmaster.com/editorial/taller-de-php-manipulacion-de-archivos-1



No hay comentarios:

Publicar un comentario