Nueva pregunta

Pregunta:

Fecha: 18-08-2015 04:47:27 (En Español)

Páginas Dinámicas - PHP[Resuelta]

Hola Foro.
Buen día...

En el siguiente link comparto un ejercicio sencillo que explica el manejo de "Páginas Dinámicas con PHP".
Está dirigido para lo que recién se inician en PHP y que ya tienen una idea de como desarrollar Scripts en este lenguaje.
El el se encuentra un archivo ".doc" y un ".zip".
En el primero hago una reseña en el segundo está el ejercicio resuelto.
Recomiendo que lean primero el archivo ".doc"; y luego si desean probar el ejercicio lo descomprimen y lo ejecutan. Yo particularmente aconsejo que en base a la parte teórica; lo resuelvan con su lógica. (El ".zip" es para que lo vean como ejemplo). Pero lo mejor, es que cada uno lo desarrolle como mejor le dicte su forma de programar; y no; "copiar y pegar" sin antes analizar. Esto es un "vicio" que se ha gestado desde que existe internet. Yo no lo comparto.

El enunciado original del ejercicio:
"Hacer una página con una serie de links (pueden estar aplicados a un texto o a pequeñas fotografías), cada uno de los cuales "pasa" información sobre un producto mediante tres variables (el nombre y el precio).
La página que recibe los links, mostrará el producto y el precio que fueron pasados en las variables (funcionará como plantilla o "molde" para mostrar distinto contenido según el link)."

Es solo un ejemplo práctico ustedes pueden mejorarlo y adaptarlo a sus preferencias.
Lo único exigible es que compartan la experiencia o posteen ejemplos similares al tema del título.

lo subí en Dropbox. (No se usarlo muy bien, si no pueden acceder al material me avisan.)
Paginas_Dinamicas

