Curso PHP 5 || III. Bucles y condicionales en PHP

Solución Actividades II

1.   Localiza los errores en el programa:

<?php
   
print 'How are you?';
   print 
'I'm fine
??>


Los errores son:

•   El ultimo print debe ir encerrado entre comillas dobles o escapar la comilla simple con \
•   Al final del código sobra un interrogante en el cierre

2.   Escribe un programa PHP que calcule el coste total de esta comida: Dos hamburguesas a 4.95 € C/U, un batido a 1.95€ y una coca-cola a 85 céntimos. El IVA es de 7.5%.


<?php
$hamburguesa 
4.95;
$batido 1.95;
$cocacola 0.85;
$comida 2$hamburguesa $batido $cocacola;
$iva $comida 0.075;
$total $comida $iva;
print 
"El total es $total€";
?>


3.   Modifica el programa anterior para imprimir la solución con formato (printf). Para cada artículo, imprime el precio, cantidad y coste total. Imprime el total de la comida y de la bebida antes del IVA, el total con el IVA.

<?php
$hamburguesa 
4.95;
$batido 1.95;
$cocacola 0.85;
$comida 2$hamburguesa $batido $cocacola;
$iva $comida 0.075;

printf("2 Hamburguesas a %.2f € c/u = %.2f €n"$hamburguesa$hamburguesa 2);
printf("1 Batido a %.2f €n"$batido);
printf("1 Coca cola a %.2f €n"$cocacola);
printf("Total con iva: %.2f €n"$comida $iva);
?>



4.   Escribe un programa que establezca dos variables ($nombre y $apellido). Imprime una cadena que contenga ambos separados con un espacio. Imprime también la longitud.

<?php
$nombre 
'nax';
$apellido 'bl4ck';
$completo "$nombre $apellido";
echo 
$completo;
echo 
strlen($completo);
?>


V.   Tomando decisiones y repitiéndonos

En esta tercera parte vamos a trabajar con los condicionales y los bucles, los cuales nos acompañarán a lo largo de nuestro aprendizaje.
Con los condicionales podremos controlar, por ejemplo, si un panel lo verá un visitante o no.
Con  los bucles podremos recorrer los valores de algunas arrays e ir mostrando su contenido.
La utilización de estas dos estructuras es muy común y es más común su uso en conjunto, pero vamos a verlas por separado.

Condicionales

Cuando hablamos de condicionales tenemos que pensar que estas siempre nos devolverán un valor verdadero o falso (true or false) y a partir de ese valor ejecutarán uno u otro bloque de código.
Estos valores se utilizan con la función if(), la explicación de esta función la haremos más adelante pues creo necesario el siguiente apartado.

Entender cómo se evalúa verdadero y falso

Todas las expresiones en un programa tienen un valor: true o false. Algunas veces ese valor se utiliza en algún calculo pero otras es simplemente ignorado. Entender cómo las expresiones avalúan estas expresiones es parte importante para entender el lenguaje.

Casi todos los valores son true. Todos los enteros y números en coma flotante son true (menos 0 y 0.0). Todas las cadenas son true excepto las que no contengan nada y una cadena que solo contenga el carácter 0. Estos cuatro valores y la constante false evalúan como false todas las demás evalúan como true.
Las expresiones matemáticas como 7 * 6 evalúan como true dado que su resultado es 42, pero expresiones como 1 + 2 - 3 evalúan como false, ya que su resultado es 0.

Tomar las decisiones

Entendida esta parte de true y false vamos a estudiar la función if().
Un ejemplo claro de su uso sería saber si el usuario es un usuario normal o un administrador. Para ello utilizaríamos una variable para saberlo:


<?php
if ($es_admin)
{
  print 
"eres admin!";
}
?>



La variable $es_admin podría contener cualquier tipo de valor excepto los 4 antes mencionados si el usuario es un administrador.
En este caso todo lo que se mostrará si es administrador es un simple mensaje, pero si quisiéramos tener más sentencias solo tendríamos que ponerlas dentro de los corchetes, también cabe recalcar que si  el if solo contiene una única sentencia no hace falta situar corchetes

<?php
if ($es_admin)
  print 
"eres admin!";
?>


En pseudocódigo se podría leer como: “si es admin muestra ‘eres admin’”, pero, ¿qué pasaría si no lo es? En este ejemplo nos quedaría la pantalla en blanco, para evitar eso y tener un control más exacto de nuestra aplicación vamos a utilizar la construcción else.


<?php
$es_admin 
0;
if (
$es_admin)
   print 
"eres admin!";
else
   print 
"eres un usuario o visitante!";
?>


