Foros del Web » Programando para Internet » PHP »

Consulta de datos en MySQL y PHP

Estas en el tema de Consulta de datos en MySQL y PHP en el foro de PHP en Foros del Web. Necesito ayuda que no se me despliega el registro corresto: este es el formulario que recoge los datos llamada pagina1.html: <form name="buscador" action="/busca.php3" method="post"> <input ...
  #1 (permalink)  
Antiguo 29/08/2003, 23:57
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Consulta de datos en MySQL y PHP

Necesito ayuda que no se me despliega el registro corresto:
este es el formulario que recoge los datos llamada pagina1.html:

<form name="buscador" action="/busca.php3" method="post">
<input type ="text" name="buscar" size="35">
<select name="sec" size="1">
<option selected value="titulo">Todas</option>
<option value="autor">Autor</option>
<option value="asesor">Asesor</option>
</select></p>
<input type="submit" value="Buscar">
<input type="reset" value="Borrar"></p>
</form>

Este formulario llama a la pagina busca.php3 que realiza la búsqueda de datos y me muestra los registros correctos, ya sea que se busque por ejemplo titulo, autor. Este es parte del código :
<?
//Mostramos registros
while($row=mysql_fetch_array($result))
{
echo '<tr><td>'.$row["referencia"].'</td>';
echo '<td><a href="desplegar.php3">'.$row["titulo"].'</a></td>';
echo '<td>'.$row["autor"].'</td>';
echo '<td>'.$row["anno"].'</td></tr>';
}
mysql_free_result($result)
?>

El problema que tengo es que en '.$row["titulo"].' hay un enlace a la pagina desplegar.php3, y si yo hago un link al registro 1212-bb me los despliega todos los registros de la base de datos, no el registro que yo selecciono.

Referencia Titulo Autor Año
1212-bb Internet mundial creada en Estados Unidos roxana ventura 2002
1111-pp sistemas operativos en la decada de los 50 claudia barahona 2002

Este es el código de la pagina desplegar.php3, talves deberia modificar la setencia $sql o hacer un puntero desde la pagina buscar.php3 a la pagina desplegar.php3, pero no se como se hace.:
<?
//Mostramos los registros
$sql="select * from resum where titulo like titulo";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
echo '<p><b>Titulo: </b>'.$row["titulo"].'</p>';
echo '<p><b>Autor(res): </b>'.$row["autor"].'</p>';
echo '<p><b>Resumen: </b>'.$row["resumen"].'</p>'.'<hr width="80%" height="50">';
}
mysql_free_result($result)
?>

Gracias
__________________
Patricia
  #2 (permalink)  
Antiguo 30/08/2003, 14:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tendrias que pasarle a desplegar.php3 como parametro por URL el titulo. En busca.php3:
Código PHP:
<?
//Mostramos registros
while($row=mysql_fetch_array($result))
{
echo 
'<tr><td>'.$row["referencia"].'</td>';
echo 
'<td><a href="desplegar.php3?titulo='.urlencode($row["titulo"]).'">'.$row["titulo"].'</a></td>';
echo 
'<td>'.$row["autor"].'</td>';
echo 
'<td>'.$row["anno"].'</td></tr>';
}
mysql_free_result($result)
?>
El urlencode() (www.php.net/urlencode) sirve para codificar ciertos caracteres que pueden dar problemas al pasarlos por URL (como los espacios).

Luego tienes que cambiar en desplegar.php3 la consulta SQL, porque tal como la tienes le estas diciendo que compare el valor del campo "titulo" del registro consigo mismo, por eso te salen todos. Tendrias que poner que compare el valor del campo con el valor del parametro:
Código PHP:
$sql="select * from resum where titulo like '$titulo'"
con esto comparas que sean exactamente iguales (podrias poner = en lugar del like).

Tambien podrias pasar por la URL la referencia y hacer la consulta por ese campo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 31/08/2003, 23:39
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta

Hola,

Pero pasa la información a través de la url desde busca.php3, porque coloca el titulo: http://localhost/desplegar.php3?titu...cada+de+los+50

Pero no me despliega el registro o no lo lee porque da estos errores en desplegar.php3:
Warning: Supplied argument is not a valid MySQL result resource in c:\nusphere\apache\htdocs\desplegar.php3 on line 18

Warning: Supplied argument is not a valid MySQL result resource in c:\nusphere\apache\htdocs\desplegar.php3 on line 31
O sea:

Linea 18 es: while ($row=mysql_fetch_array($result))
{
echo '<p><b>Titulo: </b>'.$row["titulo"].'</p>';
echo '<p><b>Autor(res): </b>'.$row["autor"].'</p>';
echo '<p><b>Resumen: </b>'.$row["resumen"].'</p>';
}
Linea 31 es: mysql_free_result($result)

Gracias,
__________________
Patricia
  #4 (permalink)  
Antiguo 01/09/2003, 21:07
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola:

Ya me despliega el registro correcto, lo que pasaba es que le indicaba que buscara el titulo por un if que le colocaba con la variable para que recibiera la información y por eso me daba error. La instrucción era que solamente tenia que poner $HTTP_GET_VARS para que recibiera el valor del titulo y hacer la comparación en la consulta SQL, para que me desplegara el registro que era.

Gracias, por la ayuda tan valiosa.
__________________
Patricia
  #5 (permalink)  
Antiguo 01/09/2003, 21:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La sentencia SQL no estás indicando tu variable (la que emites desde tu formulario). Ademas .. LIKE de SQL de Msyql tiene sus "comodines" que si quieres los puedes usar o no (pero si no los usaas deberias usar simplemente campo=$variable ..)

Código PHP:
$sql="select * from resum where titulo like '%".$_POST['titulo']."%'"
En las FAQ's de este foro encontraras en uno de los priméros mensajes una relación de manuales y tutoriales de PHP (todos o casi todos con capítulo de PHP+Mysql) .. Te recomiendo leerlos.

(uso $_POST como array superglobal (en las FAQ's está esto mismo tambíen explicado) .. Si usas una versión inferior a 4.1.0 usa en su lugar $HTTP_POST_VARS ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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




La zona horaria es GMT -6. Ahora son las 22:41.