This is the P2PU Archive. If you want the current site, go to www.p2pu.org!

Programando web con PHP

My recent threads

You haven't posted any discussions yet.

Recently updated threads

Lenguaje PHP

Go back to: General discussion

En este hilo iremos comentando y preguntando dudas sobre sintaxis y uso del lenguaje PHP

para empezar les comento que un script (programa) en php se inicia con el separador <?php y finaliza con el separador ?>

Es decir que todo lo que esté entre estos separadores sera interpretado por el servidor como programa o script PHP
por ejemplo

<?php
   phpinfo();
?>

es un pequeñisimo programa PHP que pueden ver funcionando en http://nodosol.org/p2pu/ejemplos/1/info.php
y es parte de los ejemplos de la semana 1

los servidores habitualmente identifican los programas PHP por su extension. Es decir que un servidorreconoce los archivos .php como archivos dinamicos y por eso analiza su contenido y "corre" los programas PHP que esten escritos dentro, en lugar de enviarlo directamente al navegador, como hace con los archivos .html o .jpg o .css o tantos otros. Esto de las extensiones, de todas formas es configurable en el servidor, pero esta es la forma mas habitual de recnocerlos, por la extension

Martin Olivera's picture
Martin Olivera
Thu, 2011-01-27 00:42

Funciones en PHP

Las funciones en PHP son formas de llamar a la ejecucion de un proceso, hay funciones muy sencillas como echo() que solo muestra algo en la pagina, y otras muy complejas como phpinfo() que analizan informacion del servidor donde corre el programa y muestra un monton de informacion del servidor y su configuracion en una larga pagina con los detalles.

Una funcion PHP tiene un nombre que la identifica y seguida por parentesis (la unica excepcion, siempre hay una es la funcion echo que puede usarse con o sin parentesis)

hay funciones que dentro de los parentesis necesitan uno o mas parametros

Ej. readfile("archivo-a-leer.txt")

donde el parametro es el archivo que se desea leer

al poner una funcion en un programa PHP eso ocasiona que se ejecuten una serie de tareas que estan definidas "dentro" de la funcion.

Mas adelante veremos como podemos tambien crear nuestras propias funciones, igualmente en PHP hay un montoooon de funciones para un montooon de cosas. RTFM! (Read The Fu&*%!ng Manual)

Christian Kaiser's picture
Christian Kaiser
Thu, 2011-01-27 17:07

Anteriormente utilizaba solamente <? ?> para inicializar y finalizar codigo php, y me funcionaba en Apache con WIndows, hasta q quise probar el codigo en Apache sobre Linux Fedora y no me funcionaba hasta q le puse completo el formato

<?php

?>

J. Alonso Perez T.'s picture
J. Alonso Perez T.
Thu, 2011-01-27 20:35

Una pregunta... El lenguaje PHP puede estar dentro de HTML pero HTML puede estar dentro de PHP?? o CSS dentro de PHP??

Martin Olivera's picture
Martin Olivera
Fri, 2011-01-28 17:43

PHP y HTML son lenguajes complementarios (tambien CSS) con diferentes posibilidades y objetivos, pueden trabajar juntos o separados, uno embebido en el otro y viceversa, todo esto lo veremos en mas detalle en las proximas dos semanas.

Por ahora prefiero que nos focalicemos en el lenguaje PHP puro, para que no se nos mezcle todo antes de tiempo, y destacar sobre todo, que aunque "se vean juntos" TRABAJAN EN TIEMPOS Y ESPACIOS SEPARADOS: PHP se ejecuta en el servidor web, y su resultado habitualmente PRODUCE HTML DINAMICO. En cambio el HTML en el servidor no hace nada solo es transportado al cliente y es el NAVEGADOR quien INTERPRETA EL HTML y lo presenta al usuario. Eso es lo mas importante que quiero que entiendan, mas alla de que uno este metido dentro de otro o no, eso es una forma en la cual la vemos los programadores, pero para los procesadores son lenguajes completamente diferentes: el SERVIDOR entiende y procesa PHP y no sabe nada de HTML. El NAVEGADOR (cliente web) entiende y procesa HTML, y no sabe nada de nada de PHP

(todas estas afirmaciones son un poco subjetivas, y puede haber ejemplos en la practica donde me lo rebatan, ya se que no es todo tahn absoluto, pero estamos en una primera etapa de un curso inicial de un legujae para muchos nuevo, dejenme ser "absolutista" al principio, es como decirle a los niños "NUNCA TOQUES LOS CABLES, ES MALO Y PELIGROSO!" pero mas adelante les voy a permitir que enchufen y desenchufen cosas :)

sergio ruiz's picture
sergio ruiz
Thu, 2011-01-27 21:47

Que tal j. Alonso Perez hasta donde sé el código PHP siempre va embebido o empotrado dentro de el código HTML es decir una vez abras el script PHP solo podrás incluir dentro de ese script código PHP, si quieres volver a incluir código HTML debe hacerse por fuera del script PHP de igual manera el código CSS va separado del código PHP… en conclusión el código HTML no puede ir dentro del código PHP por que el servido no podrá compilarlo … recordemos que el código HTML es interpretado y solo se ejecuta en el navegador… bueno espero estar en lo correcto y haberte ayudado con la duda.. saludos

Celso Ulises Juarez Ramirez's picture
Celso Ulises Juar...
Thu, 2011-01-27 23:01

El código PHP puede ir solo, sin estar contenido dentro de un archivo con código HTML, aunque generalmente van juntos. PHP no interpretará el código HTML y CSS, como tal, pero lo que se puede hacer es "imprimir" con echo (o con cualquier función que muestre una cadena de texto) código HTML o CSS, y como el navegador solo lee el resultado del programa PHP, interpretará ese html. Por ejemplo:
<php echo "<h1>Titulo</h1> "?>
O, para el css:
<php echo '<head><style type="text/css">h1{color:black;}</style>' ?>

Espero haber ayudado, cualquier corrección es bien recibida.

Eduard Moya's picture
Eduard Moya
Fri, 2011-01-28 03:05

"contenido dentro de un archivo con código HTML" esta bien dicho, pero hay que completar diciendo que aunque el cuerpo es HTML y solo una funcion en un "OnClick" (por ejemplo) esta en php, la extension DEBE ser '.php' para que compile.

Donald Almeida's picture
Donald Almeida
Fri, 2011-01-28 21:50

Martin, yo estava a ojear en ejemplos/1/info.php la 'Configuration, PHP Core... Directive arg_separator &'. es decir aun "argument separator" teneria la posibilidad de ser cambiado por otro?

Martin Olivera's picture
Martin Olivera
Fri, 2011-01-28 23:31

buena pregunta, Donald, no sabia, tuve que estudiarlo :)

Hay muchas particularidades de PHP que son configurables (para eso hay que tener ciertos permisos sobre el servidor, no siempre podremos contar con eso si usamos un hosting)

una de las variables es arg_separator, que se refiere no a los argumentos o variables en PHP, sino en la conversión de valores en una URL cuando llamamos a una pagina PHP. Ya lo veremos mas adelante, cuando llamamos a una pagina PHP podemos PASARLE VALORES o ARGUMENTOS pero a la pagina en sí, a través de la URL. Habitualmente se combinan valores con & pero como obserrvaste esto puede cambiarse.

El archivo de configuracion de PHP se llama PHP.ini y los detalles de todas las configuraciones estan (como siempre!) en el manual http://php.net/manual/es/ini.core.php

y para Donald, en portugues: http://php.net/manual/pt-BR/ini.core.php

Donald Almeida's picture
Donald Almeida
Sat, 2011-01-29 00:27

Yo estava con el pensamiento precisamente en la URL.

Muchas gracias!
Obrigado!
Thank you very much!

katheryn krystal's picture
katheryn krystal
Mon, 2011-01-31 06:53

y si kiero agregar un javascript en php tambien tengo que hacerlo con "echo"?

Javier Sáez's picture
Javier Sáez
Mon, 2011-01-31 10:11

Claro! No olvides que Php envía una web estática en html al cliente, y es éste el encargado de ejecutar el código javascript.
Así pues solo tienes que escribirlo como un string más, y imprimirlo con un echo o un print (según tus necesidades), y el cliente lo identificará normalmente si está bien escrito.

Un saludo, espero haberte ayudado.

Cesar Esteban's picture
Cesar Esteban
Mon, 2011-01-31 20:39

entonces un javascript no lo interpreta la aplicacion java que instalamos en nuestro sistema?, si que es una especie de un lenguaje de programación interpretado?

Martin Olivera's picture
Martin Olivera
Tue, 2011-02-01 00:10

estamos fuera de topico ya en el curso de PHP, jeje, pero esta bueno aclararlo
javascript y java son dos lenguajes completamente distintos
http://es.wikipedia.org/wiki/JavaScript

hechos por empresas diferentes, y con finalidades diferentes
JavaScript es un lenguaje interpretado, ejecutado por los navegadores Web, es decir en la computadora del usuario web, para los serrvidores es transparente

http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
Java es un lenguaje multiproposito pultiplataforma, diseñado originalmente para ejecutarse en dispositivos diversos interconectados (idea que hoy se ha concretado un poco para los celulares), pero que ha crecido sobre todo como lenugaje para soluciones corporativas de alta confiabilidad, y si bien tiene algunas partes de su especificación relacionadas con el uso en la web (que lenguaje hoy no lo tiene...) digamos que su foco en la robustez ha hecho que sea principalmente adoptado por grandes empresas para el desarrollo de sus sistemas productivos