El tema de los corchetes es exactamente igual al if(), en este caso, como $es_admin es false, evalua como false y muestra “eres un usuario o visitante”, ahora, si quisiéramos controlar los tres casos posibles (que sea un usuario, administrador o visitante) podemos agregar el construcción else if().


<?php
if ($que_es == 'admin')
   print 
"eres admin!";
else if (
$que_es == 'user')
   print 
"eres un usuario registrado";
else
   print 
"eres un visitante!";
?>

En este caso comprobamos que la variable contenga la cadena ‘admin’ para decir que es administrador o ‘user’ para nombrarlo como usuario y si ninguna de esas dos se cumple deducimos que es un visitante.

Podemos agregar tantos else if() como creamos necesario, eso sí, siempre agregando la condición oportuna.
Operadores de comparación
No son específicamente de la función if(), pero es, junto a los bucles, donde más se usan.
En el ejemplo anterior vemos el primero, y más común, de estos operadores.

Operador           símbolo      significado
Igualdad                ==             Si 1 es igual a 1 es true
Identico                 ===          Si 1 es igual a 1 y ambos son numéricos es true
Diferente               !=              Si 1 es diferente de 2 es true
No idéntico           !==           Si 1 es diferente de 2 o no son del mismo tipo es true
Mayor                  >               Si 2 es mayor que 1 es true
Menor                  <               Si 1 es menor que 2 es true
Menor o igual       <=             Si 1 es menor  o igual que 2 es true
Mayor o igual       >=            Si 2 es mayor o igual que 1 es true

Solo comentar que en idéntico y no idéntico, cuando hablo de tipos me refiero al tipo de datos, como ejemplo probad este programa:


<?php
$int 
1;
$string "1";

if (
$int === $string)
   echo 
"son iguales";
?>


Diferencia entre asignación y comparación
Creo necesario resaltar la diferencia entre asignación (=) y comparación (==).
En pseudocódigo la asignación se lee así:

<?php
$var 
1// Asigna a la variable “;var”; el valor 1
$var == // Comprueba que la variable “var” sea igual a 1
?>


Comparar cadenas

De igual forma que podemos comparar que 1 es menor que 2 también podemos hacerlo con cadenas.

<?php
if ('aa' 'ba')
   echo 
"aa es menor que ba";
?>



El código, efectivamente, muestra el mensaje.

Operador de negación

El operador de negación (!), como su nombre indica, se utiliza para negar una condición.

<?php
$var 
0;
if (!
$var)
   echo 
"var es false";
?>


Normalmente esta condición hubiese evaluado como false y no se hubiese mostrado el echo.
Pero en este caso al negar la condición evalúa como ture, creo que la forma más fácil de entender esta parte es en pseudocódigo:

“Si $var no es true muestra el mensaje”.

Operadores lógicos

Como últimos operadores, vamos a ver dos operadores lógicos muy utilizados en condiciones.

Operador   Nombre      Ejemplo
&&                AND      1 == 1 && 2 == 2 es true
                                        1 == 1 && 2 == 1 es false

||                OR      1 == 1 || 2 == 1 es true
                                        1 == 2 || 2 == 3 es false

Bucles

Como ya comentamos los bucles nos son útiles cuando tenemos que hacer acciones repetitivas, como ejemplo pondremos un menú select.

While

Para bucles usaremos, entre otros, while().
While() funciona con una condición de igual forma que el if(), mientras esta condición sea true while seguirá ejecutando el código en su interior.


<?php
$i 
1;
print 
'<select name="personas" >';

while (
$i <= 10)
{
   print 
"<option>$i</option>n";
   
$i++;
}
print 
'</select>';
?>



Este código nos crea una lista desplegable del 1 al 10, la variable $i funciona de contador. El contador es una variable que se utiliza para contar (…) cuantas veces se ha repetido un proceso.
En este caso la condición del while es que el contador sea menor o igual a 10, es decir, que repetirá el bloque que contiene mientras $i esté dentro del rango de valores 1-10.
El bloque del while lo que hace es agregar una nueva opción con un valor numérico como texto y luego incrementa el contador.
Este dato es importante ya que si no se incrementara nunca saldríamos del bucle.

Do … While

Este bucle funciona exactamente igual que el anterior, solo que se ejecutaría una primera vez y luego solamente si se cumple la condición.
Un ejemplo muy claro es:


<?php
Do {
   echo 
"hola!";
}while (
== 2);
?>


En este ejemplo le estaríamos mandando que lo ejecutara cuando 1 sea igual a 2, en un while normal no mostraría nada pero un Do… While ejecuta una vez el echo y luego comprueba si la condición se cumple para repetirlo

El bucle for()

