Foros del Web » Programando para Internet » PHP »

Usar datos de un formulario en una consulta

Estas en el tema de Usar datos de un formulario en una consulta en el foro de PHP en Foros del Web. Buenas, necesitaría por favor, a ver si alguien pudiera ayudarme. Llevo un par de días, con esto del PHP, y estoy intentanto empezar por cosillas ...
  #1 (permalink)  
Antiguo 31/10/2006, 10:42
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
Usar datos de un formulario en una consulta

Buenas,

necesitaría por favor, a ver si alguien pudiera ayudarme. Llevo un par de días, con esto del PHP, y estoy intentanto empezar por cosillas simples, la verdad es que no tengo demasiada idea.

Bien, os explico; tengo una tabla creada en mi BBDD, llamada Tarifas, y necesitaría que el usuario meta dos datos desde un formulario, de manera que cuando pulse un botón para validarlos, se lanzara la consulta sql sobre mi tabla y me mostrara los resultados en la misma página, habiendo dejado los campos anteriores vacíos y preparados hasta que el usuario volviera a meter algún otro dato.

El código que tengo es algo así, tengo un fichero que sería el principal llamado tarifasconsulta.php, que contiene lo siguiente:
<!-- Manual de PHP de WebEstilo.com -->
<html>
<body>
<H1>Módulo Consulta de Tarifas</H1>
<FORM ACTION="tarifasprocesar.php">
<TABLE>
<TR>
<TD>Categoria:</TD>
<TD><INPUT TYPE="text" NAME="Categoria" SIZE="6" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Localidad:</TD>
<TD><INPUT TYPE="text" NAME="Localidad" SIZE="30" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Consultar">
</FORM>
<?php
include("conex.php");
$link=Conectarse();
$result=mysql_query("select Categoria,Localidad from Tarifas",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD> <B>Categoria</B></TD><TD> <B>Localidad</B></TD></TR>
<?php

while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s</td></tr>", $row["Categoria"], $row["Localidad"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>


Tendría también el fichero llamado, tarifasprocesar.php que contiene lo siguiente:
<?php
include("conex.php");
$link=Conectarse();
$categoria=strtoupper($_GET['Categoria']);
$localidad=strtoupper($_GET['Localidad']);
mysql_query("select * from Tarifas WHERE Categoria=$categoria and Localidad=$localidad",$link);
?>


En ambos ficheros, se hace referencia al fichero conex.php, que contendría:
<!-- Manual de PHP de WebEstilo.com -->
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","miusuario","mi password")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("mibbdd",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>


Por favor, alguna ayuda.

Gracias y un saludo
  #2 (permalink)  
Antiguo 31/10/2006, 10:46
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Creo que el metodo por default de los form es post, asi que para recoger los datos que envias usa $_POST['nombredelcampo'] en vez de $_GET, este se usa cuando envias los datos por la url
  #3 (permalink)  
Antiguo 31/10/2006, 11:16
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
tampoco!

darkasecas,

he probado con lo que dices, pero tampoco me funciona:

he probado a modificar el fichero tarifasprocesar.php como sigue:
<?php
include("conex.php");
$link=Conectarse();
$categoria=strtoupper($_POST['Categoria']);
$localidad=strtoupper($_POST['Localidad']);
$result=mysql_query("select * from Tarifas WHERE Categoria=$categoria and Localidad=$localidad",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD> <B>Categoria</B></TD><TD> <B>Localidad</B></TD></TR>
<?php

while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s</td></tr>", $row["Categoria"], $row["Localidad"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>


Pero me da el siguiente error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/vhosts/empkarta.myfreewebs.net/tarifasprocesar.php on line 12

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/vhosts/empkarta.myfreewebs.net/tarifasprocesar.php on line 15




y la verdad, ni idea del porqué.

Gracias de todas formas
  #4 (permalink)  
Antiguo 31/10/2006, 11:28
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Tienes un error en el enunciado sql, supongo que categoria y localidad son campos alfanumericos, asi que necesitas usar comillas
Código PHP:
$result=mysql_query("select * from Tarifas WHERE Categoria='$categoria' and Localidad='$localidad'",$link); 
  #5 (permalink)  
Antiguo 31/10/2006, 11:44
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
darkasecas,

gracias, ya no me sale el error, pero ahora me pinta las columnas de la tabla, las cuales son Categoria y Localidad y se supone que debería pintarme debajo el resultado de la consulta, por ejemplo, CADETE y MALAGA, pero no es así.

¿Se te ocurre el porqué?

Gracias de nuevo y un saludo
  #6 (permalink)  
Antiguo 02/11/2006, 05:52
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
ayuda please!

Buenas,

por favor, ¿alguien sabe decirme por qué no me pinta lo seleccionado?

Imaginando que tengo una categoria que es CADETE y una localidad que sea MADRID, selecciono ambas y el resultado debería ser que me pintara una tabla en la que pintara Categoria Localidad y debajo de Categoria pusiera CADETE y debajo de localidad MADRID.

No lo entiendo donde falla.

Gracias y un saludo
  #7 (permalink)  
Antiguo 02/11/2006, 09:43
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por darkasecas Ver Mensaje
Creo que el metodo por default de los form es post, asi que para recoger los datos que envias usa $_POST['nombredelcampo'] en vez de $_GET, este se usa cuando envias los datos por la url
¡No! creo qie lo normal es get (al menos recuerdo ver las url's con los datos al olvidarme poner el método... )... aunque deinir el método no es nada complicado...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 11:04.