Francisco  Cerdas's picture
Francisco Cerdas
Tue, 2011-02-01 07:00

Correcto Martin, nada mas para complementar lo que dices, muy importante esa característica de "LENGUAJE INTERPRETADO", eso nos dice que no es necesario compilación previa para ejecutar los scripts. Es decir los programadas creados con Javascript (el cual su verdadero nombre es ECMAScript según la convención), se pueden probar directamente en el ordenador sin necesidad de procesos intermedios. No hay que confundir Javascript con applets (los cuales si necesitan la Java Virtual Machine), pero eso es otro cuento aparte, que de momento solo interesa somo cultura general, porque no hay que desviar el foco de atencion: PHP

Diego Valencia's picture
Diego Valencia
Tue, 2011-02-01 00:23

Cesar, lo que he podido entender siguiendo el hilo del foro es que el javascript lo interpreta pero el cliente, que en ése caso sería el navegador ... y claro debe uno tener instalado la consola normal de java que utilizan los navegadores.

Espero sirva de ayuda.

Martin Olivera's picture
Martin Olivera
Tue, 2011-02-01 16:26

solo una aclaracion reforzando la diferencia, java NO ES javascript, son legujaes diferentes
javascript lo interpreta el cliente, el navegador, y para eso debe tener habilitada la ejecucion de javascript

tambien hay consolas de java para navegadores, pero sirven para correr programas java (los antiguos java applets, ya obsoletos)

Martin Olivera's picture
Martin Olivera
Tue, 2011-02-01 00:37

Encontre este manual y me parece muy bien escrito, queria compartirlo

http://www.forosdelweb.com/wiki/Manual_de_PHP:_Sintaxis_de_programaci%C3...

1 person liked this
Cesar Esteban's picture
Cesar Esteban
Wed, 2011-02-02 00:48

Martin ese manual que posteaste esta buenisimo, estoy estudiando de el, tambien aporto otro manual que encontre en la web espero nos beneficie.
http://www.tutorialesfacil.com.ar/php/index.htm

sasu Arias's picture
sasu Arias
Tue, 2011-02-01 04:59

Que tal Martin ,
me gustarías saber si seria bueno, que de una ves mi persona fuera aprendido a saber bajo cual o cuales escenarios debería de trabajar con comillas simples o dobles.

Saludos para ti y para todos que tuvieron la dicha de ser parte de este curso.

Martin Olivera's picture
Martin Olivera
Tue, 2011-02-01 16:15

Comillas simples '' o dobles "" para textos en PHP

Para delimitar textos en PHP se pueden usar comillas simples (apóstrofos en realidad) o dobles, la diferencia es que las simples son TEXTUALES, es decir que todo lo que este 'puesto entre comillas simples' sera mostrado literalmente en la pagina resultante, mientras que lo que se pone "entre comillas dobles" es procesado de un modo INTELIGENTE y permite incluir dentro del texto variables y algunas expresiones, recien ahora comenzaremos a ver variables - en PHP comienzan con el signo $ - pero como para darles una idea, si yo tengo una variable $nombre que contiene el nombre del usuario logueado

<?php
  
echo "Bienvenido $nombre a nuestro sitio web!";
?>

en lugar de mostrar la palabra $nombre mostrara el valor que contiene esa variable, en cambio si ponemos lo mismo con comillas simples

<?php
  
echo 'Bienvenido $nombre a nuestro sitio web!';
?>

veremos textualmente Bienvenido $nombre a nuestro sitio web!

Hector Ocegueda's picture
Hector Ocegueda
Wed, 2011-02-02 08:33

Lo que podemos hacer con comillas simples si queremos usar variables se podria usar asi

<?php
  
echo 'Bienvenido '.$nombre.' a nuestro sitio web!';
?>

los puntos son para unir (mejor dicho concatenar) textos ya sea con otras variables o otros textos sin necesidad de poner otro echo, espero no haberme adelantado mucho saludos.

Martin Olivera's picture
Martin Olivera
Thu, 2011-02-03 00:19

Variables en PHP

comienzan con el signo $ seguido de letras y numeros
ej. $precio, $saludo, $descuento, $NombreCompleto

diferencia entre mayusculas y minusculas (case-sensitive) es decir que $precio es una variable, $Precio es otra y $pReCio es otra distinta.

Una variable en PHP admite valores de todo tipo: numeros enteros, decimales, textos, verdadero/falso y otros, y cambia de tipo automagicamente si se le cambia el contenido.

A diferencia de otros lenguajes de programacion, las variables en PHP no se declaran ni definen, simplemente con usarlas por primera vez ya "aparecen"

asignaciones de variables:

  $precio = 27.50;
  $producto = "Impresora";
  $tieneDescuento = false;

Martin Olivera's picture
Martin Olivera
Thu, 2011-02-03 00:34

Sintaxis basica en PHP

ademas de los separadores/delimitadores que ya conocimos <?php ?> veremos algunas otras pautas generales de la sintaxis PHP

dentro de un programa PHP las instrucciones se separan con ; (punto y coma). Para facilitar la lectura de los programadores tambien se suele usar ubicar una instruccion por linea, con un punto y coma al final y un cambio de renglon

  $fecha = date("d/m/Y");
  echo "Hoy es $fecha";

pero los saltos de renglon no son necesarios ni significan nada, estas dos formas alternativas, funcionan de igual manera (aunque son menos claras para leer)
sin cambio de linea
  $fecha = date("d/m/Y"); echo "Hoy es $fecha";

con muchos cambios de linea

  $fecha
=
     date("d/m/Y")
;   echo
  "Hoy es $fecha"

;

Otros simbolos con sentido importante en PHP son las llaves { } que se usan para agrupar un bloque de codigo. El sentido de agrupar bloques de codigo puede ser util por ejemplo en

bucles

  while ($numero < 100)
  {
    echo "El numero vale $numero<br/>";
    $numero++; //lo aumento para que llegue a 100
  }

condicionales

  if ($numero1 > $numero2)
  {
    echo "El primer numero es mayor<br/>";
    $dif = $numero1 - $numero2;
    echo "La diferencia es $dif";
  }
  else if ($numero1 < $numero2)
  {
    echo "El primer numero es menor<br/>";
    $dif = $numero2 - $numero1;
    echo "La diferencia es $dif";
  }
  else
  {
    echo "Los dos numeros son iguales<br/>";
  }

ceres's picture
ceres
Thu, 2011-02-03 06:58

Hola. Tengo una pregunta. Si una línea de código se vuelve demasiado larga y quiero, por ejemplo, mantener todas las líneas en menos de 80 caracteres ¿Cómo continúo en una nueva línea de texto?
Gracias.

Martin Olivera's picture
Martin Olivera
Thu, 2011-02-03 18:05

podes cortar las lineas en varios lugares: entre operadores, entre argumentos de funcion, si tenes textos muy largos podes cortarlos y concatenarlos, ej:

  $eldobledeunterciodelpromediode12valores = ($valor1 + $valor2 +
     $valor3 + $valor4 + $valor5 + $valor6 + $valor7 + $valor8
     +  $valor9 + $valor10 + $valor11 + $valor12) / 12 *
          2 / 3;

   funcionquepermiteimprimir($textolargoparaimprimir, funcion_que_acomoda_un_texto_por_filas_y_columnas(
       $filasAOcupar, $columnasAOcupar));

   echo "El texto mas largo que me banco en una sola linea sin cortar el renglon es de unas cuant".
        "as lineas pero de todas maneras me gusta cortarlo con un punto que permite concatenar ad".
        "onde se me da la gana";

ceres's picture
ceres
Thu, 2011-02-03 19:43

Entendido, muchas gracias.

Horus Camacho's picture
Horus Camacho
Thu, 2011-02-03 07:37

Hola, estoy teniendo problemas...
Estoy trabajando con el servido que viene por default en mi mac... Pero cuando abro los archivos php me sale el código.

Martin Olivera's picture
Martin Olivera
Thu, 2011-02-03 18:08

si en el navegador sale el codigo no esta andando el servidor, como los navegas? http://localhost/ o http://127.0.0.1 ?
que extension tienen, .php?
cual es el navegador que usas? de que manera los "abris"?

Pablo Herrera's picture
Pablo Herrera
Tue, 2011-02-08 01:18

En mac te recomiendo usar MAMP (a pesar de que SL trae Apache y PHP preinstados). Trae Apache, PHP y MySQL, es para los que no se quieren complicar la vida... http://bit.ly/j9uy1

Eddy Hernandez's picture
Eddy Hernandez
Thu, 2011-02-10 20:09

Hola,Alguien me puede explicar porque al ejecutar el ejemplo de la semana 2 agregar_alumno.php se ejecuta primero el html formulario.html
claro está que el formulario se debe completar para que agregar_alumno retome con extract el arreglo de variables.
será una propiedad de la función extract mostrarlo antes??
mi lógica de programación me a confundido

Eddy Hernandez's picture
Eddy Hernandez
Thu, 2011-02-10 20:21

ya entendí, al ejecutarse el agregar_alumno.php en la condición if ($usuarioP2PU == "") hace un readfile(formulario.html)
jejej gracias