A mí me gusta presentar a este bucle como el “todo en uno”,  como vimos en el while(), antes de declararlo teníamos que dar un valor a $i, luego al declararlo le ponemos una condición y dentro del while() el incremento, for() hace exactamente lo mismo pero todo en la misma línea.
Poniendo como ejemplo el mismo ejercicio anterior:


<?php
print '<select name="personas" >';

for (
$i 1$i <= 10$i++)
{
   print 
"<option>$i</option>n";
}
print 
'</select>';
?>


Como veis el funcionamiento es el mismo, solo que más comprimido. Dentro del for primero declaramos luego la condición y para finalizar el incremento.
El mismo proceso se puede utilizar con múltiples variables.


<?php
print '<select name="a&#38;#241;o" >';

for (
$i 1$year 1980$i <= 30$i++, $year++)
{
   print 
"<option>$year</option>n";
}
print 
'</select>';
?>


De esta forma creamos una lista desde 1980 hasta 2009.
Esto es todo por estas fiestas, dejo el foreach() para el siguiente capítulo que trataremos las Arrays.
Felices fiestas a todos!!!

Actividades III

1.   Sin utilizar PHP determina si son true o false:

100.00 – 100
“zero”
“false”
0 + “true”
0.000
“0.0”
strcmp(“false”, “False”)

2.   Sin ejecutarlo en el intérprete PHP averigua que imprime el programa:

<?php
$edad 
12;
$numerodepie 13;
if (
$edad $numerodepie)
{
   print 
"mensaje 1";
} elseif (
$numerodepie++) && ($edad 20) {
   print 
"mensaje 2";
}else {
   print 
"mensaje 3";
}

print 
"edad: $edad. Tama&#38;#241;o de pie: $numerodepie";
?>


3.   Utiliza while() para imprimir una tabla de equivalencias de temperaturas de grados Farenhite y Celsius desde -50 grados F a 50 grados F en incrementos de 5 grados. Para convertir las F a C resta 32 a la temperatura, multiplícalo por 5 y divide entre 9

4.   Modifica el ejercicio anterior para hacerlo con for()



A petición de algunos users subo las versiones en PDF y a partir de ahora utilizaré el formato de colores de el foro ya que es mas claro. (cuando tenga tiempo formato adecuadamente los capítulos anteriores, si alguien lo hace por mi le debo una xD)

Versión .doc:III. Condicionales y bucles
Versión .pdf:III. Condicionales y bucles

Curso PHP 5 || II. PHP en acción

Solución Actividades I

Primero que nada vamos a ver la soluciones planteadas a las actividades.

1.   Busca o dibuja un diagrama de una petición web de una página PHP en la cual intervenga el servicio MySQL y explícalo.



2.   ¿Qué significa que el código PHP es usualmente ‘interpretado por parte del servidor? ¿Qué ventajas se te ocurren de hacerlo así?

Significa que todo el código PHP se interpreta en el servidor que muestra la web, el recibe los datos, y los interpreta y devuelve uno u otro resultado. Generalmente se ejecuta en un servidor web, tomando el código en PHP como su entrada y creando o mostrando datos, páginas web como salida.
Básicamente que puedes interactuar con el usuario de la web, que no se tiene que bajar ningún programa especial ni nada por el estilo para ver tu web en PHP
Actividad enviada por: Nekos

IV.   PHP en acción

Bien, ya explicado lo básico de lo básico y con nuestro entorno de trabajo listo para pasarnos horas y horas codeando vamos a explicar lo básico de PHP.
A partir de aquí intentaré ser muy explicativo con los programas, si hay alguna parte que no se entienda o no se explica a fondo probablemente será porque se explicará en un tema posterior.


<html>
<head><title>Primera web en PHP</title></head>
<body>
<?php 
   
print "Hola mundo!";
?>
</body></html>


Esta primera página web muestra un mensaje de ‘Hola mundo!’ En el navegador, algo muy sencillo pero que nos permite explicar dos cosas:

Delimitadores de PHP

Los delimitadores de PHP son para el final. Es decir, todo lo que haya entre será código PHP.
Otro delimitador es el punto y coma (;) el cual marca el final de una línea en PHP y olvidarse de ponerlo marcará errores en el programa.
Podemos escribir varios comandos en una misma línea de la siguiente forma


<?php 
   
print "Hola mundo!"; print "!!!";
?>


Y su salida es: “Hola mundo!!!!”

Mayúsculas y minúsculas, espacios en blanco

