PHP - NO realiza la busqueda en sql con postgresql usando php

   
Vista:

NO realiza la busqueda en sql con postgresql usando php

Publicado por Javier (15 intervenciones) el 24/07/2016 19:50:43
amigos este es el codigo......


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<html>
  <head>
    <title>Formula Uno</title>
    <meta name="menu_principal" http-equiv="content-type" content="text/html" charset="utf-8_spanihs_ci" />
    <link rel="stylesheet" type="text/css" href="css/estilo_menu.css"/>
    <link rel="stylesheet" type="text/css" href="css/estilo_nacionalidad.css"/>
    <script language="javascript"></script>
  </head>
  <body onload="consultar();">
    <?php
      //session_start();
      include('menu.php');
      include('bd_conexion.php');
 
      $sql = "SELECT MAX(cod_nacion) AS id FROM nacionalidad";
      $result = pg_query($sql) or die("Error query". pg_last_error());
      $vacio=pg_num_rows($result);
      if ($vacio[0]==0){
        $id='001';
      }
      if ($fila=pg_fetch_row($result)){
        $id=trim($fila[0]);
      }
      $num=intval($id);
      $num++;
      $id= strval($num);
      $nuevo_valor=strlen($id);
      switch ($nuevo_valor) {
        case 1:
            $id='00'.$id;
            //echo "<label>".$id."</label>";
            break;
        case 2:
            $id='0'.$id;
            break;
        case 3:
            $id=$id;
            break;
      }
      pg_free_result($result);
      pg_close($conexion);
    ?>
    <br /><br /><br /><br /><br /><br />
    <form id="f_nacionalidad" class="f_nacionalidad" name="f_nacionalidad" action="" method="post">
        <fieldset>
            <legend>NACIONALIDAD</legend>
                <ul>
                    <li>
                        <label for="name">Nacion: &nbsp &nbsp</label>
                        <input id="caja_text" name="caja_text" class="caja_text" type="text" placeholder="Venezuela"/>
                        <input name="caja_text2" class="caja_text2" type="text" placeholder="Italia"/>
                        <input name="buscar" class="btn_buscar" type="submit" value="Buscar"/>
                    </li>
                    <li>
                        <input name="guardar" class="btn_guardar" type="submit" value="Guardar"/>
                        <input name="actualizar" class="btn_actualizar" type="submit" value="Actualizar"/>
                        <input class="btn_cancelar" type="reset" value="Cancelar"/>
                    </li>
                </ul>
                <?php
 
                    if (isset($_POST['buscar'])) {
                        if(!empty($_POST['caja_text2'])) {
                            include('bd_conexion.php');
                            $busq_nomb=pg_escape_string($_POST['caja_text2']);
                            $verificar = "SELECT * FROM nacionalidad WHERE nombre_nacion LIKE '%".$busq_nomb."%' ORDER BY nombre_nacion";
                            $result=pg_query($verificar);
 
                            if (pg_num_rows($result) > 0){
                                while($fila = pg_fetch_assoc($result)){
                                    $texto=$fila['nombre_nacion'];
                                    $codigo=$fila['cod_nacion'];
		      	                }
                            pg_free_result($result);
                            pg_close($conexion);
   	                        }
                            else{
                                echo "<script> alert ('No se encontro ningun Registro...') </script>";
                            }
                        }
                        else {
                            echo "<script> alert ('Debe llenar el campo para realizar la busqueda...') </script>";
                        }
                    }
 
                    if (isset($_POST['actualizar'])) {
                        if(!empty($_POST['caja_text'])) {
                            include('bd_conexion.php');
                            $codigo_n = pg_escape_string($_POST['caja_text4']);
                            $nomb_n = pg_escape_string($_POST['caja_text']);
                            $actualizar = "UPDATE nacionalidad SET (nombre_nacion = '".$nomb_n."') WHERE cod_nacion = '".$codigo_n."'";
                            $result_actualizar = pg_query($conexion, $actualizar);
                            echo "---".$result_actualizar."---";
                            if ($result_actualizar = 1) {
                                echo "<script> alert ('Nacionalidad actualizada exitosamente...') </script>";
                                //echo '<meta http-equiv="Refresh" content="1";URL="http://localhost/F1/reg_nacionalidad.php">';
                            }
                            pg_free_result($result_actualizar);
                            pg_close($conexion);
                        }
                        else {
                            echo "<script> alert ('Debe llenar el campo nacion para actualizar...') </script>";
                        }
                    }
                ?>
                <input id="caja_text3" name="caja_text3" class="caja_text3" type="hidden" value="<?php if (isset($texto))echo $texto; ?>"/>
                <input id="caja_text4" name="caja_text4" class="caja_text4" type="hidden" value="<?php if (isset($codigo))echo $codigo; ?>"/>
 
                <script>
                    function consultar(){
                   	   var valor = document.getElementById('caja_text3').value;
                       document.getElementById('caja_text').value = valor;
                    }
                </script>
        </fieldset>
    </form>
  </body>
