Videopráctica de PHP: Aplicación tablón de anuncios II

  • Por
  • PHP
Videotutorial PHP en el que realizamos la segunda práctica de creación de una aplicación de tablón de anuncios, para colocar unas imágenes de banderas de países.
Presentamos la segunda parte de la práctica del tablón de anuncios, en la que estamos realizando paso por paso una primera aplicación web en PHP. En esta ocasión vamos a trabajar para implementar en nuestro sitio un sistema para mostrar las banderas de los países del mundo.

Este material se engloba dentro del Videotutorial de PHP que estamos publicando desde hace tiempo en DesarrolloWeb.com. Además, para las personas que llegan a este vídeo sin haber tratado otros anteriores, sería importante ver antes el videotutorial de la primera práctica de creación del tablón de anuncios.

En esta segunda parte vamos a trabajar sobre los países del mundo que tenemos en la aplicación y que nos sirven para clasificar los anuncios del tablón por su procedencia. Hasta el momento mostramos sólo el nombre del país y nuestro objetivo, entre otros, es mostrar una imagen con la bandera del mismo.

De entre todas las posibilidades para mostrar una imagen para cada uno de los países vamos a utilizar una que resultará bien simple para todo el mundo, incluso para las personas con menos experiencia. Se trata simplemente de guardar en la tabla de países el nombre del archivo de la imagen del país. Además, luego copiaremos todas las imágenes de las banderas en la carpeta de nuestro proyecto, para que estén disponibles en él.

Luego nos encargaremos de mejorar un poco la presentación de las banderitas, con un poquito de maquetación CSS y algunos estilos también asignados por medio de las hojas de estilo en cascada. Esto de la maquetación CSS no sería temario relativo a PHP, pero sí resulta importante para que nuestras páginas estén bien realizadas desde el punto de vista de la codificación y de los estándares actuales para la creación de páginas web.

Para continuar con la práctica avanzaremos un poco con la creación de una página donde se muestren todos los anuncios de un determinado país. Haremos que la banderita de cada país colocado en los anuncios sea un enlace a la página donde se muestra todo lo que se encuentre sobre ese país en concreto. Para esto enviamos por GET el identificador del país sobre el que queremos ver los anuncios y en la página de portada de la aplicación hacemos un tratamiento para que, si se recibe el identificador de un país, se seleccionen de la base de datos todos los anuncios de ese país enviado.

Veremos entonces cómo realizar sentencias SQL un poco más complejas y cómo, a partir de condicionales IF insertados en la programación PHP, podemos hacer unas cosas u otras con la base de datos dependiendo del estado de nuestras variables.

Además veremos cómo personalizar otros aspectos de la página también si se recibe un país, para que los mensajes de la aplicación sean personalizados según el país que estamos accediendo.

Acabaremos la actual práctica mostrando una serie de comprobaciones que se pueden realizar para hacer la aplicación más robusta. Se trata simplemente de revisar el identificador de los países, que recibimos por GET, para ver es válido antes de realizar la búsqueda de anuncios de un país. Así pues, veremos como realizar con PHP una validación de un dato recibido por GET antes de utilizarlo en la página. Un identificador válido será aquel que tenga sólo caracteres numéricos y para comprobar ese importante detalle, utilizaremos alguna de las funciones disponibles en PHP.

Así pues, en este vídeo veremos varias cosas que nos ayudarán a mejorar un poco nuestra aplicación de tablón de anuncios en PHP. Tenemos mucho por delante, pero al menos lo que vamos haciendo queda bastante bien, como podréis ver en el videotutorial.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Juan Carlos

18/1/2011
POO
Seria genial que este tuto lo hicieron con POO.

Saludos.

midesweb

10/3/2011
Sobre POO...
Calma, tiempo al tiempo. Yo creo que para los que están viendo el videotutorial de PHP hasta este punto, es un poco pronto para introducir la Programación Orientada a Objetos. Más adelante tocaremos esos asuntos, pero de momento es interesante que las personas puedan ver y practicar con un sitio web realizado con programación tradicional en PHP.
Gracias de todos modos por el comentario!

midesweb

28/9/2011
Yo tampoco capto tu duda
Erik,