PHP es case sensitive, es decir, reconoce mayúsculas de minúsculas. Por lo tanto no será lo mismo la función funcion que funciOn o FuncIon, es algo importante a recordar dado que nos puede causar problemas con variables o funciones en el futuro. Esta regla no se aplica en palabras clave como print (PRINT, pRint) o similares.
Los espacios en blanco también son importante, el interprete PHP los ignora a final de línea (por eso usamos ;) y también entre palabras, por lo que es lo mismo print   “hola” que print “hola “ o print”hola”.
Pero una correcta tipografía nos dice que usemos print “hola”.

Comentarios:

Un buen hábito es comentar nuestros programas para dar un mejor entendimiento al que los lee. Alguien dijo una vez que un programa que no te estudias durante un mes es como un programa hecho por otra persona.
Hay 2 tipos de comentarios, los de una línea (// o #) o de varias líneas (/* , */)

<?php 
   
//esto es un comentario
   
print "Hola mundo!"; print "!!!"#otro comentario
   /*
      esto es un comentario de varias líneas
   */
?>

 
Cadenas de texto

Para mostrar una cadena de texto por pantalla podemos utilizar el comando print o echo, entre otros.


<?php
   
echo "hola, ";
   print 
'que tal?';
?>


Produce la salida: “hola, que tal?”. Podemos ver que ambos comandos funcionan igual y podemos utilizar tanto ‘ como “ para delimitar el texto.
Pero, ¿qué pasa si queremos mostrar un “? Para conseguir eso utilizaremos el símbolo de escapado ‘\’.


<?php
   
echo "hola ”amigo”, ";
   print 
'que tal?';
?>

 

La salida: “hola “amigo”, que tal?”. El símbolo de escapado puede escaparse a si mismo: \\ = \ o a otros caracteres como “ y ‘.
También se pueden incluir espacios en blanco como:

<?php
   
echo ' Hola 'Amigo',
        que tal va el curso?'
;
?>


Produciendo la misma saluda: “hola ‘amigo’ que tal va el curso?”.


Diferencia entre comillas dobles y sencillas:

La principal diferencia es que las comillas dobles interpretan una variable dentro de ellas, mientras que las simples no.


<?php
   $amigo 
"nax";
   print 
"Hola $amigo";
   print 
'<br />Hola $amigo';
?>

 
Siendo la salida:
Hola nax
Hola $amigo

Otra diferencia es que las comillas dobles tienen más caracteres especiales:

\n   Linea nueva (ASCII 10)
\r   Retorno de carro (ASCII 13)
\t   Tabulación (ASCII 9)
\\   \
\$   $
\”   “
\0…\777   Números octales
\x0… \xFF Números hexadecimales.


También se pueden imprimir bloques de texto de la siguiente manera:


<?php
   
print <<<_HTML_
<html>
<head><title>Menu</title></head>
<body bgcolor="#fffed9" >
Hola!
</body></html>
_HTML_;
?>


Validar cadenas:

La validación es el proceso en el cual se comprueba que la entrada de datos contiene el formato esperado, es decir, si esperamos que el usuario entre un 1 o un 0, tenemos que validar que no  a entrado una ‘a’.
Para cadenas de texto una de las funciones más útiles es trim(), esta función elimina los espacios en blanco al principio y final de una cadena, esto es útil para evitar errores al escribir un usuario o contraseña, por ejemplo. También contamos con la función strlen() que nos indica la longitud de una cadena, útil para saber si la cadena está vacía o cumple un mínimo de longitud

<?php
 $variable 
"Ooops! ";
 
$variable trim($variable);
 echo 
strlen($variable);
?>


En este ejemplo la salida, es decir la longitud de $variable, es 6 (más adelante se explicarán las variables). Originalmente $variable contenía 7 caracteres, pero con trim() eliminamos los espacios en blanco al principio y final de la cadena y por lo tanto la salida del echo es: 6.
Podemos realizar estos mismos pasos de la siguiente forma:


<?php
 $variable 
"Ooops! ";
 
$variable strlen(trim($variable));
 echo 
$variable;
?>


O podríamos hacerlo sobre el echo si no quisiéramos que la variable modificara su valor.
Al hacer comparaciones con if() (explicado más adelante) este distinguirá mayúsculas de minúsculas. Para que esto no ocurra usamos la función strcasecmp().

<?php
 
if ('hola' != 'Hola')
 {
    echo 
"son diferentes";
 }
 if (
strcasecmp('hola''Hola') == 0)
 {
    echo 
"son iguales";
 }
?>


En el primer if() si son diferentes muestra “son diferentes”, en el segundo usamos strcasecmp() para comprobar que son iguales, en caso de que lo sean strcasecmp() devuelve un valor 0, es decir, en el ultimo if quedaría así: if (0 == 0)… Por lo que la salida es: “son diferentes” y “son iguales” respectivamente.

Formatear texto:

La función por excelencia para formatear texto es printf(), a la cual se le pasa una cadena de formato y  un conjunto de elementos a imprimir.

<?php
   $precio 
5$recargo 0.075;
   
printf('La comida cuesta $%.2f'$precio * ($recargo));
?>


La salida es: La comida cuesta $5.38

Como se puede ver, la regla de formato es %.2f y el elemento a imprimir en esa regla es el resultado de $precio * (1 + $recargo). Y ese resultado se formatea con 2 decimales.
Las reglas de formatos de texto comienzan con % y luego incluyen algunos modificadores opcionales:

•   Un carácter de relleno: Si la cadena es más corta de lo esperada se usa este carácter para rellenar (suele ser un espacio o 0)
•   Un signo: Para números, un signo más (+), hace que printf escriba un + delante del número positivo. Para cadenas un menos (-) hace que printf alinee la cadena a la derecha.
•   Un ancho mínimo: El tamaño mínimo que debería tener el valor, si es más corto se usa el carácter de relleno.
•   Un punto y número de precisión: Para números de coma flotante indica cuantos decimales se mostrarán. El ‘.2’ en el ejemplo hace que se muestren 2 decimales.

Después de estos elementos opcionales viene un carácter obligatorio que indica el tipo de valor que se debe imprimir.

d    para números decimales (decimal)
s    para cadenas (string)
f    para números de coma flotante (float)


Para más información sobre printf y sus reglas de formato aconsejo: www.php.net/sprintf

Otras utilidades para formatear el texto están en convertir las mayúsculas y minúsculas de este. Las funciones strtolower() y strtoupper() crean las versiones en mayúsculas y minúsculas, respectivamente, de una cadena.

<?php
   
print strtolower("Hola, CaRola, EsTeBan");
   print 
strtoupper("Hola, CaRola, EsTeBan");
?>


Salida:
hola, carola, esteban
HOLA, CAROLA, ESTEBAN

También disponemos de la función ucwords() para poner en mayúscula la primera letra de cada palabra, es útil combinada con strtolower().

<?php
   
print ucwords(strtolower("FORO Bl4ck-P0rtal"));
?>


Salida: Foro Bl4ck-p0rtal

Otra función de utilidad es substr(), con ella podemos extraer parte de una cadena.


<?php
   
echo substr("HOla estoy aburrido y por eso escribo mucho
         no se olviden de visitar foro.el-hacker y ya que están
         bl4ck-p0rtal.org!!!"
7415);
?>


En este caso la salida es: foro.el-hacker. Es de mucha utilidad para un sistema de noticias o un blog en el cual se quiera mostrar el principio más no el texto completo.
Otra función de texto muy interesante es str_replace(), la cual cambia partes de una cadena.

<?php
   
echo str_replace('[censored]''Bl4ck-p0rtal''Estoy visitando el foro de [censored]!!!!');
?> 



Salida: Estoy visitando el foro de Bl4ck-p0rtal!!!! Esa función se usa mucho para BBCode y templates un tanto peculiares.
 
Números

Hemos acabado de repasar las cadenas de texto y sus principales funciones, así que vamos a tomarnos un tiempo con los números.

Operadores aritméticos

Esta parte no será complicada:



<?php
   
echo 2;
   echo 
17 3.5;
   echo 
10 3;
   echo 
9;
?>


Igual que en el colegio pero este no se equivoca.
Un operador que quizá aquellos que no suelen programar no conozcan es el de división de módulo (%) que no devuelve otra cosa que el resto de una división.

<?php
   
echo 3%2;
?>


El resto es: 1

De momento esto es todo en cuanto a números y operadores :p

Variables:


En todo lenguaje de programación siempre es necesario el guardar datos en un “contenedor”,  tenemos 2 tipos, a estos contenedores se les llama variables y constantes.
Las variables, como su propio nombre indica son “contenedores” de datos que durante el flujo del programa puede cambiar su valor, o contenido.

Todas las variables llevan el símbolo del dólar ($) antes de su nombre e identifica mayúsculas de minúsculas.

<?php
   $variable 
"hola";
   
$Variable "como estás?";
   echo 
$variable $Variable;
?>


Este programa produce la salida: “hola cómo estás?”, dado que ambas variables conllevan diferente nombre, en caso de ser el mismo nombre se substituiría el valor de $variable (“hola”) por el nuevo valor (“como estás”).
Los nombres de variables tienen las siguientes normas:

-   No pueden empezar por un número ($2hot)
-   No aceptan el carácter ‘-‘, ‘@’, ‘¡’, ‘+’ ($no-funciona)

Algunas variables aceptables son:
$_size, $to3at, $mi_comida, etc.

Las variables pueden contener diferentes tipos de datos (enteros, coma flotante, cadenas, booleanos), para asignarle valor a una variable simplemente basta con usar el signo de asignación (=) como se ve en ejemplos anteriores.
Para concatenar datos podemos usar el signo de concatenación (.) y aprovecho para mostrar alguna operación matemática


<?php
   $nombre 
'nax';
   
$apellido '_hh';
   
$completo $nombre $apellido;
   
$precio 20$iva 0.16;
   
$total $precio * ($iva);
?>


Donde $completo contiene: ‘nax_hh’

Adición combinada y concatenación


La adición combinada no es más que aumentar o disminuir el valor de una variable, se puede realizar como en el siguiente ejemplo o: $contador = $contador + 1;.
La concatenación es unir dos cadenas en una misma variable. También se podría hacer $palabra = $palabra. ‘ :D’.


<?php
   $contador 
1;
   
$contador += 1//$contador = 2   
   
$palabra 'hola'
   
$palabra .= ' :D'// $palabra = 'hola :D'
?>


A veces nos vemos en la necesidad de agregar una cadena seguida de una variable.
si tenemos el nombre Nax y queremos agregar una ‘s’ al final el siguiente ejemplo no funcionaria ya que hace referencia a la variable $names y no $name:


<?php
   $name 
'nax';
   echo 
"$names";
?>


Por eso accedemos al recurso de las corchetes para separar la variable del texto.

<?php
   $name 
'nax';
   echo 
"{$name}s";
?>


Actividades II

1.   Localiza los errores en el programa:

<?php
   
print 'How are you?';
   print 
'I'm fine.;
?
?>



2.   Escribe un programa PHP que calcule el coste total de esta comida: Dos hamburguesas a 4.95 € C/U, un batido a 1.95€ y una coca-cola a 85 céntimos. El IVA es de 7.5%.

3.   Modifica el programa anterior para imprimir la solución con formato (printf). Para cada artículo, imprime el precio, cantidad y coste total. Imprime el total de la comida y de la bebida antes del IVA, el total con el IVA.

4.   Escribe un programa que establezca dos variables ($nombre y $apellido). Imprime una cadena que contenga ambos separados con un espacio. Imprime también la longitud.





Versión .doc: II.Lo básico

Publicar correctamente código PHP en blogger

Bueno, hace tiempo que vengo con este problemilla encima, y una de las razones de que tuviese el blog medio dejado era exactamente eso...

Los códigos que encontraba por la red o coloreaban o formataban con stripslashes, pero ninguno hacia ambas cosas..

Hoy mismo di con un código PHP, por supuesto, que permite (por medio de stripslashes) introducir carácteres especiales al código y a la vez lo colorea.

He modificado el código original porque me resulta mas cómodo como lo e dejado. Pero si a alguien le interesa el original se puede encontrar aquí  (En realidad es una modificación del original, pero es en la que yo me e basado)

Esta es la muestra y el código a la vez

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" style="margin-bottom:40px">

<div id="formulario">

<textarea rows="20" cols="80" name="codigo"></textarea> <br />
<input type="submit" name="enviar" value="Formatear" /></div>

</form>

<?php

   
if (!empty($_POST['codigo'])) {
      
      
$codigo $_POST['codigo'];
      
$codigo str_replace("t""   "$codigo);
      
$codigo highlight_string(stripslashes($codigo), true);
      
      
$codigo str_replace("#ECE6B4""#ECE6B4"$codigo);
      
$codigo str_replace("#3769f6""#3769f6"$codigo);
      
      echo 
'<div id="formatado" style="border: double #dfdfdf;"> <h3>El code formatado </hr>';
      echo 
'<p>' $codigo '</p><hr />';
      
      
$file fopen("tmp.txt""w");
      
fwrite($file$codigo);
      
fclose($file);
      
      
$lineas file('tmp.txt');
      
unlink('tmp.txt');
      
      for (
$i 0$i count($lineas); $i++)
         
$resultado $resultado.htmlentities($lineas[$i]);
      
      echo 
'<h3> Inserta ste codigo en tu site: </h3>' .$resultado.'</div>';
   }

?>



Trabaja con el mismo estilo que el original pero con 2 cambios:
1- El original pone numeros, cosa que al copiar codes hay que ir borrandolos...
2- El original me dió problemas de formato al copiar el code a dreamweaver, por lo que e tenido que hacerlo a mano xD

Así que espero que lo disfruten y lo usen mucho, yo de seguro que lo usaré

Curso PHP 5 || I. Introduccion

Curso PHP 5 by Nax


I.   Introducción

PHP es un lenguaje de programación interpretado orientado al desarrollo web, al menos originalmente, hoy en día su principal uso es la interpretación del código por parte del servidor para servicios web pero también se puede llamar desde línea de comandos o incluso con una interfaz gráfica.
Sitio estático o dinámico
Como decía un libro que leí hace tiempo, los sitios estáticos son aburridos, aquellas web que todos los textos se mueven y muñecos bailan para dar una sensación de movimiento pero que, en el fondo, el contenido nunca cambia son llamados estáticos.
Los sitios dinámicos son aquellos que la información cambia y en el que el diseño no ha de ser necesariamente igual para todos los usuarios sino que puede haber una configuración según sus preferencias. La gestión de estos últimos es mucho más sencilla y puede realizarse vía web, mientras que la de los sitios estáticos requiere descargar la web del servidor, modificarla con nuestro software y volverla a subir.
El mejor ejemplo para diferenciarlas es una web de productos, imaginando un sitio web estático, tendríamos 10 páginas, una para cada producto, y cada vez que quisiéramos agregar un producto nuevo tendríamos que crear otra página. En el sitio web dinámico solo contaríamos con una única página web en la cual se cargarían los 10 productos almacenados, por ejemplo, en una base de datos.

¿A quien va dirigido el tutorial?

Va dirigido a toda persona sin conocimiento alguno de programación y con pocos conocimientos de administración web o de las actividades que estos realizan, por lo que el tutorial tendrá exhaustas explicaciones sobre temas como subir archivos o instalar un servidor en local, cosas que si ya sabemos hacer podremos saltarnos.
Por el contrario si se requiere conocimientos de HTML ya que no se darán explicaciones de dicho lenguaje.

Convenciones tipográficas

Se remarcará en negrita los diferentes apartados a tratar.
Se utilizará la letra papyrus para hacer referencia a funciones o códigos.
NOTA: esto no se aprecia en la versión BBCODE por lo que pongo también el original en .doc para descarga.

Recursos Recomendados:

Software:

-   Macromedia Dreamweaver CS4 (o Aptana para Linux)
-   XAMPP (LAMPP para Linux)
-   Adobe Photoshop (GIMP para Linux)

Referencias:

www.php.net
www.el-hacker.com
www.bl4ck-p0rtal.org


Instalando XAMPP

Primeramente vamos a descargar el instalador de XAMPP para Windows. Su versión actual más reciente es la 1.7.2 (http://www.apachefriends.org/en/xampp-windows.html#641)
Una vez descargado lo ejecutamos e instalamos, yo siempre lo instalo en C:\
Listo todo lo anterior, ahora si entramos en http://localhost, se nos tendría que abrir una web del phpmyadmin.
En caso de que no lo haga abrimos el ‘XAMPP Control Panel’ y le damos a ‘Start’ en Apache y MySql, recomiendo tildar los Svc para ejecutarlos como servicio al iniciar el PC.
Ahora que ya tenemos el localhost funcionando, que es donde alojaremos todos nuestros scripts antes de subirlos a un servidor, tenemos que saber donde guardar nuestros archivos PHP, la carpeta de XAMPP para el localhost es ‘htdocs’ que se encuentra en:  C:\xampp\htdocs (recomiendo hacer un acceso directo en el escritorio.

Configurando Dreamweaver

Ahora que ya tenemos el XAMPP funcionando vamos a configurar un sitio en Dreamweaver para trabajar de una forma mucho más cómoda.
Nos vamos a Site > New Site o Sitio > Nuevo Sitio. Si nos sale de la forma básica le damos a ‘Avanzado’, el nombre del sitio el que queráis, yo pondré curso PHP y el ‘Local root folder’ pondré C:\xampp\htdocs\.
En ‘HTTP adress’ ponemos ‘http://localhost/’.

Ahora vamos a ‘Remote Info’ y en ‘Access’ ponemos ‘Local/Network’ y en ‘Remote Folder’ C:\xampp\htdocs\.
Para finalizar vamos a ‘Testing Server’ y en ‘Server Model’ ponemos ‘PHP MySQL’, en ‘Access’ lo mismo que el anterior ’Local/Network’, en ‘Testing Server Folder’ ponemos ‘C:\xampp\htdocs\’ y en ‘Url prefix’ ponemos ‘http://localhost/’ de esta forma ya hemos terminado de configurar nuestro sitio.
Para comprobar que todo funciona vamos a ‘Files’ y nos debería salir una carpeta verde con el nombre del Site




III.   Entendiendo el Cloud Computing.


‘Cloud Computing’ es el término que se le da a todo lo que es Internet y se suele representar con una nube.



Este es un diagrama básico de la Cloud Computing, todo tipo de dispositivos con acceso a internet establecen una conexión con la nube (o ‘the cloud’).

Proceso de petición de una página PHP

Cuando un ordenador solicita una página web en HTML lo que suele suceder a nivel interno es que dicho PC realiza una petición a un servidor el cual procesa la petición y devuelve un resultado (la página web solicitada o un error en caso de que no exista o no  tenga los permisos necesarios).
Este proceso cambia un poco con una página PHP



En este diagrama se ve como el navegador solicita una página en PHP, como PHP es un lenguaje interpretado, el servidor necesita de un intérprete para ‘traducir’ lo que el código PHP dice (en este caso XAMPP), entonces el servidor envía al intérprete la página en PHP y este la traduce a código HTML (entendible por el servidor) y el servidor la envía a el ordenador solicitante.
La gran ventaja de este proceso es que el ordenador cliente NUNCA podrá ver el código PHP original realizando una petición, sino que siempre recibirá código HTML.

Actividades I

Por ser la primera parte y dado que todo es teoría como actividad dejo algo sencillo:
1.   Busca o dibuja un diagrama de una petición web de una página PHP en la cual intervenga el servicio MySQL y explícalo.
2.   ¿Qué significa que el código PHP es usualmente ‘interpretado por parte del servidor? ¿Qué ventajas se te ocurren de hacerlo así?


Versión .doc: I. Introducción
Versión .pdf: I. Introducción

Curiosidades en cuanto al rendimiento en PHP

PHP Benchmark nace como un sitio en el cual su único objetivo es demostrar que no todos los procesos similares de PHP funcionan a la misma velocidad, podeis visitar la página, pero para aquellos que no les gusta el inglés dejo las partes que me parecieron mas curiosas:


comillas dobles (") contra simples (')

+ 105 % comillas simples (') en una string vacia: $tmp[] = ''';
+ 102 % comillas dobles (") en una string vacia: $tmp[] = "";
+ 100 % simples ('). 20 bytes de texto: $tmp[] = 'aaaaaaaaaaaaaaaaaaaa';
+ 103 % dobles ("). 20 bytes de texto: $tmp[] = "aaaaaaaaaaaaaaaaaaaa";
+ 102 % simples ('). 20 bytes de teto y 3 $: $tmp[] = 'aa $ aaaa $ aaaa $ a';
+ 106 % dobles ("). 20 bytes de teto y 3 $: $tmp[] = "aa $ aaaa $ aaaa $ a";
+ 100 % dobles ("). . 20 bytes de teto y 3 \$: $tmp[] = 'aa \$ aaaa \$ aaaa \$ a';

Conclusión: en este caso podemos llegar a la conclusión de que ambas formas no suponen una gran diferencia de velocidades y que con las comillas dobles, escapar los carácteres como $ (\$) supone un ahorro de tiempo, mínimo eso si.

foreach() vs for() vs while(list() = each())

+ 100 % foreach($aHash as $val);
+ 657 % while(list($val)) = each($aHash);
+ 119 % foreach($aHash as $key => $val);
+ 688 % while(list($key,$val)) = each($aHash));
+ 238 % foreach($aHash as $key => $val) $tmp[] = $aHash[$key];
+ 757 % while(list($key)) = each($aHash)) $tmp[] = $aHash[$key];
+ 300 % Get Key-/value-array: foreach($aHash as $key[]=>$val[]);
+ 329 % Get Key-/value-array: array_keys() / array_values()
+ 381 % $key = array_keys($aHash);
$size = sizeOf($key);
for($i=0; $i < $size; $i++) $tmp[] = $aHash[$key[$i]];

Conclusión:
La conclusión mas obvia que podemos sacar es que foreach() es mas rapido que while() y for()


acabo con este que me pareció muy muy curioso:

Test del bucle For

El test se orienta a, si el rendimiento cambia al calcular el tamaño de una variable antes del for o en el momento que declaramos el for.

Ejemplos:
antes del for: "for ($i=0; $i 'menor que' $tamaño; $i++)"
en el for: "for ($i=0; $i 'menor que' sizeof($x); $i++)"


+ 100 % Antes del for con count()
+ 50058 % En el for con count()
+ 100 % Antes del for con sizeof()
+ 50421 % En el for con sizeof()

Conclusión: este es quizá el ejemplo mas claro a la hora de programar nuestras aplicaciones, hemos de tener muy en cuenta que el tamaño deveriamos calcularlo antes de declarar el for() para así agilizar sustancialmente nuestra aplicación.


Sin mas os animos a visitar la página del autor: http://www.phpbench.com/