Html y php

Hola otra vez, tengo una página en html y quisiera que en una parte en concreto se mostrara el resultado de una consulta a una bbdd en php ( ¿recuerdas el script de mi anterior pregunta?)
Es decir, quisiera que lo siguiente, se mostrara en una parte en concreto de una página html
<?php
/* listar_propiedades.php */
session_start();
if $_SESSION["validado"])
{
echo "Debe ingresar como usuario para ver esta página";
die;
}
require("dbconnect.inc.php");
$qry = "SELECT * FROM Propiedades";
$res = mysql_query($qry);
echo '
<table>
';
while($fila = mysql_fetch_array($res))
{
echo '
<tr>
<td>';
echo $fila[fecha]."</td>
<td>".$fila[referencia]."</td>
<td>".$fila[operacion]."</td>
";
echo "
</tr>
<tr>
";
echo '
<td colspan="3">
<table>
<tr>
<td><img src="images/' . $fila[foto] . '" width="160" height="100">';
echo "</td>
<td>";
echo $fila[descripcion];
echo "</td>
</tr>
</table>
</td>
</tr>
";
}
echo '
</table>
';

1 Respuesta

Respuesta
1
Si quieres que aparezca en un lugar concreto, lo que te recomiendo es que primero diseñes la página HTML y luego introduzcas el código en el lugar escogido.
Para eso puedes ayudarte de un editor HTML o, si sabes suficiente sobre HTML y CSS hacerlo a mano.
En principio, se puede colocar cosas en sitios concretos usando tablas, aunque los más puristas prefieren usar capas (
<div>).
Sino sale nada, puede ser por la instrucción:
require("dbconnect.inc.php");
Que si no encuentra el fichero, aborta la ejecución.
También puede ser que no haya ningún registro que mostrar, porque no hay en la tabla o porque la sentencia SQL es incorrecta (por ejemplo, el nombre de la tabla está mal escrito).
Todo eso lo he comprobado, lo que me refiero que aparece es:
".$fila[referencia]." ".$fila[operacion]."
'; echo " "; echo $fila[descripcion]; echo "
'; ?>
Si lo deas puedes verlo en http://www.joseluisdeluna.es/pageID_7407536.html
Te recomiendo que no partas las cadenas en líneas y evitarás confusiones:
<?php
/* listar_propiedades.php */
session_start();
if $_SESSION["validado"])
{
echo "Debe ingresar como usuario para ver esta página";
die;
}
require("dbconnect.inc.php");
$qry = "SELECT * FROM Propiedades";
$res = mysql_query($qry);
echo '
<table>
';
while($fila = mysql_fetch_array($res))
{
echo '
<tr>
<td>';
echo $fila["fecha"]."</td>
<td>".$fila["referencia"]."</td>
<td>".$fila["operacion"]."</td>
";
echo "
</tr>
<tr>
";
echo '
<td colspan="3">
<table>
<tr>
<td><img src="images/' . $fila["foto"] . '" width="160" height="100">';
echo "</td>
<td>";
echo $fila["descripcion"];
echo "</td>
</tr>
</table>
</td>
</tr>
";
}
echo '
</table>
';
?>
Ten en cuenta que las comillas simples y dobles aunque realizan operaciones similares no son idénticas.
Por ejemplo, para saltar de línea puedes poner \n dentro de comillas dobles pero no funcionará con comillas simples.
He probado lo que sugerías pero sigue mostrando lo mismo
<?php/* listar_propiedades.php */session_start();if $_SESSION["validado"]){echo "Debe ingresar como usuario para ver esta página";die;}require("dbconnect.inc.php");$qry = "SELECT * FROM Propiedades";$res = mysql_query($qry);echo '
<table>
';while($fila = mysql_fetch_array($res)){echo '
<tr>
<td>';echo $fila["fecha"]."</td>
<td>".$fila["referencia"]."</td>
<td>".$fila["operacion"]."</td>
";echo "
</tr>
<tr>
";echo '
<td colspan="3">
<table>
<tr>
<td><img src="images/' . $fila["foto"] . '" width="160" height="100">';echo "</td>
<td>";echo $fila["descripcion"];echo "</td>
</tr>
</table>
</td>
</tr>
";}echo '
</table>
';?>
Puedes repasar la página en el link que antes te dije
Ya miré la página en el link que me mencionas y la he vuelto a mirar otra vez. Evidentemente allí sólo veo el resultado, no puedo ver el código.
De todas formas, parece que no me has entendido bien, puesto que en el código que adjuntas sigues partiendo las cadenas en diferentes líneas. ¿Has probado el código que te envié sin tocarlo?
El problema que tienes es que en la línea del while, hay un echo que abre una comilla simple y antes de cerrarla, cambias de línea.
Haz que tus comillas simples se abran y cierren en la misma línea y no tendrás problemas.
Te envío el código corregido de nuevo:
<?php/* listar_propiedades.php */session_start();if $_SESSION["validado"]){echo "Debe ingresar como usuario para ver esta página";die;}require("dbconnect.inc.php");$qry = "SELECT * FROM Propiedades";$res = mysql_query($qry);
echo '
<table>
';
while($fila = mysql_fetch_array($res)){
echo '
<tr>
<td>';
echo $fila["fecha"]."</td>
\n
<td>".$fila["referencia"]."</td>
\n
<td>".$fila["operacion"]."</td>
\n";
echo "\n
</tr>
\n
<tr>
";
echo '
<td colspan="3">
<table>
<tr>
<td><img src="images/' . $fila["foto"] . '" width="160" height="100">';
echo "</td>
\n
<td>";
echo $fila["descripcion"];
echo "</td>
\n
</tr>
\n
</table>
\n</td>
\n
</tr>
\n";
}
echo '
</table>
';
?>
¿He probado a dejarlo todo en una sola linea y sigo igual
cómo podría pasarte el código pa que lo veas? O pásame el código tuyo a (xxxxxx)
He probado a hacer otro archivo html y sigo igual, ( www.joseluisdeluna.es/listar_propiedades.html ), el código es:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.:Emailbrain Headstart Program:.</title>
<meta content="text/html; charset=iso-8859-1"
http-equiv="Content-Type">
<style type="text/css"><!--body,td,th { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; color: #000000;}body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}a { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; color: #7d9c1b; font-weight: bold;}a:link { text-decoration: none;}a:visited { text-decoration: none; color: #7d9c1b;}a:hover { text-decoration: none; color: #7d9c1b#7d9c1b;}a:active { text-decoration: none; color: #7d9c1b;}.style1 {font-family: Arial, Helvetica, sans-serif}--></style>
<meta name="GENERATOR" content="MSHTML 6.00.6000.16809">
</head>
<body>
<div align="center">
<table border="0" cellpadding="0" cellspacing="0"
width="691">
<!--DWLayoutTable-->
<tbody>
<tr>
<td colspan="5" height="132" valign="top">
<table style="width: 678px; height: 98px;" border="0"
cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tbody>
<tr>
<td colspan="1" rowspan="1"
style="vertical-align: top; height: 71px; width: 676px; text-align: center;"><img
style="width: 494px; height: 71px;" alt=""
src="http://www.joseluisdeluna.es/Cabecera.jpg"><br>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td height="501" valign="top" width="4">
<table bgcolor="#ffffff" border="0"
cellpadding="0" cellspacing="0" width="100%">
<!--DWLayoutTable-->
<tbody>
<tr>
<td height="500" width="4"></td>
</tr>
</tbody>
</table>
</td>
<td rowspan="2" bgcolor="#999999" valign="top"
width="3"></td>
<td rowspan="2" valign="top" width="676">
<?php /* listar_propiedades.php */
session_start();
if $_SESSION["validado"])
{
echo "Debe ingresar como usuario para ver esta página";
die;
}
require("dbconnect.inc.php");
$qry = "SELECT * FROM Propiedades";
$res = mysql_query($qry);
echo '
<table>
';
while($fila = mysql_fetch_array($res))
{
echo '
<tr>
<td>';
echo $fila["fecha"]."</td>
\n
<td>".$fila["referencia"]."</td>
\n
<td>".$fila["operacion"]."</td>
\n";
echo "\n
</tr>
\n
<tr>
";
echo '
<td colspan="3">
<table>
<tr>
<td><img src="images/' . $fila["foto"] . '" width="160" height="100">';
echo "</td>
\n
<td>"; echo $fila["descripcion"];
echo "</td>
\n
</tr>
\n
</table>
\n</td>
\n
</tr>
\n";
}
echo '
</table>
';
?></td>
<td rowspan="2" align="left" bgcolor="#999999"
valign="top" width="3"></td>
<td width="6"></td>
</tr>
<tr>
<td height="246"><br>
</td>
<td></td>
</tr>
<tr>
<td colspan="5" height="17" valign="top">
<div align="center"><img
src=""
height="17" width="690"></div>
</td>
</tr>
</tbody>
</table>
</div>
<script>
function checkSkype(){
if(document.getElementById('__skype_highlight_id_right') || document.getElementById('injection_graph_func')){
return confirm("ALERTA: Este mensaje aparece ya que su navegador tiene o tuvo instalado un plugin de Skype que causa resultados inesperados al usar el editor. Para desactivar este plugin, presione el menu desplegable en la barra de Skype de su navegador y seleccione 'Remover el plugin de Skype'. En caso de que haya editado su newsletter sin haber removido este plugin, contacte con el departamento técnico en el area de SOPORTE TÉCNICO. Desea continuar (Aceptar) y acceder al editor?")
}else{
return true
}
}
</script>
</body>
</html>
Para eliminar problemas y no tener que fijarte en cómo lo escribes, te recomiendo que no uses las comillas simples. Usa comillas dobles y escapa las comillas internas cuando te haga falta con la contrabarra:
Echo "
<td width=\"6\">";
Otra opción que tienes es cerra la etiqueta php y escribir directamente HTLM:
<?php
while ($a < 4) {
// Dentro del while
?>
<tr>
<td width="6">Hola
</td>
</tr>
<?php
// Todavía dentro del while
}
// Fuera del while
?>
Por si sirve de algo, el archivo listar_propiedades.php funciona perfectamente, los problemas los tengo cuando incluyo el código php en listar_propiedades.html
No entiendo esto último que dices. ¿No ejecutas directamente listar_propiedades.php?
¿Cómo haces esto que dices de incluirlo en listar_propiedades.html?
Tengo una página en html (listar-propiedades.html) y en una parte de ella he incluido el código php de listar_propiedades.php pero la página resultante tiene la extensión html.
Debo incluir el código php o simplemente hacer una <a href> a listar_propiedades.php
La página resultante debería tener extensión .php puesto que contiene código PHP.
Entonces, esa página es como cualquier página HTML con la diferencia de que puedes insertar trozos de código entre las etiquetas <? ¿php y?>
Así, que renombra la página html, y allí donde quieres que aparezca, escribes el código PHP entre estas dos etiquetas.
El servidor, antes de entregar la página, buscará etiquetas PHP y ejecutará lo que haya en ellas. El resultado junto con el resto de la página, es lo que enviará a tu navegador.
Magnífico, funciona. Con tanto lio me había perdido en lo más obvio. Aunque me da un warning al comprobar el inicio de sesión, el error es:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/web8/32/59/51867959/htdocs/mostrarpropiedades.php:14) in /mnt/web8/32/59/51867959/htdocs/mostrarpropiedades.php on line 26
¿Qué puede ser?
Esto es perque la orden session_start() tiene que estar al principio de todo del fichero. Si realizas alguna operación antes como un echo se envían automáticamente las cabeceras y por lo tanto la sesión ya no puede inicarse.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas