Buenas!
Estoy trabajando en una interfaz web con lo siguente:
Tengo q crear una búsqueda en PHP, que busque datos en una base de datos PostgreSQL.
Osea, en la base de datos PostgreSQL hay varias tablas con datos, por ejemplo una tabla "Personas" con campos "DNI", "Nombre" "Apellidos" "Teléfono" y quiero que através de un menu de búsqueda (Ya tengo hecho ese menu en PHP) me devuelva los datos de la Persona. Osea, busco por DNI, y me tiene q dar los datos. Tengo todo mas o menos hecho ya, lo q me falla es devolver los datos de la jodida PostgreSQL. Alguien sabe el código ? o sabe donde pillar un buen tutorial, scripts o algo?
Gracias!
Voy a dejar poraqui la busqueda que tengo ahora, pero que no me funciona:
search.php
<html>
<HEAD> <TITLE>Searching ...</TITLE> </HEAD>
<form name="search" action="result.php">
<I><br>
<I>
</body>
</html>
result.php
<html>
<HEAD> <TITLE>Displaying result</TITLE> </HEAD>
<?php
connecting to the database and performing query
$db=pg_connect("host=localhost port=5432 dbname=phpdb user=phpuser");
$sql="SELECT * FROM person WHERE name=('$searchstring')";
$result=pg_query($db, $sql);
if(!$result)
{
echo "No results found";
}
else
{
retrieving result
$rows = pg_num_rows($result);
echo "Result(s):<br>";
for ($i=0; $i < $rows; $i++)
{
$dni=pg_fetch_result($result, $i, "Dni");
$name=pg_fetch_result($result, $i, "Name");
$surname=pg_fetch_result($result, $i, "Surname");
$address=pg_fetch_result($result, $i, "Address");
$telephone=pg_fetch_result($result, $i, "Telephone");
echo "DNI: $DNI<br> Name: $name<br> Surname: $surname<br> Address: $address<br>";
echo "Telephone: $telephone<br>";
}
}
?>
</body>
</html>
En la search.php paso la searschstring, q contiene el valor a buscar a la result.php.
luego conecto a la BD, ejecuto una consulta SQL, pero me da que ahi radica el error: $sql="SELECT * FROM person WHERE name=('$searchstring')"; <--- AQUI!
No se si eso esta bien, y no encuetro nada al respecto.
Alguien sabe porfavor?
Gracias!
Yo con postgre no he trabajado pero por dar un par de posibles soluciones pa ver si cuelan
- Has probao quitando el parentesis? porque no pinta nada ... y rizandolo pues concatena "tal='" . $cadena . "';";
- la otra es al ejecutar la consulta; la funcion en mysql por ejemplo es mysql_query($consulta,$conexion) no al reves como tu lo pones, pero ya t digo q no me se las funciones para postgre.
- y la ultima es al hacer el cursor; te pongo un ejemplillo, por si hay algun fallo en ese ya que yo por ejemplo voy llamando al array a jierro; cuando te devuelva filas y no muestre datos pues prueba el cursor adaptao a postre sin tener que ir llamando al nombre del campo, ya que en la consulta ya sabes como se te devuelven los datos;sino pos esta bien.
$res=mysql_query($consulta,$conexion);
$numero=mysql_num_rows($res);
if($numero==0)
{
echo "nanai";
}
else
{
while($cursor=mysql_fetch_row($res))
{
echo "un nota";
$uno=$cursor[0];
$doh=$cursor[1];
$tre=$cursor[2];
$cuatro=$cursor[3];
.
.
.
}
}
- la cadena de conexion, si en postre es asi me lo creo xdd.
Suerte. Saludos.
Bueno, ya he conseguido hacerlo funcionar.
Queda una cosa por cambiar, que es la forma en la que imprimo los resultados de la busqueda. Ahora mismo esta asi:
retrieving and showing results
$rows = pg_num_rows($result);
echo "Result(s):<br>";
for ($i=0; $i < $rows; $i++)
{
$dni=pg_fetch_result($result, $i, "Dni");
$name=pg_fetch_result($result, $i, "Name");
$surname=pg_fetch_result($result, $i, "Surname");
$address=pg_fetch_result($result, $i, "Address");
$telephone=pg_fetch_result($result, $i, "Telephone");
echo "DNI: $DNI<br> Name: $name<br> Surname: $surname<br> Address: $address<br>";
echo "Telephone: $telephone<br>";
}
En vez de mostrar los resultados uno a uno, quisiera mostrarlos atraves de un ARRAY.
Alguien me podria echar una mano con ello?
Como meto el resultado de la busqueda en un array? Osea, todos los campos afectados por la busqueda, que me los meta en un array q luego recorro con un while o for para mostrarlos uno a uno
Gracias!