</html>




bueno compas...una vez mas necesito de sus ayudas...ya que no se si es que por desconocimiento del funcionamiento de una pagina web no es tan facil hacer cambios en una misma pagina ya que no es la programacion de eventos como lo es visual basic o delphi fox pro entre otros... perooo buenoooo aqui vamos......

esta pagina se enlaza con el manejador postgresql..... la idea es actualizar el valor "nombre_nacion" de la BD mediante la instruccion sql atraves de la varialbe "$actualizar"; supongo que la variable "$actualizar" debe comparar en el WHERE con cod_nacion = '".$codigo_n."' y guardar los cambios en el SET "nombre_nacion" en la BD pero no hace nada es decir no guarda los cambios del campo nombre_nacion en la BD..

no se si es que se embasura o que queda en la cache del navegador o sencillamente que es lo que creo algo no estoy definiendo bien le agradezco nuevamente su ayuda compas....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

NO realiza la busqueda en sql con postgresql usando php

Publicado por kip (566 intervenciones) el 24/07/2016 21:11:43
Hola, no es recomendable ejecutar la query como la estas haciendo, lo mejor es usar la funcion pg_prepare() para evitar algun tipo de inyeccion SQL en tu sistema, intentalo de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (isset($_POST['actualizar'])) {
  if(!empty($_POST['caja_text'])) {
  include('bd_conexion.php');
  $codigo_n = pg_escape_string($_POST['caja_text4']);
  $nomb_n = pg_escape_string($_POST['caja_text']);
  $actualizar = 'UPDATE nacionalidad SET nombre_nacion = $1 WHERE cod_nacion = $2 ';
  $result_actualizar = pg_prepare($conexion,"query",$actualizar);
  $result_actualizar = pg_execute($conexion,"query", array($nomb_n,$cod_nacion));
  echo "---".$result_actualizar."---";
  if ($result_actualizar) {
    echo "<script> alert ('Nacionalidad actualizada exitosamente...') </script>";
    //echo '<meta http-equiv="Refresh" content="1";URL="http://localhost/F1/reg_nacionalidad.php">';
  }
  pg_free_result($result_actualizar);
  pg_close($conexion);
  }
  else {
    echo "<script> alert ('Debe llenar el campo nacion para actualizar...') </script>";
  }
}

Ademas fijate que aquella variable $conexion contenga el nombre de la base correcto.

Nos cuentas como te fue o si tienes alguna duda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO realiza la busqueda en sql con postgresql usando php

Publicado por Javier (15 intervenciones) el 24/07/2016 21:58:19
hola compa...realice la instruccion como me lo sugirio pero me sgue dando el error...y no te entiendo la siguiente linea de codigo

$actualizar = 'UPDATE nacionalidad SET nombre_nacion = $1 WHERE cod_nacion = $2 ';

¿que significa $1 y $2?

y no funciono el actualizar....
ademas la variable "$conexion" es llamada de un archivo bd_conexion.php que contiene esto:

1
2
3
4
5
6
7
8
9
10
<?php
    $host='localhost';
    $port=5432;
    $dbname='formula1';
    $user='postgres';
    $password='123456';
 
    $cadenadb = "host=$host port=$port dbname=$dbname user=$user password=$password";
    $conexion = pg_connect($cadenadb) or die("Error de conexion ". pg_last_error());
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

NO realiza la busqueda en sql con postgresql usando php