No te llego a entender la duda. Ambos if son muy parecidos. yo creo que en la práctica podrías utilizar cualquiera de los dos.

Eduardo_CeHer

17/12/2011
PROBLEMAS CON FORMULARIOS REENTRANTES
buen dia!!
Antes que nada felicidades por el sitio estoy aprendiendo bastante con estos tutoriales, gracias jejej... bueno voy al asunto:

estoy siguiendo los tutoriales paso a paso, pero tengo problemas con el asunto de las paginas reentrantes ya que no me estan funcionado, por ejemplo: al momento dar click en un pais para que me devuelva solo los anuncios de ese pais en especifico, no lo hace, y no me muestra ningun error, lo mismo me paso con el codigo de "enviar_anuncios.php" me sigue apareciendo el formulario al momento de comprobar si el usuario escribe algo en el titulo del anuncio o cuerpo del anuncio y los mensajes de comprobacion if($_POST["titulo_anuncio"]=="")... me aparecen en la parte de arriba de la pagina pero el formulario sigue ahi, cosa que en el video desaparece... no se si me explico.


NO SE SI ME PUEDEN AYUDAR... estoy jalado de los pelos!!
Mando los archivos de" index.php" , "enviar_anuncios.php" tienen minimos cambios pero es practicamente lo mismo, de antemano gracias!!


--- "ENVIAR_ANUNCIO.PHP" ---

<?php
include_once ("librerias/funciones_comunes.php");

$titulo_pagina = "Enviar Anuncio al Tablón";
include("/plantillas/cabecera.php");

$conexion = conexion_base_datos();

?>

<p>
Desde esta pagina puedes enviar los anuncios
</p>


<?php

if($_POST){
if($_POST["titulo_anuncio"]==""){
echo "<h2>Porfavor ingresa un titulo</h2>";
}elseif($_POST["cuerpo_anuncio"]==""){
echo "<h2>Porfavor ingresa un contenido</h2>";
}else{
// echo"<h2>He recibido datos y se ingresaron correctamente</h2>";
$ssql = "insert into anuncio (titulo, cuerpo_anuncio, id_pais) values ('". $_POST["titulo_anuncio"] . "', '" . $_POST["cuerpo_anuncio"] . "', " . $_POST["id_pais"] . ")";
if (mysql_query($ssql)){
echo "<h2>Anuncio insertado correctamente</h2>";
}else{
echo "<h2>Existio un error al ingresar el anuncio</h2>";
}
}

}else{

}
?>


<form action="<?php $_SERVER["PHP_SELF"] ?>" method="post">
<div class="campoform">
Titulo de Anuncio:
<br/>
<input type="text" name="titulo_anuncio" size="35" />
</div>
<div class="campoform">
Contenido del Anuncio:
<br/>
<textarea cols="30" rows="10" name="cuerpo_anuncio"></textarea>
</div>
<div class="campoform">
Pais al que va dirigido:
<br/>
<select name="id_pais">
<?php
$ssql = "select * from pais order by nombre_pais";
$rs = mysql_query($ssql);
while ($fila = mysql_fetch_array($rs)){
echo "<option value=" . $fila["id_pais"] . ">" . $fila["nombre_pais"] . "</option>";
}
mysql_free_result($rs);
?>
</select>
</div>
<div class="campoform">
<input type="submit" value="Enviar" />
</div>
</form>

<?php

mysql_close($conexion);


include("plantillas/pie.php");
?>




--- "INDEX.PHP" ---

<?php
include_once ("librerias/funciones_comunes.php");
$titulo_pagina = "Tablón de Anuncios";
$descripcion = "pagina de prueba includes pagina1";
$keywords = "include, include_once, require, require_once, pag2";
include("/plantillas/cabecera.php");

$conexion = conexion_base_datos();

?>

<p>Ultimos Anuncios Recibidos</p>

<?php


$ssql = "select * from anuncio,pais where anuncio.id_pais = pais.id_pais order by id_tablon desc limit 7";

if (isset($_GET["id_pais"])){
$id_pais = $_GET["id_pais"];
$ssql .= "and anuncio.id_pais=" . $id_pais;
}

$rs = mysql_query ($ssql);

while ($fila = mysql_fetch_array($rs)){
echo "<div class='estiloanuncio'>";
echo "<b>" . $fila["titulo"] . "</b>";
echo "<br/>";
echo $fila["cuerpo_anuncio"];
echo "<br/>";
echo '<a href="index.php?pais=' .$fila["id_pais"] . '"><img src="img/banderas/' . $fila["imagen_pais"] . '"width="32" height="32" alt="titulo" />'; //mostramos la bandera del pais
echo "<b class='estilopais'>&nbsp;&nbsp;&nbsp;Origen: " . $fila["nombre_pais"] . "</b></a>"; //con esto mostramos el pais de origen
echo "</div>";
}

mysql_free_result($rs);
mysql_close($conexion);

include("plantillas/pie.php");
?>

Eduardo_CeHer

18/12/2011
Ya encontre los errores!!
ya encontre cuales eran los errores... de todas maneras gracias!!!

Gabriel.

14/3/2012
Nivel
¿Alguien sabe dentro de que nivel está clasifcado este tipo de aplicaciones?

Por ejemplo:

*muy básico.
*básico
*básico intermedio
*intermedio
*etc

Ian Barros

03/5/2012
Codigo Fuente Practica Tablon
Hola, me gustaria saber si hay algun recurso en donde podamos encontrar el codigo fuente del proyecto de tablones

angel

05/6/2012
Me da error
Hola, gracias por los vídeos, son muy útiles.

Por más que reviso el código, no soy capaz de encontrar el fallo.

A la hora de seleccionar las noticias por países me da el siguiente error: """""Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwww ablonindex.php on line 29""""""


Mi código index.php por si me pudieran ayudar:


<?php
$raiz ="./";
include_once("librerias/funciones-comunes.php");

$titulo_pagina = "Tablon de anuncios";
include("plantillas/cabecera.php");

$conexion =conecta_base_datos();

$ssql ="select * from anuncio, pais where anuncio.id_pais = pais.id_pais";
echo "<p>";
if (isset($_GET["pais"]) && ctype_digit($_GET["pais"])){
$id_pais = $_GET["pais"];
$ssql .= "and anuncio.id_pais=" . $id_pais;
echo 'ultimos 5 anuncios de ';
echo dame_nombre_pais($id_pais);
}else{
echo 'Ultimos 5 anuncios de todos los paises';
}
echo '</p>';
$ssql .= " order by id_anuncio desc limit 5";

//echo "<p>" . $ssql . "</p>";

$rs = mysql_query($ssql);

//echo "<p>" . mysql_error() . "</p>";

if(mysql_num_rows($rs)>0){
while ($fila = mysql_fetch_array($rs)){
echo "<div class='lineaanuncio'>";
echo "<p><b>" .$fila["titulo_anuncio"] . "</b>";
echo "</br>";
echo $fila["cuerpo_anuncio"];
echo "</p>";
echo '<div class="datosadicionales">';
echo '<a href="index.php?pais=' . $fila["id_pais"] .'"><img border=0 src="images/iconos-paises/' .$fila["imagen_pais"] .'" width="32" height="22">';
echo "<br>" . $fila["nombre_pais"] . "</a>";
echo "</div>";
echo "</div>";
}
}else{
echo "<p>No se han encontrado anuncios para mostrar..</p>";

}

include("plantillas/pie.php");
?>


Muchas gracias por todo. Sigan a delante. Animo.

nicg006

27/7/2012
Parse error
buen dia estoy con este tuto y me he topado con este error que no se como solucionarlo: Parse error: parse error in C:wampwww ablonanunciosindex.php on line 17
y la linea 17 es donde declaro la variable $idpais asi:
if(isset($_GET["id_pais"])){
$idpais = $_GET["id_pais"];..............................................lin 17
$ssql. = " and id_pais=" . $idpais;
}
aqui en esta parte me tira el error pero no por que

Sershi

29/4/2013
Mensaje de error en minuto 30.
Hola Desarrolloweb.com, me podeis explicar porque en el minuto 30 me sale este error?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'anuncio.id_pais=2 order by id_anuncio desc limit 5' at line 1

Gracias!