Saludos
Etiquetas: Aporte - Empezar a programar - HTML - PHP Votos: 1 - Respuestas: 11 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 18-08-2015 12:10:45 Hola Pablo,
    Todos iniciamos asi alguna vez. Espero no te molestes de la critica constructiva que te hare y puedas beneficiarte de la misma. Lo hare utilizando lenguaje casual, como si fueramos amigos y en tono de juego para que sea mas ameno.
    Me han sangrado los ojos jajajaja :P
    Tu solucion cumple con el proposito pero lo hace de una manera sumamente ineficiente e insegura. Aqui es donde entran en juego el hecho de que programar bien no solo significa arrojar codigo, hay que conocer el lenguaje desde adentro y ademas el entorno en el que programas.
    El uso excesivo de echo consume recursos innecesarios. La regla de oro en este caso es, si no necesita interpretarse no lo mandes al interprete.
    La mayor parte de los bloques que tienes no son PHP por lo que no es necesario que mandes todo al interprete, creeme, esas micras de segundo que ahorrras se agradecen bastante en desarrollos serios o en ambientes donde tu infraestructura no es la optima.
    No uses DOCTYPES viejos, procura utilizar el adecuado para HTML5.
    Para charset siempre es recomendable UTF-8. Es el estandar y te ahorraras muchos dolores de cabeza despues.
    Repites el cuerpo de tu mensaje, eso no es necesario pues tienes un condicional, mal colocado, pero lo tienes.
    Ojo que para saltos de linea siempre es recomendable utilizar PHP_EOL. Tambien te ahorrars muchos dolores de cabeza con eso.
    En la medida de lo posible trata de que tus elementos en HTML no esten "huerfanos", recuerda que puedes usar span ;)
    Otro aspecto muy importante es que tu codigo es vulnerable, pon atencion al filtrado y codificado de tus variables. Tus usuarios y tus datos te lo van a agradecer inmensamente.
    Si vas a escribir un archivo completamente en PHP es buena practica NO cerrar con '?>'
    Hay varias maneras correctas en que puedes presentar el mismo archivo, te dejo una sencilla para fines comparativos.
    <?php
    //Good practice, always init your variables to avoid awful notice messages
    $producto = NULL;
    $precio = NULL;
    $imagen = NULL;
    $showProduct = false;
    if(isset($_GET['producto']) && isset($_GET['precio']) && isset($_GET['imagen'])) {
        //Sanitize your input!
        //Sanitation here is for example purpose, you will have to adjust accordingly. Remember to encode on output only :)
        $producto = filter_input(INPUT_GET, 'producto', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        $precio = filter_input(INPUT_GET, 'precio', FILTER_SANITIZE_NUMBER_FLOAT); //or $precio = (float)$_GET['precio'];
        //Never a good idea to pass path info NEVER!!! this is just to be used for this example.
        $imagen = filter_input(INPUT_GET, 'imagen', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        $showProduct = true;
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Muestrario</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="estilos.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    <div class="est_13"><p class="est_16">Muebles OMEGA</p></div>
    <div class="est_10">
    Los mejores precios del mercado y las mejores ofertas.Con productos traidos de f&aacute;brica, con la mejor calidad, dise&ntilde;o y variados colores.></div>
    <div class="Marco">
    <div class="est_6">Producto: <?=$producto?></div>
    <?php
    if($showProduct) {
        //HEREDOC is always better for code readability :P
        echo <<< HTML
    <img id="" src="{$imagen}" alt="" />
    <div class="est_18">Precio: ${$precio}</div>
    
    HTML;
    }
    ?>
    <div class="est_6">
    <a href="index.html"> Volver </a>
     </div>
     </div>
    <div class="est_1">
    Domicilio 1234 - Ciudad - Provincia - tel. (0000) 1234567 - www.muebleria.com.ar
    </div>
    </body>
    </html>
    
      Votos: 2 - Link respuesta
     
  • Fecha: 18-08-2015 21:10:08 Pablo muchas gracias por compartir tu ejemplo
    Ernesto se te agradece mucho por tu tan clara e imprescindible explicación a la hora de programar, seguro que nos ayudara a muchos.

    Por otro lado, en vez de
    <div class="est_6">Producto: <?=$producto?></div>


    Seria mejor?
    <div class="est_6">Producto: <?php echo $producto ?></div>


    Saludos a ambos
      Votos: 2 - Link respuesta
     
  • Fecha: 19-08-2015 05:28:36 Hola Pablo ... hola a todos
    Pablo he visto tu proyecto y me quede pensando en lo siguiente:

    1.- Si tenes un catalogo de productos, los cuales a la vez, tiene articulos
    Me pregunto:
    ¿Porque no utilizas una Base de Datos y te manejas con Tablas?
    Ejemplo
    Base de Datos: muebleria
    Tabla catalogoDeProductos (id_producto, nombreProducto)
    Tabla articulos (id_articulo, id_producto, nombreDelArticulo, precio, descripcion, ruta_foto)
    2.- De esta forma vas a lograr que:
    a) Tu proyecto sea escalable (Podras poner muchos articulos y muchos productos, sin modificar tu sript)
    b) La variable que pases por GET, se limitara a un id y no a tantas variables (Tambien lo podes hacer por POST)
    3.- Tambien para una mejor lectura, esta bueno, separar el codigo PHP del HTML
    Para lo cual utilizaras "require" o "include", segun corresponda
    4.- Para todo ello podes utilizar PHP y MySQLI, bajos los metodos POO o Prosedural, lo cual con el tiempo veras que trabajaste una sola vez cuanto tengas un caso similar.

    Para finalizar quede claro que: "Todos los caminos conducen a Roma", el tema es como llegar caminando menos ...

    Un saludo a todos
      Votos: 1 - Link respuesta
     
  • Fecha: 19-08-2015 05:59:01 Daniel,
    Apoyo tu comentario pero es un ejercicio practico y en el enunciado del ejercicio no menciona el uso de bases de datos; pareciera que es para principiantes. Me imagino que el proposito del mismo es mostrar la conveniencia de utilizar paginas dinamicas mostrando puntos clave como paso de variables, condicional de respuestas y simplicidad de codigo.
    Si a un principiante le muestras bases de datos desde el primer dia lo vuelves loco jajajaja
      Votos: 0 - Link respuesta
     
  • Fecha: 19-08-2015 06:02:56 Walter,
    Concuerdo contigo, no soy fan de utilizar los short tags. Lo puse para fines practicos y porque a partir de PHP 5.3 (no recuerdo bien) siempre estara disponible la forma "<?= ?>"
    La mejor practica a mi gusto es <?php echo $var; ?> pero es una opcion que se tiene
      Votos: 1 - Link respuesta
     
  • Fecha: 19-08-2015 06:47:59 Ernesto:
    Comparto contigo que es mejor <?php echo $var; ?> a <?= ?> lo que no implica que lo otro sea incorrecto, es que en mi caso, me parece mas prolijo ...
      Votos: 0 - Link respuesta
     
  • Fecha: 19-08-2015 10:09:31 Muy interesante todos los comentarios, aprovecho para hacer mi aporte:

    No es recomendable utilizar el atajo de "echo" por medio de las etiquetas cortas "<?=$var ?>" por un tema de portablidad de código, no siempre nuestro código se ejecutará en servidores con el parámetro de configuración short_open_tag=On (parámetro configurable en el archivo php.ini), por lo que siempre debemos procurar utilizar la forma larga <?php echo $var; ?>

    Saludos,
      Votos: 1 - Link respuesta
     
  • Fecha: 19-08-2015 11:29:58 Me parece que estaría mejor que el codigo y el doc este en el post ;)
    para que no se pierda el hilo
    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 19-08-2015 13:14:11 Gracias Fernando, solo una aclaracion: a partir de PHP 5.4 el short tag alias para echo "<?= ?>" no depende de la configuracion y estara siempre disponible. La configuracion solo afecta al short tag "<? ?>" que se llega a utilizar en lugar de "<?php ?>"

    Ojo que para PHP7 los tags estilo ASP <%, %>, <%=, y el tag de inclusion <script language="php"> ya NO seran soportados.
      Votos: 1 - Link respuesta
     
  • Fecha: 19-08-2015 14:06:03 y las versiones anteriores de PHP 5.4 el short tag para echo "<?= ?>" estan disponibles?
    creo que Fernando se refería a eso, que por portabilidad sin depender de versiones era mejor utilizar
    <?php echo $var; ?>
      Votos: 1 - Link respuesta
     
  • Fecha: 20-08-2015 04:37:13 Sí están disponibles pero en esas versiones SÍ dependen de la configuración por eso es que no se consideraba buena práctica utilizarlas.
    Concuerdo contigo respecto a la portabilidad.
    Creo que a raíz de que ahora siempre estarán activas sera cuestión de gusto si las usas o no, sin embargo cabe aclarar que PSR-1 considera que el uso de <?= es adecuado por lo que utilizar esa nomenclatura puede ser considerado buena práctica.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com