Problema con enlace y php

De una base de datos saco datos y los muestro en una tabla y lo que quiero es que en una tercera columna de la tabla se vea un enlace(botón, enlace, lo que sea) que me lleve a otra página donde se va a ver el tercer campo de la tabla relacionado con donde hemos pinchado osea quiero enlazar los datos de la base de datos para que visualice lo que elijo en otra página pero siempre de dentro de la base de datos.
Te paso el código de la página
<?php require_once('../Connections/circular.php'); ?>
<?php
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
mysql_select_db($database_circular, $circular);
$query_Recordset1 = "SELECT titulo, asunto, circular.circular FROM circular";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $circular) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<!-- <STYLE>
BODY{
FILTER:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#ffffcc',endColorstr='#ff9a31', gradientType='1')
}
</STYLE> -->
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
-->
</style>
<!--[if IE]>
<style type="text/css">
html {
scrollbar-arrow-color:#FFFFFF;
scrollbar-track-color:#FF9933;
scrollbar-face-color:#000000;
scrollbar-highlight-color:;
scrollbar-3dlight-color:;
scrollbar-darkshadow-color:;
scrollbar-shadow-color:;
}
</style>
<![endif]-->
</head>
<body style='tab-interval:35.4pt' bgcolor="ff9a31">
<div align="justify">
<table width="80%" border="1" align="center">
<tr>
<td><div align="center">Nº Circular</div></td>
<td><div align="center">Asuntos</div></td>
<td>Ir</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['titulo']; ?> </td>
<td><?php echo $row_Recordset1['asunto']; ?> </td>
<td><p>aqui
quiero poner el boton o lo que sea para que vaya a otra pagina y se
vea un tercer campo que sea la circular en si.</p>
</td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</div>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Respuesta
1
En circular.php ejecutas:
$query_Recordset1 = "SELECT titulo, asunto, circular.circular, circular.index FROM circular";
Donde puedes quitar circular. Circular ya que en esa página no lo vas a usar, ya usas circular. Index. De ahí obtienes 10 registros.
A la hora de mostrarlos tienes que crear el enlace, un enlace por cada registro, de la siguiente manera:
echo "<a href='./pagina.php?circular={$row_Recordset1['circular.index']}'> Circular </a>";
Ya no necesitas la variable $i, por lo demás me parece todo correcto en ese archivo. Te debería mostrar los 10 registros seleccionados.
Ahora en página.php la consulta que te puse falla porque en LIMIT no le podemos poner un número de registro. Tenemos que poner:
$query_Recordset1 = "SELECT titulo, asunto, circular.circular FROM circular WHERE circular.index = $Referencia";
Esto te debe devolver un único registro donde obtienes titulo, asunto y circular.
Pruébalo. Si falla en algún sitio me comentas el error que te da, el archivo y la línea.
La version de mysql es 4.0.22 standard
version de php 4.3.9
version de perl 5.8.3
version de apache 1.3.33 unix
Sistema operativo linux
version de kernel 2.4.22-1.2199.nptlsmp
Por si necesitas saber versiones
Tengo una base de datos que tiene esos campos y lo que quiero es que en una página me muestre el titulo y el asunto de cada uno de los registros que tengo y entonces acceder a otra página para ver el campo circular pero del registro seleccionado.
A lo que me refiero que no me salen todos los registros es a que solo me sale el primer registro
Me da 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 '> Circular
Circular informativa
Te pongo los códigos de las dos páginas
Tengo un campo index que va a ser único y es el que me gustaría usar
circular.php
<?php require_once('../Connections/circular.php'); ?>
<?php
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
mysql_select_db($database_circular, $circular);
$query_Recordset1 = "SELECT titulo, asunto, circular.circular, circular.index FROM circular";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $circular) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<!-- <STYLE>
BODY{
FILTER:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#ffffcc',endColorstr='#ff9a31', gradientType='1')
}
</STYLE> -->
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
-->
</style>
<!--[if IE]>
<style type="text/css">
html {
scrollbar-arrow-color:#FFFFFF;
scrollbar-track-color:#FF9933;
scrollbar-face-color:#000000;
scrollbar-highlight-color:;
scrollbar-3dlight-color:;
scrollbar-darkshadow-color:;
scrollbar-shadow-color:;
}
</style>
<![endif]-->
</head>
<body style='tab-interval:35.4pt' bgcolor="ff9a31">
<div align="justify">
<table width="80%" border="1" align="center">
<tr>
<td><div align="center">Nº Circular</div></td>
<td><div align="center">Asuntos</div></td>
<td>Ir</td>
</tr>
<?php
$i = $startRow_Recordset1;
do { ?>
<tr>
<td><?php echo $row_Recordset1['titulo']; ?> </td>
<td><?php echo $row_Recordset1['asunto']; ?> </td>
<td><p>
<?php
echo "<a href='./pagina.php?circular=$i> Circular </a>";
$i ++;
?>
</p>
</td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</div>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
pagina.php
<?php require_once('../Connections/circular.php'); ?>
<?php
mysql_select_db($database_circular, $circular);
$Referencia = $_GET['circular'];
$query_Recordset1 = "SELECT titulo, asunto, circular.circular FROM circular LIMIT $Referencia, 1";
$Recordset1 = mysql_query($query_Recordset1, $circular) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="90%" border="0">
<tr>
<td><?php echo $row_Recordset1['titulo']; ?></td>
</tr>
<tr>
<td><?php echo $row_Recordset1['asunto']; ?></td>
</tr>
<tr>
<td><?php echo $row_Recordset1['circular']; ?></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
No me aclaro lo que quieres hacer. Pensé que me había enterado, pero cuando dices que no te salen todos los registros pinso que no hablamos de lo mismo.
Tienes una base de datos con los campos: titulo, asunto, circular. Circular. ¿Y lo que quieres es mostrar titulo y asunto en una página y circular. Circular en otra? En este caso solo tiene que aparecer un único botón que sea "mostrar más datos", y no uno por cada registro.
Acláramelo.
Se me olvido también decirte otra cosa y es que con este código en la tabla solo me sale un registro cuando deberían salirme todos los que hay
La idea es crear un enlace o botón donde ejecutes la página pasándole como parámetro una referencia al registro del que se trate. Esa referencia puede ser el número de registro, o un campo que sea único. Eso es importante, si tienes un identificador en la base de datos que sea único para cada registro, úsalo. Yo te voy a poner un ejemplo usando el número de registro. El código que te voy a poner sustituiría sólo a la parte correspondiente del tuyo:
<?php
$i = $startRow_Recordset1;
do { ?>
<tr>
<td><?php echo $row_Recordset1['titulo']; ?> </td>
<td><?php echo $row_Recordset1['asunto']; ?> </td>
<td><p>
<?php
echo "<a href='./nuevaPagina.php?circular=$i> Circular </a>";
$i ++;
?>
</p>
</td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
Ahora en nuevaPagina.php recoges esa referencia y buscas en la base de datos. Para recoger la referencia lo haces con:
$Referencia = $_GET['circular'];
Y para buscar en la base de datos usa una consulta parecida a la siguiente consulta:
$consulta = "SELECT titulo, asunto, circular.circular FROM circular LIMIT $Referencia, 1";
Pruébalo y me comentas.
Ahora no me da error pero no me sale nada
cuando pincho en el enlace me sale en la direccion esto
www.pagina.es/nueva/pagina.php?circular=
Te adjunto otra vez los códigos
circular.php
<?php require_once('../Connections/circular.php'); ?>
<?php
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
mysql_select_db($database_circular, $circular);
$query_Recordset1 = "SELECT titulo, asunto, circular.circular, circular.index FROM circular";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $circular) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<!-- <STYLE>
BODY{
FILTER:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#ffffcc',endColorstr='#ff9a31', gradientType='1')
}
</STYLE> -->
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
-->
</style>
<!--[if IE]>
<style type="text/css">
html {
scrollbar-arrow-color:#FFFFFF;
scrollbar-track-color:#FF9933;
scrollbar-face-color:#000000;
scrollbar-highlight-color:;
scrollbar-3dlight-color:;
scrollbar-darkshadow-color:;
scrollbar-shadow-color:;
}
</style>
<![endif]-->
</head>
<body style='tab-interval:35.4pt' bgcolor="ff9a31">
<div align="justify">
<table width="80%" border="1" align="center">
<tr>
<td><div align="center">Nº Circular</div></td>
<td><div align="center">Asuntos</div></td>
<td>Ir</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['titulo']; ?> </td>
<td><?php echo $row_Recordset1['asunto']; ?> </td>
<td> <?php echo "<a href='./pagina.php?circular={$row_Recordset1['circular.index']}'> Circular </a>"; ?>
</td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</div>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
pagina.php
<?php require_once('../Connections/circular.php'); ?>
<?php
$Referencia=$_GET['circular']
?>
<?php
mysql_select_db($database_circular, $circular);
$query_Recordset1 = "SELECT circular.titulo, circular.asunto, circular.circular, circular.index FROM circular WHERE circular.index ='$Referencia'";
$Recordset1 = mysql_query($query_Recordset1, $circular) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="90%" border="0">
<tr>
<td><?php echo $row_Recordset1['titulo']; ?></td>
</tr>
<tr>
<td><?php echo $row_Recordset1['asunto']; ?></td>
</tr>
<tr>
<td><?php echo $row_Recordset1['circular']; ?></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Ya lo he conseguido he tenido que poner esto
<?php
$dir= $row_Recordset1['index']
?>
<td><?php echo $row_Recordset1['titulo']; ?> </td>
<td><?php echo $row_Recordset1['asunto']; ?> </td>
<td> <?php echo "<a href='./pagina.php?circular=$dir'> Circular </a>"; ?>
</td>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas