Foros del Web » Programando para Internet » PHP »

Separar codigo PHP y HTML

Estas en el tema de Separar codigo PHP y HTML en el foro de PHP en Foros del Web. Hola como estan, soy principiante y estoy aprendiendo por mi cuenta PHP. me gustaria saber donde encotrar algun ejemplo de paginas separadas el HMTL del ...
  #1 (permalink)  
Antiguo 18/03/2006, 15:44
 
Fecha de Ingreso: marzo-2006
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 0
Separar codigo PHP y HTML

Hola como estan, soy principiante y estoy aprendiendo por mi cuenta PHP.
me gustaria saber donde encotrar algun ejemplo de paginas separadas el HMTL del codigo PHP.
Quiero hacer mis paginas(diseño) y la logica en otras paginas q sean "llamadas" cuando las necesite ej:para la conexion a la base de datos , ejecutar sentencias SQL etc...
pero me faltan ejemplos de cual es la forma de hacer esto(desarrollar con codigo separado) cual es la mejor manera de hacer esto? ...

PD.la separacion del codigo PHP y HTML es lo mas adecuado verdad.. ?? espero sus sugerencias.
gracias de antemano
  #2 (permalink)  
Antiguo 18/03/2006, 16:04
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
Bueno solo decirte ke el codigo PHP siempre esta embebido dentro de codigo HTML. Para ilustrar este punto hemos de recordar aspectos básicos en el aprendizaje de PHP. PHP es un lenguaje server-side (al menos en su aplicación para la programación web). Nuestro código PHP es digerido por el servidor, interpretado y se devuelve al cliente como HTML puro que el navegador es capaz de entender.

Es muy común ver código de esta forma:

Código PHP:
<?
if (isset($_POST['enviar'])) {
    echo 
"var1: ".$_POST['var1']."<br />";
    echo 
"var2: ".$_POST['var2']."<br />";
}
else {
    echo 
"<form name=\"formulario\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">
    <input type=\"text\" name=\"var1\">
    <input type=\"text\" name=\"var2\">
    <input type=\"submit\" name=\"enviar\" value=\"Enviar\">
    </form>"
;
}
?>
Cada línea de este script es interpretada por PHP, los echos arrojan el resultado al navegador, si se ha entrado en el else.

Sin embargo, por la propia naturaleza de la web, el código HTML no necesita ser parseado de ninguna manera, como acabamos de decir PHP lo único que hace al final es entregar HTML al cliente. ¿Para qué parsear pues echos que solo contienen HTML? Con el concepto básico de server-side también aprendimos que PHP es un lenguaje embebido en el código HTML y que los tags <? ?> sirven para abrir y cerrar el "modo" PHP.

Apliquemos pues, lo que aprendimos:

Código PHP:
<?
if (isset($_POST['enviar'])) {
    echo 
"var1: ".$_POST['var1']."<br />";
    echo 
"var2: ".$_POST['var2']."<br />";
}
else {  
?>

<form name="formulario" method="POST" action="<?=$_SERVER['PHP_SELF']?>">
  <input type="text" name="var1">
  <input type="text" name="var2">
  <input type="submit" name="enviar" value="Enviar">
</form>

<? ?>
Este código es mucho más claro, limpio y rápido, ahorramos al preprocesador un montón de líneas a interpretar, que de cualquier modo iban a ser código HTML.

echo, como cualquier otra operación de entrada/salida que sucede en nuestro ordenador es lento por naturaleza. El else anterior se respeta de cualquier forma, y lo que se muestra es el código contenido en él, tanto en modo PHP como no. Esta práctica aumenta la legibilidad y disminuye la carga del procesador: el parseador simplemente "ignora" las líneas y las arroja tal cual.

De cada cuál depende si es oportuno o no abrir y cerrar constantemente los tags para cualquier código HTML. A lo mejor no merece la pena hacerlo para una sola línea:

Código PHP:
<?
  
echo "<a href=\"pagina.php\">".$link."</a>";
?>
Espero que con esto tengas una idea de como se manejan PHP y HTML

Saludos
  #3 (permalink)  
Antiguo 18/03/2006, 16:57
 
Fecha de Ingreso: marzo-2006
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 0
Gracias por tu respuesta y la explicacion q me das .. aun lo q no me queda claro es por ejemplo si quiero ejecutar sentencias SQL ..
tendria mi HTML y en una parte de eso .. me imgino q "llamo"(por asi decirlo) a una pagina PHP q tiene la sentencia y el codigo q quiero ejecutar .. o me equivoco?
entonces como se hace esto? me gustaira un pekeño ejemplo =D gracias
  #4 (permalink)  
Antiguo 18/03/2006, 16:58
 
Fecha de Ingreso: marzo-2006
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 0
Bueno mas que todo, lo que deseo saber si esa es la manera correcta
desarrollar con PHP. Gracias =)
  #5 (permalink)  
Antiguo 27/03/2006, 13:10
 
Fecha de Ingreso: mayo-2002
Ubicación: En MVD
Mensajes: 34
Antigüedad: 15 años, 7 meses
Puntos: 0
Hola Zen
Muchos de los compañeros del foro tendrán sus métodos propios y otros tantos se ceñirán a estándares al respecto.
Cada uno tiene sus puntos a favor y sus puntos en contra.
Tu iniciativa de encarar las tareas de programación abstraída de la presentación es muy buena, sin embargo la manera en que se puede abordar el tema es más que variada.
En lo personal he visto cosas extremadamente sencillas y rápidas pero poco flexibles... y he visto de las otras. Ambas cuestan un tiempo de aprendizaje y los resultados son a veces proporcionales a la complejidad y dedicación de la tarea que decidamos a realizar.
Yo puedo contarte mi modo de trabajo que podrán algunos compañeros compartir o criticar, pero mi ánimo es darte un panorama incial para que de allí en más tu veas lo más adecuado.

Imagínate que deseas mostrar una lista de proveedores de tornillos.

Tendríamos una librería que se encargaría de acceder a la base de datos, otra librería que realice las consultas y retorne resultados y 1 pagina que permita ver un listado de proveedores.

Un código de ejemplo podría ser el siguiente:

Código PHP:
<?
//este archivo se puede llamar listado_proveedores.php

include ("mi_libreria_proveedor.php");
$lista obtener_todos_los_proveedores();

?>
<table>
<?
foreach ($lista as $l)
{
?>
 <tr>
  <td><? echo $lista['nombre']?></td>
 </tr>
<?
}
?>
</table>
Y el archivo mi_libreria_proveedor.php tendría lo siguiente:
Código PHP:
<?
include ("mi_libreria_acceso_a_datos.php");
function 
obtener_todos_los_proveedores()
{
   
/*
   me conecto de alguna manera la base de datos y obtengo
   la conexion en la variable $conexion;

   podría realizar la conexión con ayuda de otra librería más, para poder
   centralizar en un único lugar el acceso a la base de datos... 

   esto me permite que en caso de errores o problemas tener que
   solucionarlos en único lugar.
   */

   
$sql "SELECT * FROM proveedores ORDER BY nombre";
   
$recordset mysql_query($sql$conexion);
      
   
$resultado = array ();
   
$i 0;
   while (
$fila mysql_fetch_array($recordset)) {
      
$resultado[$i]['nombre'] = $fila['nombre'];
      
$resultado[$i]['telefono'] = $fila['telefono'];
   }

   
//cierro la conexion si deseo

   //retorno el resultado
   
return $resultado;
}
?>
Como verás, no presté atención a ningún tipo de control (si el resultado de la consulta es 0 filas, etc.) para centrarme en la lógica general más que nada.

La idea es que tengas módulos (que como dije más arriba se pueden estructurar en funciones o en clases y métodos) que te otorguen acceso a tareas comunes (listar, insertar, eliminar, editar, etc), y desde el lugar que los utilizas (listado_proveedores.php) las invoques y retornen la información o el resultado de una operación. La interfaz solamente se dedicaría a mostrar más que nada, en vez de "hacer".

Como también dije más arriba hay técnicas bastante más complejas (pero no las domino ni mucho menos )

Espero que la idea haya sido ilustrativa, suerte !
Greco.-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:48.