Coneccion con php y postgres

  • Autor Autor epru89
  • Fecha de inicio Fecha de inicio
E

epru89

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola a todos los forobeta quisiera tener una string de Concepción para una aplicación php y una base de dato echa en postgres. si alguien me to podría facilitar o sepa mas o menos como hacer las consultas de una base de dato echa en postgre con un programa echo en php
 
goldfish muchas gracias

- - - Actualizado - - -

goldfish tengo este codigo php

<?php
$name=$_POST["nombre"];
$clave=$_POST["clave"];
$servidor='localhost';
$puerto=5432;
$usuario='postgres';
$clave='postgres';
$base='rutas';
echo "entro en php";
$c = pg_connect("host=$servidor port=$puerto dbname=$base user=$usuario password=$clave");
if (!$c)
{
$res1 = pg_last_error($c);
echo "no conecto";
echo $res1;
}
else{
$result=pg_query($c,"SELECT * FROM usuario ");
$contador=pg_affected_rows($result);
$lista= pg_fetch_assoc($result);
if($contador>=0)
{ $i=0;
while($i<$contador)
{
echo $lista[1] " " $lista[2];
}
}
else
{
echo "ALTO El usuario no puede entrar al sistema";
}
}
?>

no me muestra nada en el navegador y no se cual error tengo. tome tu consejo y me guie del manual oficial los ejemplos son muy bueno pero no se que error tengo

este es el codigo de html por si acaso

<html>
<head>
<meta charset="utf-8">
<title>Inicio de seccion</title>
<SCRIPT LANGUAGE=JavaScript src="controlador/fichero.js"></SCRIPT>
</head>
<body>
<form name='sesion' id="seleccion" method="post" action="controlador/Ingreso.php">
<p>Nombre: <input type="text" name="nombre" size="20"></p>
<p>Clave: <input type="password" name="clave" size="20"></p>
<p><input type="submit" value="Guardar datos" size="20"></p>
</form>
</body>
</html>
 
goldfish muchas gracias

- - - Actualizado - - -

goldfish tengo este codigo php

<?php
$name=$_POST["nombre"];
$clave=$_POST["clave"];
$servidor='localhost';
$puerto=5432;
$usuario='postgres';
$clave='postgres';
$base='rutas';
echo "entro en php";
$c = pg_connect("host=$servidor port=$puerto dbname=$base user=$usuario password=$clave");
if (!$c)
{
$res1 = pg_last_error($c);
echo "no conecto";
echo $res1;
}
else{
$result=pg_query($c,"SELECT * FROM usuario ");
$contador=pg_affected_rows($result);
$lista= pg_fetch_assoc($result);
if($contador>=0)
{ $i=0;
while($i<$contador)
{
echo $lista[1] " " $lista[2];
}
}
else
{
echo "ALTO El usuario no puede entrar al sistema";
}
}
?>

no me muestra nada en el navegador y no se cual error tengo. tome tu consejo y me guie del manual oficial los ejemplos son muy bueno pero no se que error tengo

este es el codigo de html por si acaso

<html>
<head>
<meta charset="utf-8">
<title>Inicio de seccion</title>
<SCRIPT LANGUAGE=JavaScript src="controlador/fichero.js"></SCRIPT>
</head>
<body>
<form name='sesion' id="seleccion" method="post" action="https://forobeta.com/controlador/Ingreso.php">
<p>Nombre: <input type="text" name="nombre" size="20"></p>
<p>Clave: <input type="password" name="clave" size="20"></p>
<p><input type="submit" value="Guardar datos" size="20"></p>
</form>
</body>
</html>



tenes el usuario creado en la db?
 
tavostrog gracias por contestar.

si tengo el usuario creado llamado posgres con su clave, la base de datos creada llamada rutas, la tabla usuario y 2 usuarios prueba dentro de la tabla pero no se por que no me muestra nada.
 
tavostrog gracias por contestar.

si tengo el usuario creado llamado posgres con su clave, la base de datos creada llamada rutas, la tabla usuario y 2 usuarios prueba dentro de la tabla pero no se por que no me muestra nada.

Amigo, en primer lugar es buena idea separar el usuario/contraseña de acceso a la BBDD de los usuarios/contraseñas para usar la aplicación. Ya que la aplicación funciona del lado del servidor, podriás guardar directamente usuario/contraseña en algún archivo de texto en el servidor y luego llamarlo con un "require_once" o similar. Por otra parte, para poder acceder como usuario/contraseña de la aplicación, la consulta podría ser "SELECT *FROM USUARIO WHERE USERAME = :username AND PASSWORD = password", en caso que la contraseña la hayas guardado en texto plano. La consulta anterior es con sentencias preparadas, que reducen el riesgo de SQL Injection. Además, tu código pierde un poco de eficiencia dado que el primer if siempre asume que la mayoría de veces se producirá un error de conexión a Postgres (cosa que desde mi punto de vista, ocurrirá ocasionalmente si haces la conexión correctamente).

Un dato más, tal vez el problema que no te muestre nada es en esta línea: "echo $lista[1] " " $lista[2];" pues te hace falta concatenar y en la parte superior usas fetch_assoc que asocia el nombre de la columna en la BBDD al nombre de las variables del array, la solución es agregar el punto (símbolo de concatenación) y el nombre de los campos en la BBDD (asumo que son usuario y contraseña, si no son, los podrías ajustar a los nombres reales), quedando así: "echo $lista['usuario'] . " " . $lista['contrasena'];"

Saludos.
 
amigo random muchas gracias con tu ayuda hize los cambios recomendados para mejorar el codigo. me quedo de la siguiente manera.

<?php
$name=$_POST["nombre"];
$clave=$_POST["clave"];
$servidor='localhost';
$puerto=5432;
$usuario='postgres';
$clave='postgres';
$base='rutas';

$c = pg_connect("host=$servidor port=$puerto dbname=$base user=$usuario password=$clave");
if ($c!=false)
{
$result=pg_query($c,"SELECT * FROM usuario WHERE nombreusuario = $name AND claveusuario = $clave");
$contador=pg_affected_rows($result);
$lista= pg_fetch_assoc($result);

if($contador>=0)
{ $i=0;
while($i<$contador)
{
echo $lista['nombreusuario'] . " " . $lista['claveusuario'];
}
}
else
{
echo "ALTO El usuario no puede entrar al sistema";
}
}
else{
$res1 = pg_last_error($c);
echo "no conecto";
echo $res1;
}
?>

pero aun no me muestra :sorrow::sorrow::sorrow::sorrow::sorrow:🙁
 
Atrás
Arriba