Publicado por kip (566 intervenciones) el 24/07/2016 22:15:33
$1 y $2 son los parametros que le envie mediante pg_execute como array y los incluye, en este caso para evitar escapar caracteres manualmente, puedes usarlo de esa forma ya que en el manual de PHP lo recomiendan como ya te mencione alla arriba para evitar ataques de SQL Injection, te lo recomiendo para que lo adoptes como una buena practica.

Podrias intentarlo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset($_POST['actualizar'])) {
  if(!empty($_POST['caja_text'])) {
  include('bd_conexion.php');
  $codigo_n = $_POST['caja_text4'];
  $nomb_n = $_POST['caja_text'];
  $result_actualizar = pg_prepare($conexion,"",'UPDATE nacionalidad SET nombre_nacion = $1 WHERE cod_nacion = $2');
  $result_actualizar = pg_execute($conexion,"", array($nomb_n,$codigo_n));
  echo "---".$result_actualizar."---";
  if ($result_actualizar) {
    echo "<script> alert ('Nacionalidad actualizada exitosamente...') </script>";
    //echo '<meta http-equiv="Refresh" content="1";URL="http://localhost/F1/reg_nacionalidad.php">';
    pg_free_result($result_actualizar);
    pg_close($conexion);
  }
  }
  else {
    echo "<script> alert ('Debe llenar el campo nacion para actualizar...') </script>";
  }
}

Pasate por el manual : http://php.net/manual/es/function.pg-prepare.php

Por cierto, en el anterior codigo que te sugeri tuve un error en el nombre de una variable en el array de la funcion pg_execute, coloque $cod_nacion y es $codigo_n, por eso no te sirvio.

Si lograste solucionarlo, enhorabuena!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO realiza la busqueda en sql con postgresql usando php

Publicado por Javier (15 intervenciones) el 24/07/2016 23:20:22
si amigo utilice tu sentencia arreglada y ahora si funcion a la perfeccion y acepto su recomendacion asi mismo lo voy a utilizar....muchas gracias compa....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO realiza la busqueda en sql con postgresql usando php

Publicado por Javier (15 intervenciones) el 24/07/2016 22:14:14
listo compa no se si fue por buena suerte o no se que pero total ya lo ejecuta lo unico que cambie fue lo que vez en negrita:

version mala:

...
1
2
3
4
5
6
7
8
9
10
11
$codigo_n = pg_escape_string($_POST['caja_text4']);
$nomb_n = pg_escape_string($_POST['caja_text']);
$actualizar = "UPDATE nacionalidad SET (nombre_nacion = '".$nomb_n."') WHERE cod_nacion = '".$codigo_n."'";
$result_actualizar = pg_query($conexion, $actualizar);
echo "---".$result_actualizar."---";
if ($result_actualizar = 1) {
echo "<script> alert ('Nacionalidad actualizada exitosamente...') </script>";
//echo '<meta http-equiv="Refresh" content="1";URL="http://localhost/F1/reg_nacionalidad.php">';
}
pg_free_result($result_actualizar);
pg_close($conexion);
.....

version buena:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
....
$codigo_n = pg_escape_string($_POST['caja_text4']);
$nomb_n = pg_escape_string($_POST['caja_text']);
 $actualizar = "UPDATE nacionalidad SET nombre_nacion = '".$nomb_n."' WHERE cod_nacion = '".$codigo_n."'";
//$result_actualizar = pg_prepare($conexion,"query",$actualizar);
//$result_actualizar = pg_execute($conexion,"query", array($cod_nacion,$nomb_n));
$result_actualizar = pg_query($conexion, $actualizar);
//echo "---".$conexion."---";
if ($result_actualizar = 1) {
	echo "<script> alert ('Nacionalidad actualizada exitosamente...') </script>";
	echo '<meta http-equiv="Refresh" content="1";URL="http://localhost/F1/reg_nacionalidad.php">';
}
  //pg_free_result($result_actualizar);
pg_close($conexion);
...

si te fijas deje la version anterior solo que en el sql "$actualizar" le quite los parentesis antes del WHERE
y por otra parte comente "pg_free_result($actualziar);"


es raro creo pero funciono compa igual forma muchas gracias por darme luz con esto del php..lo seguire molestando en lo que me surja otra duda..gracias amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar