PHP - traer registros con select dinamico: ayuda

 
Vista:
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 26/07/2020 01:05:54
hola bueno ahora tengo este codigo para traer los registros; En realidad los esta trayendo todos, la idea es filtrarlos cuando seleccione un modulo, Si selecciono el modulo por ejemplo Electricidad los trae todos el objetivo es traer los de electricidad.

adjunto esta imagen de los registros, por lo menos ahora si los esta trayendo.
registros

a ver si alguien puede ayudar , espero este mas clara la explicacion.

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
<?php
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
session_start();
require_once("conexion_mantenimiento.php");
$obj=new Mantenimiento();
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="estilos.css">
  <link rel="stylesheet" href="fonts.css">
  <script type="text/javascript" src="js/funcionmodulo.js"></script>
<title></title>
<style type="text/css">
  #principal{ width:800px; height:100%; text-align: center }
  #header{ width:800px; height:100px; background-color:#ff0000; color:#FFF; text-align: center}
  #menu{ width:800px; height:25px; float:left; text-align: center}
  .boton{ width:100px; height:25px; float:left; background-color:#FF0000; color:#FFFFFF}
  .buscador{ width:300px; height:25px; float:left}
  #main{ width:800px; height:100%; text-align: center}
  .ajustar{text-align: justify}
  .color{color: white}
</style>
</head>
<body>
<form name="form">
    Seleccione el Modulo
      <select name="idtipomodulo" onchange="mostrarModulo('<?php echo $_GET["idmodulo"];?>'),this.value">
          <option value="0">Seleccione </option>
          <?php
            $modulos=$obj->modulos();
          //  print_r($modulos);
            for($i=0;$i<sizeof($modulos);$i++)
            {
              if(isset($_GET["idtipomodulo"]) and $_GET["idtipomodulo"] == $modulos[$i]["idmodulo"])
              {
              ?>
            <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>"selected="selected">
                           <?php echo $modulos[$i]["descripcion"];?>
              </option>
              <?php
              }else
              {
              ?>
              <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>">
                             <?php echo $modulos[$i]["descripcion"];?>
              </option>
              <?php
              }
            }
          ?>
      </select>
  <?php
  if(isset($_GET["idmodulo"]))
  {
    ?>
     <h3>Registros de la Ficha: </h3>
     <table>
      <?php
      $ficha=$obj->get_ficha($_GET["idmodulo"]);
      print_r($ficha);
      for($i=0;$i<sizeof($ficha);$i++)
      {
      ?>
       <tr>
         <td><?php echo $ficha[$i]["fecha"];?></td>
         <td><?php echo $ficha[$i]["observacion"];?></td>
       </tr>
       <?php
     }
     ?>
     </table>
    <?php
  }
  ?>
 
</form>
 
</body>
</html>

este es el codigo que se llama en con el onchange del formulario:
1
2
3
4
5
6
7
8
function mostrarModulo(idmodulo)
{
	if (idmodulo != 0)
	{
		 window.location="modulos1.php?idmodulo="+idmodulo+"";
	}
 
}

este es el metodo que debiera filtrar los registros:

1
2
3
4
5
6
7
8
9
10
11
12
13
public function get_ficha($idmodulo)
{
 
	$idmodulo=$_GET["idmodulo"];
	$sql="select * from modulo inner join ficha on modulo.idtipomodulo = $idmodulo";
   		$res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->gettipoficha[]=$reg;
		}
			return $this->gettipoficha;
 
}
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 27/07/2020 23:15:36
Buenas tardes podria alguien dar una sugerencia? En la imagen aparecen los registros, solo imprime cuando introduzco el valor por la url, no lo busca por el select dinamico.
podrian darme una ayuda por favor.
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por italo_pm (193 intervenciones) el 28/07/2020 02:02:14
Hola

tu select mysql funciona correctamente? has ya simulado solo la select? el resultado que recibes es el que esperas?

salud2.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 28/07/2020 22:32:23
Hola, si efectivmente si funciona bien lo extrano es ue cuando coloco el codigo en la url si filtra los registros,
1
localhost/prueba/mantenimiento/modulos.php?idmodulo=1

pero en el select dinamico no funciona.
La verdad lo he probado de muchas maneras pero no doy con la solucion. Estoy trabajando con PHP POO.
En la parte superior coloque una imagen de los registros con el localhost.

Este es el codigo o metodo con el select:
1
2
3
4
5
6
7
8
9
10
11
12
13
public function get_ficha($idmodulo)
{
 
	$idmodulo=$_GET["idmodulo"];
	$sql="select * from modulo inner join ficha on modulo.idtipomodulo = $idmodulo";
   		$res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->gettipoficha[]=$reg;
		}
			return $this->gettipoficha;
 
}
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por italo_pm (193 intervenciones) el 29/07/2020 13:38:30
hola,

de la forma como haces fuerzas a que el get sea recogido por GET desde la url solamente....

1
2
3
4
5
6
7
8
function mostrarModulo(idmodulo)
{
	if (idmodulo != 0)
	{
		 window.location="modulos1.php?idmodulo="+idmodulo+"";
	}
 
}


sugiero que envíes por POST (cosa aconsejable para los form) los datos....

utiliza js para recuperar el id seleccionado luego lo podrias enviar por hidden como POST o utiliza ajax, esas son las palabras claves.


salud2.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 30/07/2020 15:03:28
Hola que tal italo_pm,
este codigo:
1
2
3
4
5
6
7
8
9
10
11
12
function mostrarModulo(idmodulo)
 
{
 
	if (idmodulo != 0)
 
	{
 
		 window.location="modulos1.php?idmodulo="+idmodulo+"";
 
	}
}
es un javascript para llamarlo con onchange en el formulario:


Lo coloquè en negrita en el formulario donde estoy llamando la funcion javascript

Te pregunto el POST lo ubicaria asi:?
<select name="idtipomodulo" onchange="mostrarModulo('<?php echo $_POST["idmodulo"];?>'),this.value">

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
119
120
121
<?php
 
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
 
session_start();
 
require_once("conexion_mantenimiento.php");
 
$obj=new Mantenimiento();
 
 
 
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta charset="UTF-8">
 
<link rel="stylesheet" href="estilos.css">
 
  <link rel="stylesheet" href="fonts.css">
 
  <script type="text/javascript" src="js/funcionmodulo.js"></script>
 
<title></title>
 
<style type="text/css">
 
</head>
 
<body>
 
<form name="form">
 
    Seleccione el Modulo
 
      <select name="idtipomodulo" onchange="mostrarModulo('<?php echo $_GET["idmodulo"];?>'),this.value">
          <option value="0">Seleccione </option>
          <?php
            $modulos=$obj->modulos();
 
          //  print_r($modulos);
 
            for($i=0;$i<sizeof($modulos);$i++)
 
            {
 
              if(isset($_GET["idtipomodulo"]) and $_GET["idtipomodulo"] == $modulos[$i]["idmodulo"])
 
              {
 
              ?>
 
            <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>"selected="selected">
 
                           <?php echo $modulos[$i]["descripcion"];?>
 
              </option>
 
              <?php
 
              }else
 
              {
 
              ?>
 
              <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>">
 
                             <?php echo $modulos[$i]["descripcion"];?>
 
              </option>
 
              <?php
 
              }
 
            }
 
          ?>
 
      </select>
 
  <?php
 
  if(isset($_GET["idmodulo"]))
 
  {
 
    ?>
 
     <h3>Registros de la Ficha: </h3>
 
     <table>
 
      <?php
 
      $ficha=$obj->get_ficha($_GET["idmodulo"]);
 
      print_r($ficha);
 
      for($i=0;$i<sizeof($ficha);$i++)
      {
      ?>
       <tr>
         <td><?php echo $ficha[$i]["fecha"];?></td>
         <td><?php echo $ficha[$i]["observacion"];?></td>
       </tr>
       <?php
     }
     ?>
     </table>
    <?php
  }
  ?>
</form>
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 31/07/2020 17:08:27
Hola italo_pm,
he colocado el codigo con el POST Y el hidden:

1
2
3
4
<form name="form" method="POST">
Seleccione el Modulo
    <input type="hidden" name="idmodulo" value="<?php echo $_POST["idmodulo"];?>"/>
      <select name="idtipomodulo" onchange="mostrarModulo('<?php echo $_POST["idmodulo"];?>'),this.value">

pero no hace la funcion de cambiar en el select, podrias guiarme en este sentido.
pero veo que el onchange quedaria sin efecto. claro esto un parte del codigo.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 31/07/2020 18:29:05
Disculpen mi duda que significa la bandera roja que colocaron a este post?
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
Imágen de perfil de italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por italo_pm (193 intervenciones) el 01/08/2020 04:42:56
Hola

bueno, sobre la bandera roja o verde creo que se refiere cuando hay respuestas en tu tema o antiguedad de las respuesta, no recuerdo bien pero es automático.

sobre tu problema, hay alguna razón por la cual utilizas PostgreSQL y no mysql (pdo o mysqli)?? si no recuerdo mal en otro tema tu database era mysql pero a lo mejor me equivoco...

sin saber bien la estructura de tu base se datos es difícil ayudarte, en la primera imagen hiciste el print_r de $modulos y tenia toda la información de todos loa registros.

no será que a tu query le falta algun parametro?

en todo caso, puedes exponer nuevamente tu problema y que es lo que deseas obtener...

asi como en la primera imagen, clickas ua opcion de lista y que es loque debes obtener??

no seas abstracto al explicarte ya que será la unica manera de poder entender tu problema.

esta query

1
select * from modulo inner join ficha on modulo.idtipomodulo = 1;

que resultado te da? escribelo

otra cosa, php oop es un requerimiento necesario? lo pregunto porque suele pasar que muchas personas con pocas nociones desean aventarse a oop si aún saber como funciona...

salud2
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 01/08/2020 19:09:52
Hola amigo italo_pm, el proyecto que estoy creando es con PHP POO.
En un POST anterior yo subi la imagen del formulario y las estructuras de las tablas en POSTGRESQL, tengo mucho tiempo trabajando con ese manejador de BBDD y estoy muy familiarizado con el.

Queria mencionarte que en vista de que has atendido mas a mis POSTS podria enviar mi cuenta de correos para con mas facilidad explicrme mejor sobre el asunto.

cta correo: andresmen2004@hotmail. Que os parece? Sino seguiria pidiendo la ayuda por aqui mismo.
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 italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por italo_pm (193 intervenciones) el 03/08/2020 00:00:22
Hola

Si ya trabajas en postgresql, pues nada, no hay problema, lo mismo con oop era solo una duda.

Por otra parte serà mejor seguir el post, ya que particularme solo entro cuando puedo ....

como te dije trata de explicar mejor tu problema y tu codigo con imagenes etc etc mas info das mejor es.

si dices que tienes el diseño de tu database pues ponlo otra vez con su respectivo e/r.

para ayduarte mejor como te comente es que adjuntes las imagenes (a modo de ejemplo) de lo que deseas obtener.

Por el momento solo entendi que deseas clickar en un elemento de una lista y que luego en base a ese elemento se cree un report con el historial de ese elemento. es asi??

slaud2.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/08/2020 03:34:05
Hola que tal, Si efectiamente la idea es clickar en un elemento de una lista o select y que luego en base a ese elemento se cree un reporte con el historial o registros que estan en una tabla de BBDD que estan relacionados con ese elemento.

Ejemplo: tengo la lista de elementos asi:

Seleccione el modulo:
Electricidad
Mantenimiento
Salud
Plomeria

si escogiese por ejemplo el elemento Mantenimiento, esa opcion haria que se trajesen los registros de mantenimiento que estan en la tabla Ficha la cual esta emparentada o relacionada con la tabla Modulo.
Ya tengo los procesos o codigo hechos el asunto es que trae los registros solo por la url y no por la lista.

y esta imagen del formulario.
registros




1
2
3
4
5
CREATE TABLE modulo (
    idmodulo integer NOT NULL,
    idtipomodulo integer,
    descripcion character varying
);

1
2
3
4
5
6
7
8
9
CREATE TABLE ficha (
    idficha integer NOT NULL,
    idtipoficha integer,
    idusuario integer,
    idmodulo integer,
    fecha date,
    observacion text,
    id_mantenimiento integer
);
la relacion es:
1
2
ALTER TABLE ONLY ficha
    ADD CONSTRAINT ficha_idmodulo_fkey FOREIGN KEY (idmodulo) REFERENCES modulo(idmodulo);

ya la relacion esta hecha, solo que muestro para que tengas una idea.
Y gracias por responder.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 05/08/2020 00:06:21
Hola italo_pm

Recopilè los codigos en un archivo comprimido donde aparece lo que intento hacer. Anteriormente te envie un dibujo con la idea + una imagen del formulario de todos modos en el comprimido va otra vez la imagen.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 05/08/2020 14:29:26
Buenas, Zendi

a ver si aclaramos algunas ideas.

Al formulario donde tienes el select le pones un ID y asegúrate de ponerle method="post".
En el onchange del select, únicamente tienes que hacer un $("#IDFORMULARIOQUEHAYASPUESTO").submit()

Con lo anterior, ya el php que hayas puesto en el action del form, recibirá los datos por POST.
Ahora, en el php únicamente debes recogerlos por $_POST['nombre_del_campo_select'] para obtener el item elegido.

Asegúrate, como medida de seguridad, que la variable que lees del POST y luego añades a la SQL esté filtrado de código malicioso, por ejemplo, admitiendo únicamente enteros positivos.

Para que salgan sólo los módulos que quieres, en base al select elegido, tienes que añadirle a cada módulo la key/valor al que pertenece, como campo adicional. Luego, en la SQL, filtra por ese nuevo campo comparándolo con el valor elegido campo = valor_del_select.

Y creo que ya está.

Cualquier duda, pregunta de nuevo. Un saludo!
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 05/08/2020 16:25:18
Hola Juan Luis, agradezco tu sugerencia, bueno mira estoy aplicando tu ayuda.
en negrita estan lo que me indicas
ahora bien la funcion mostrarModulo() no iria? Ayudame por favor como se aplica en realidad. Estoy aprendiendo PHP POO. Mas abajo tengo la clase que da la conexion.

Este es el formulario:

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
<?php
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
session_start();
require_once("conexion_mantenimiento.php");
$obj=new Mantenimiento();
$modulos=$obj->modulos();
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="estilos.css">
  <link rel="stylesheet" href="fonts.css">
  <script type="text/javascript">
 
    function mostrarModulo(idmodulo)
      {
         if (idmodulo != 0)
        {
           window.location="modulos1.php?idmodulo="+idmodulo+"";
        }
      }
  </script>
<title>Modulos</title>
 
</head>
<body>
<form name="form" method="POST" id="modulo">
    Seleccione el Modulo
      <select name="idtipomodulo" onchange="mostrarModulo('<?php echo $_GET["idmodulo"];?>'),this.value" $("#IDFORMULARIOQUEHAYASPUESTO").submit()>
 
          <option value="0">Seleccione </option>
          <?php
            for($i=0;$i<sizeof($modulos);$i++)
            {
              if(isset($_GET["idtipomodulo"]) and $_GET["idtipomodulo"] == $modulos[$i]["idmodulo"])
              {
              ?>
            <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>"selected="selected">
                           <?php echo $modulos[$i]["descripcion"];?>
              </option>
              <?php
              }else
              {
              ?>
              <option value="<?php echo $modulos[$i]["idtipomodulo"];?>" title="<?php echo $modulos[$i]["descripcion"];?>">
                             <?php echo $modulos[$i]["descripcion"];?>
              </option>
              <?php
              }
            }
          ?>
      </select>
  <?php
  if(isset($_GET["idmodulo"]))
  {
    ?>
     <h3>Registros de la Ficha: </h3>
     <table>
      <?php
      $ficha=$obj->get_ficha($_GET["idmodulo"]);
      print_r($ficha);
      for($i=0;$i<sizeof($ficha);$i++)
      {
      ?>
       <tr>
         <td><?php echo $ficha[$i]["fecha"];?></td>
         <td><?php echo $ficha[$i]["observacion"];?></td>
       </tr>
       <?php
     }
     ?>
     </table>
    <?php
  }
  ?>
 
</form>
 
</body>
</html>
conexion
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
<?php
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
session_start();
class Conectar
{
	public static function con()
	{
       $conexion = "host=localhost port=5432 dbname=mantenimiento user=postgres password=1234";
       $connect = pg_connect($conexion);
	   return $connect;
	}
}
class Mantenimiento
{
	private $modulos=array();
	private $gettipoficha=array();
 
 
	public function modulos()
	{
		$sql="SELECT * FROM modulo ORDER BY descripcion asc";
        $res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->modulos[]=$reg;
		}
			return $this->modulos;
	}
 
public function get_ficha($idmodulo)
{
	$idmodulo=$_GET["idmodulo"];
    $sql="select * from modulo,ficha where modulo.idtipomodulo = $idmodulo";
   		$res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->gettipoficha[]=$reg;
		}
			return $this->gettipoficha;
}
}
?>
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 06/08/2020 09:55:57
Buenas,
te pongo el código comentado de lo que yo haría (no lo he probado, seguramente tendrás que retocarlo):

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
<?php
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
session_start();
require_once("conexion_mantenimiento.php");
$objMantenimiento=new Mantenimiento();
$modulos=$objMantenimiento->getModulos(); // aquí he renombrado el método para que quede más claro, hay que renombrarlo en la clase también
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script
  src="https://code.jquery.com/jquery-3.5.1.min.js"
  integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
  crossorigin="anonymous"></script>
<meta charset="UTF-8">
<link rel="stylesheet" href="estilos.css">
  <link rel="stylesheet" href="fonts.css">
 
<title>Modulos</title>
 
</head>
<body>
<form name="form" method="POST" id="frm_modulo">
    Seleccione el Modulo
      <select name="idmodulo" onchange="javascript:$("#frm_modulo").submit();">
          <option value="">Seleccione </option>
          <?php foreach($modulos as $modulo): ?>
            <option value="<?=$modulo['idmodulo'];?>" title="<?=$modulo['descripcion'];?>"
            <?php echo ($_POST['idmodulo'] == $modulo['idmodulo']) ? "selected='selected'" : '' ?>
            >
                           <?= $modulo['descripcion'];?>
              </option>
          <?php endforeach; ?>
      </select>
  <?php
  if(isset($_POST['idmodulo']) && is_numeric($_POST['idmodulo']))
  {
    ?>
     <h3>Registros de la Ficha: </h3>
     <table>
      <?php
      $fichas=$obj->get_ficha($_POST["idmodulo"]);
      print_r($fichas);
      foreach($fichas as $ficha)
      {
      ?>
       <tr>
         <td><?php echo $ficha["fecha"];?></td>
         <td><?php echo $ficha["observacion"];?></td>
       </tr>
       <?php
     }
     ?>
     </table>
    <?php
  }
  ?>
 
</form>
 
</body>
</html>
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 06/08/2020 10:16:37
Perdón, en la línea 26 hay un error.

aquí la tienes corregida:

1
<select name="idmodulo" onchange="javascript:$('#frm_modulo').submit();">


Un saludo!
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 06/08/2020 16:28:08
Hola Juan Luis, esa es la idea voy por buen camino pero cuando selecciono cualquier modulo del combo aparece
este mensaje:
Registros de la Ficha:
Array ( )
.


Esta es el metodo:
1
2
3
4
5
6
7
8
9
10
11
12
public function get_ficha($idmodulo)
{
 
	$idmodulo=$_GET["idmodulo"];
    $sql="select * from modulo,ficha where modulo.idtipomodulo = $idmodulo";
   		$res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->gettipoficha[]=$reg;
		}
			return $this->gettipoficha;
}
para traer las fichas relacionadad con el select dianmico. Pero lo veo normal.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 07/08/2020 11:24:57
Hola de nuevo!

bueno, debes darte cuenta que en el método get_ficha le estás pasando ya un valor en su parámetro de entrada. Por lo tanto, no hace falta que vuelvas a setear la variable dentro del método:

1
$idmodulo=$_GET["idmodulo"];

Y tampoco hay que utilizar más ya el GET, puesto que el PHP ya recibe por POST la variable.

Por lo tanto, el código quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
public function get_ficha($idmodulo)
{
	if($idmodulo && is_numeric($idmodulo)) {
                $sql="select * from modulo,ficha where modulo.idtipomodulo = " . intval($idmodulo);
   		$res=pg_query(Conectar::con(),$sql);
		while ($reg=pg_fetch_array($res))
		{
			$this->gettipoficha[]=$reg;
		}
	        return $this->gettipoficha;
        }
        return [];
}

Observa que SIEMPRE hay que validar cualquier valor que le pasamos a la SQL, en este caso, se ha hecho un cast a entero para eliminar cualquier posibilidad de hackeo.

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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 07/08/2020 16:40:47
Hola, bueno probare el codigo, a cualquier duda volveria a consultar, te agrdezco la ayuda.

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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 08/08/2020 20:23:34
Amigo Juan Luis ajustè lo que faltaba para el codigo gracias por tu ayuda, ahora si funciona, gracias muchas gracias.

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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 09/08/2020 07:59:54
Perfecto, me alegro mucho.

Un saludo!
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 05/09/2020 16:24:44
Hola Juan Luis, que tal, quisiera una ayuda con respecto a un codigo que he creado para actualizar la contraseña de varios usuarios; la idea es actualizar de maera multiple su password, por supuesto que sea diferente para cada uno.

aqui te muestro la imagen donde aparece la contraseña para cada usuario, por supuesto la contraseña se repite; que no es la idea, como ya dije debe ser diferente.
registros

y este es el codigo que he creado pero hay algo que no permite la distribucion de cada contraseña que sea diferente. Esto es para una aplicacion de un condominio.
primero creo un nro aleatorio o random y luego ese aleatroio se lo asigno a cada usuario.
Como se podria hacer para que se asigne un valor aleatorio diferente?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
?php
$conexion = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=tyru47");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$e_mail="SELECT id, email,contraseña FROM usuarios'";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
 {
     $cadena = '0123456789';
  	 $passw ='';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
   while ($row = pg_fetch_row($res)) {
 	$aleatorio = mt_rand(0,$lng_cadena-1);
        $passw .= substr($cadena,$aleatorio,1);
				$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' ";
				$actualiza = @pg_query($conexion,$contrasena);
}
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 06/09/2020 03:30:42
Buenas, Zendi

tu UPDATE está actualizando todos los registros en cada iteración del bucle While.

Únicamente debes decirle que haga el UPDATE "SÓLO" a la fila correspondiente que está ejecutándose en ese ciclo del bucle. Es decir, la SQL debería ser algo como:

1
$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE id = " . $row[0];

Una cosa más, MYSQL tiene muchas funciones para poder generar cadenas y números aleatorios directamente en la sentencia SQL, con lo que podrías ahorrarte el código PHP que utilizas para componer la contraseña...

Yo haría algo mucho más simple, como:


1
2
3
4
5
6
7
if(pg_num_rows($res)>0)
 {
   while ($row = pg_fetch_row($res)) {
      $sqlUpdatePassword = "UPDATE usuarios SET usuario_pass = LEFT(MD5(CONCAT(id, RAND())), 8) WHERE id = " . $row[0];
      $actualiza = @pg_query($conexion,$sqlUpdatePassword);
   }
}

Aunque es muy poco probable que algún registro coincida con otro en la misma password, para asegurarte, puedes validar primero, antes de hacer el UPDATE, que la clave no exista en algún otro registro.
Para ello, sacamos la generación de la contraseña del MYSQL a una variable PHP y hacemos antes un SELECT buscando esa pass en la tabla. Si no existe, procedemos con el UPDATE, pero en el caso de que ya exista, generamos una nueva password y lo intentamos de nuevo.

Espero que todo sea de tu ayuda.

Un saludo,
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 08/09/2020 23:43:08
Gracias por tu respuesta, lo mirare en casa y te aviso, te digo que en la casa ya que tengo venir a donde un familiar a revisar la webdelprogramador..
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 10/09/2020 00:27:38
Hola Juan Luis, bueno apliquè tu codigo pero no esta creando cada contraseña a cada propietario, parece que hay algo en la instruccion:
1
2
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RAND())), 8) WHERE nroapto = " . $row[0];
print_r($sqlUpdatePassword);
Lo probe de muchas maneras.
Tambien imprimì la consulta y arrojo este resultado:
resultado-query

En negrita esta el verdadero nombre de la tabla.

Este es el codigo completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=ty190*/");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$email = $_POST['email'];
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
{
 
    $sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RAND())), 8) WHERE nroapto = " . $row[0];
    print_r($sqlUpdatePassword);
    $actualiza = @pg_query($conexion,$sqlUpdatePassword);
 
}
///////
 
 
?>
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 10/09/2020 07:16:52
Buenas,

mi código era correcto para el ejemplo que ponías (usaba el id para hacer el update)... pero en tu respuesta has cambiado la consulta y los campos que se usan en el UPDATE.

En tu caso de ahora, que usas el campo NROAPTO como identificador, no es un valor numérico, sino una cadena, por lo que tienes que modificar la SQL del UPDATE y meter el valor entre comillas simples:

1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RAND())), 8) WHERE nroapto = '" . $row[0] . "'";

Ya me cuentas, 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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 10/09/2020 16:45:39
De acuerdo lo pruebo y te aviso. Gracias.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 12/09/2020 19:25:48
Que tal amigo Juan Luis, bueno el codigo no funcionó, lo he colocado de esta forma:

1
2
3
4
5
6
7
8
9
10
11
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
{
    while ($row = pg_fetch_array($res)){
 
        $sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RAND())), 8) WHERE nroapto = '" . $row[0] . "'";
        print_r($sqlUpdatePassword); echo "<br/>";
        $actualiza = @pg_query($conexion,$sqlUpdatePassword);
 
    }

de todos modos esta es la tabla de la BBDD
tabla
esta es la estructura:
estructura

y esto es lo que arroja cuando con el print_r().
queryregistros

Lo he probado muchas veces y nada que actualiza la contraseña de todos los registros.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis R. (35 intervenciones) el 12/09/2020 19:54:43
Buenas!

las SQLs que se generan son correctas! y es imposible que afecten a todos los registros ya que el WHERE toma como condición un valor que es único en la tabla :)

Me da que el problema es que la SQL no llega a ejecutarse, ya que la contraseña que se debería generar es de 8 caracteres y en la tabla que me pones sólo hay 7, por lo tanto, esa clave no está generada por la SQL del UPDATE que tenemos.

Prueba lo siguiente. Haz un:

UPDATE propietarios SET contrasena = NULL;

con esto nos aseguramos de que una vez ejecutado el código, si no hay ningún valor en el campo de contraseña, es que no se está ejecutando realmente. Aunque lo imprimas en el bucle, debe haber un error al ejecutarlo.

Habilita el mostrado de los errores de PHP al principio del script PHP:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

----- Y AQUÍ TU CÓDIGO...





Ah, y tienes una ARROBA @ en tu sentencia:

$actualiza = @pg_query($conexion,$sqlUpdatePassword);

Quítala porque eso enmascara un posible error.

También imprime el valor de $actualiza, a ver qué devuelve la ejecución del UPDATE.

Añade también, antes de cerrar el bucle While, lo siguiente:


echo pg_last_error($conexion);

Para ver si se está produciendo algún error.









Ya me cuentas!

un saludo,
JuanLu
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 14/09/2020 23:36:05
De acuerdo Juan Luis, lo pruebo y te aviso. Gracias.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 19/09/2020 16:41:50
Que tal Juan Luis, disculpa la tardanza para responder, bueno realicè todas las sugerencias que me indicaste, y me arrojo esto:
queryregistros

a nivel de pgadmin coloqué lo que dijiste
1
UPDATE propietarios SET contrasena = NULL;
y los dejo en blanco alli no hay problemas.

Pero analizando bien el:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RAND())), 7) WHERE nroapto = '" . $row[0] . "'";
note que no es
1
RAND
1
RANDOM
y si funcionó aqui se puede ver el resultado:
resultadoCLAVE. Pero queria saber si puedes ayudarme a que la clave sea de puros numeros ya que esta en alfanumerico, o sino que sea alfabetico por favor ¿tienes una idea?


Bueno agradezco tus esfuerzos por ayudar.
Y te dejo el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
 
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
{
    while ($row = pg_fetch_array($res)){
        $sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RANDOM())), 7) WHERE nroapto = '" . $row[0] . "'";
        print_r($sqlUpdatePassword); echo "<br/>";
        $actualiza = pg_query($conexion,$sqlUpdatePassword);
        print_r($actualiza);
        echo pg_last_error($conexion);
    }

Es una maravilla como funciona!!!!!

SAludos y ya me comentas.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 19/09/2020 19:34:05
Buenas,
Me alegro de que te haya ayudado. Perdón por lo del RANDOM, estaba pensando más en MySQL que en PostgresSql.

Con respecto a lo que necesitas, yo cambiaría la función del sql que genera la contraseña, por esta otra:

1
contrasena = LPAD(RANDOM(0, 99999999), 8, "0")

Lo que hace es generar un número aleatorio entre 0 y 99999999 y rellena a la izquierda con ceros hasta formar una cadena de 8 caracteres.

Espero que sea de tu ayuda.

Un saludo!
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 21/09/2020 14:59:03
Hola Juan Luis arroja este error:
1
Parse error: syntax error, unexpected '0' (T_LNUMBER) in C:\xampp\htdocs\tesis1\recorrer.php on line 35


lo coloque tal como me indicaste:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = LPAD(RANDOM(0, 99999999), 8, "0")";


y si fuese de forma alfabetica como se cambiaria a letras el aleatorio?
estoy utilizando esto pero no funciona:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ', RANDOM(),8)";
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 21/09/2020 15:06:18
Buenas,

tienes un problema con las comillas dobles en la SQL:

1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = LPAD(RANDOM(0, 99999999), 8, '0')";

Así debería valer.

Saludos,
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 21/09/2020 15:17:33
Ahora no da error, pero tampoco cambia la contraseña a numeros!!
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 21/09/2020 19:42:49
Buenas de nuevo,


hagamos una cosa, vamos a delegar la generación de contraseñas a una función externa:

1
2
3
4
5
6
7
8
9
10
function generatePassword($length = 8) {
   $chars = "abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789";  // alfanumérico
   //$chars = "abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWYXZ";  // sólo letras
   //$chars = "0123456789";  // sólo números
   $password = "";
   for ($x = 0; $x <= $length; $x++) {
      $password.= substr($chars, rand(0, strlen($chars) - 1), 1);
   }
   return $password;
}

y luego sólo tienes que llamar a la función en la SQL:

1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = '" . generatePassword() . "' WHERE nroapto = '" . $row[0] . "'";

Si quieres que la clave que se genere contenga sólo letras, sólo números o una mezcla de ambas, comenta o descomenta las líneas correspondiente de la función. También la función admite un parámetro para indicarle la longitud de la contraseña, por defecto 8 caracteres. Si necesitas un tamaño concreto, cambia el valor por defecto del argumento de la función, o bien al llamarla incluye el tamaño como argumento.

Un saludo!
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 26/09/2020 15:47:35
Hola Juan Luis, esta bien aplicare tu funcion.
Ya capte tu idea de descomentar o comentar las lineas dentro de la funcion.
Pero esa funcion debe ir dentro de mi codigo? En cual lugar debo colocarla? Disculpa la pregunta y mi desconocimiento.

este es mi codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
 
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
{
    while ($row = pg_fetch_array($res)){
        $sqlUpdatePassword = "UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RANDOM())), 7) WHERE nroapto = '" . $row[0] . "'";
        print_r($sqlUpdatePassword); echo "<br/>";
        $actualiza = pg_query($conexion,$sqlUpdatePassword);
        print_r($actualiza);
        echo pg_last_error($conexion);
    }

Por favor ayudame en este caso. 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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 26/09/2020 17:30:34
Buenas, Zendi

según veo en tu código, la llamada a la función de generar contraseñas no se hace dentro de una clase, por lo que basta añadir esa función al final de tu código, al final del fichero php donde la estás llamando/utilizando.


1
2
3
4
5
6
7
8
9
10
<?php
...
[tu código]
...
 
// Funciones
function generatePassword($length = 8) {
   ...
}
?>


Eso es todo,
un saludo!
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 30/09/2020 23:01:49
Buenas Juan Luis, tarde en responder debido al internet muy lento, bueno olvidaba que una funcion no debe ir dentro de una clase; ya ubiqué la funcion.
Pero se está repitiendo la contraseña en los registros con la ultima contraseña.
aqui estan los resultados del update y la BBDD.

update
resultado

en el update aparecen bien pero esta actualizando todos los registros de la BBDD con el ultimo registro.

Ayudame a ver cual sera el problema; le he dado todas las pruebas posibles y nada.

aqui esta el código:
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
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
 
 
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
 {
 		   while ($row = pg_fetch_array($res)){
			     $sqlUpdatePassword = "UPDATE propietarios SET contrasena = '" .generatePassword(). "'";
			     print_r($sqlUpdatePassword); echo "<br/>";
			     $actualiza = @pg_query($conexion,$sqlUpdatePassword);
			     //print_r($actualiza);
                 echo pg_last_error($conexion);
 
			}
 
 
}
function generatePassword($length=8){
	$chars="abcdefghijklmnopqrstuwxyz";//alfabeticamente
	//$chars="1234567890"; //numeros
	$password="";
	for($x=0;$x<=$length;$x++){
		$password.=substr($chars,rand(0,strlen($chars)-1),1);
	}
		return $password;
}
 
 
 
?>
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 30/09/2020 23:16:46
Hola, Zendi

Te has olvidado de añadir el WHERE al UPDATE.

1
2
WHERE nroapto = '" . $row[0] . "'"


Si no le pones el where, el update se aplica a toda la tabla.

Un saludo!
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 30/09/2020 23:30:50
Hola Juan Luis, alli estoy claro; con un solo registro si lo hace, pero la idea es aplicarlo a toda la tabla. Pero no lo esta haciendo.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 30/09/2020 23:37:26
Si le agregas el where actualizará el registro que le toque en cada momento del bucle while, ya que previamente has hecho un select * sin restricciones, con lo cual estás recuperando todos los registros de la tabla y luego, en tu while vas actualizando la contraseña uno a uno.

Tú lo que quieres es con una sola instrucción sql actualizar todas las contraseñas a la vez?
Es que en ese caso te sobra todo el código que tienes.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 01/10/2020 00:00:22
Si asi mismo; con una sola instrucción sql actualizar todas las contraseñas a la vez, pero no veo como solucionar esto. Tienes alguna idea? he buscado todas las formas y nada.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 01/10/2020 00:15:57
la unica forma que veo es que a la instruccion:
1
UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RANDOM())), 7)
se le modifique a decimales o numeros, he buscado por google pero explican de manera confusa.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 01/10/2020 00:23:47
Puedes hacer un update con este set:

Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)


Eso te genera un número aleatorio desde 0 hasta 99999999, siendo el número resultante "rellenado" de tantos ceros a la izquierda necesarios para completar los 8 caracteres.

Si haces esto, entonces, el primer select que tienes se sustituiría por el update con el set que te he puesto. Luego iría el

pg_query($conexion,$sql_del_update);


Y todo lo demás a continuación sobraría.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 01/10/2020 08:11:15
1
2
3
la unica forma que veo es que a la instruccion:
UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RANDOM())), 7)
se le modifique a decimales o numeros, he buscado por google pero explican de manera confusa.

no había visto este comentario.

Sí, podría valer para generar una contraseña alfanumérica. El código quedaría:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
 
 
$sql="UPDATE propietarios SET contrasena = LEFT(MD5(CONCAT(nroapto, RANDOM())), 7)";
$res = pg_query($conexion,$sql;
 
?>


Si no tienes pensado mandar la nueva contraseña a los usuarios, los require de phpMailer te sobrarían.
Si quieres enviarla, tendrás que, hacer luego del update un select * de toda la tabla y un bucle para leer el email y la contraseña generada del usuario y hacer el envío del email.

Saludos!


PD: recuerda securizar las contraseñas porque se van a guardar en la tabla tal cual son, y eso no es algo correcto. Deberías aplicarle al resultado del left md5 una función de encriptación con una salt que definas al principio del php.
Luego, en el login, lo que haces es coger el post de la contraseña, aplicarle la misma función de encriptación con el mismo salt y pasárselo al Postgresql a ver si lo encuentra.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 02/10/2020 23:53:33
con este set
1
Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)

esta imprimiendo esto:

1
UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)

es decir el mismo codigo. Y no esta actualizando la contraeña de la BBDD.


Ahora me arroja este error:

UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^UPDATE propietarios SET contrasena Set contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: error de sintaxis en o cerca de «Set» LINE 1: UPDATE propietarios SET contrasena Set contrasena = lpad(flo... ^
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 03/10/2020 02:48:18
No puedes poner dos veces seguidas el SET contrasena = en la sql.

Si no eres capaz de darte cuenta del error y corregirlo, deberías considerar aprender programación y bases de datos desde cero.

Creo que hay que sentar unas bases iniciales mínimas para poder avanzar en los proyectos, porque en el siguiente paso de tu aplicación, volverás a preguntar cosas que son igualmente básicas y no se trata de que te ayuden sino de que aprendas.

Espero que no me tomes mal lo que te digo, por favor. Yo miraría algún curso básico de programación gratuito de Udemy. Vas a aprender mucho más rápido que esperando a que alguien te solucione cualquier error.

Un saludo y seguimos en contacto.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 03/10/2020 23:02:36
La verdad es que no vi el error debido al cansancio, trabajo muy fuerte en otra area tambien, pero te aseguro que no vi el error, en serio estaba muy agotado. Yo estoy claro en que no debe ser asi, Disculpa.

Bueno asi coloqué la linea:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)";
pero me este error con la funcion low

UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1) + low), 8)
ERROR: no existe la columna «low» LINE 1: ... contrasena = lpad(floor(random()* (99999999 + 1) + low), 8) ^



LA VERDAD DISCULPA JUAN LUIS, ENTIENDEME QUE A VECES UNO SE AGOTA EN EL IR Y VENIR.
TENGO MUCHO TIEMPO TRABAJANDO CON BBDD. EL ERROR INDICA QUE EL LOW NO EXISTE COMO COLUMNA.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 03/10/2020 23:29:01
La verdad no ví el error y no queria ofender, solo que fue un error de cansancio, y queria señalar que en mi casa no tengo internet, y debo venir a donde un familiar para poder entrar al foro, asi es como a duras penas puedo buscar informacion sobre programacion.

Y estamos en contacto.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis R. (35 intervenciones) el 04/10/2020 00:08:42
Puedes quitar el low directamente:

1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1)), 8)";

Así te debería ir bien.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis (35 intervenciones) el 04/10/2020 00:17:54
Nada que disculpar, Zendi. Más lo siento yo si te resultaron ofensivas mis palabras... lo siento mucho. :-/
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/10/2020 00:22:18
No se preocupe, debi mirar bien el codigo... pero... no me rindo, yo tengo muchos años programando, a veces uno se cansa.

Bueno voy a aplicar tu codigo:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = lpad(floor(random()* (99999999 + 1)), 8)";
Saludos.


le quite el lpad y low y da esto en la bbdd

"478964"
"224866"
"132927"
"856281"
"52880"
"407500"
"80234"
"353732"
"988274"
"875809"
"564181"
si lo hace pero algunos registros aparecen mas cortos que otros.

lo hice asi:
1
sqlUpdatePassword = "UPDATE propietarios SET contrasena = floor(random()* (999999 + 1))";
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/10/2020 22:15:58
Hola Juan Luis, que te parece como quedo el asunto? Bueno ya tengo la forma numerica para la contraseña, ahora buscare la otra forma en alfabetica.
Si tienes alguna sugerencia sera aceptada.
SAludos estamos en contacto.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 04/10/2020 22:21:02
Hola, Zendi
puedes hacer un:

UPDATE propietarios SET contrasena = array_to_string(array(select substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',((random()*(6)+1)::integer),1) from generate_series(1,50)),'');


No tengo manera de probarlo, pero a lo mejor te pone en el camino.

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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/10/2020 22:46:41
Gracias Juan Luis, lo pndre en practica y te aviso.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/10/2020 23:14:01
Probe el codigo.
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = array_to_string(array(select substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ',((random()*(6)+1)::integer),1) from generate_series(1,50)),'')";
aqui en las letras:'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' eliminé los numeros para obtener solo letras.
Y aqui
1
generate_series(1,8))
le coloqué 8 en vez de 50 para reducir la contraseña a 8 digitos.

quedando asi:
1
$sqlUpdatePassword = "UPDATE propietarios SET contrasena = array_to_string(array(select substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ',((random()*(6)+1)::integer),1) from generate_series(1,8)),'')";
y en realidad lo hace; pero se repite en todos los registros:

"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
"AFFAGDBF"
""


la verdad es una locura.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por Juan Luis (35 intervenciones) el 04/10/2020 23:18:00
¿Has metido el update dentro del bucle while?
Sólo habría que ejecutarlo una vez. Es decir, el bucle no haría falta.

Ejecuta el update dentro de tu programa de gestor de base de datos, a ver si modifica bien las contraseñas, y cada registro diferente.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 04/10/2020 23:26:26
ok, te aviso.


lo realice en el gestor de BBDD y hace lo mismo; repite la contraseña, igualmente le quite el bucle y repite la contraseña.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 08/10/2020 01:35:35
Hola Juan Luis. Por aqui nuevamente. Ejecuté el update en el gestor de BBDD y hace lo mismo; repite la contraseña, igualmente le quité el bucle y repite la contraseña.

Bueno creo que llegamos hasta aqui con esto; de todos modos gracias por tu ayuda.

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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (35 intervenciones) el 09/10/2020 08:33:16
Un placer intentar ser de ayudar a alguien, Zendi.

Una pena que no tenga el entorno adecuado en mi portátil, pero es de empresa y no puedo configurarlo a mi gusto. Podríamos habernos ahorrado algunos pasos o errores. Pero bueno!, hemos aprendido mucho también, no?

Ya que el UPDATE afecta a todos por igual, déjalo dentro del bucle, como al principio y así te aseguras de que afectará sólo a la línea en curso.

Aquí el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
 
 
$e_mail="SELECT * FROM propietarios ORDER BY nroapto";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
 {
             while ($row = pg_fetch_array($res)) {
               $sqlUpdatePassword = "UPDATE propietarios SET contrasena = array_to_string(array(select substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ',((random()*(6)+1)::integer),1) from generate_series(1,8)),'') WHERE nroapto = '" . $row[0] "'";
               $actualiza = @pg_query($conexion, $sqlUpdatePassword);
            }
}
 
?>

Y debería funcionarte perfectamente.

Un saludo,
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (1056 intervenciones) el 11/10/2020 16:35:58
Hola Juan Luis. Por supuesto hemos aprendido, hiciste mucho por ayudar y eso se agradece, estamos en contacto para otras incursiones en algun codigo.

Gracias por tu ayuda.
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

permisologia o roles

Publicado por zendi (1056 intervenciones) el 18/10/2020 21:43:25
Hola Juan Luis por aqui nuevamente. He creado una aplicacion y Necesito crear acceso a una persona como administrador; solo esa persona puede consultar los registros que los usuarios generan. Los usuarios no deben tener acceso a esos registros. Te pregunto: debo crear un formulario aparte de la aplicacion? o dicho formulario debe ir en la aplicacion? Estoy claro que debo crear una tabla con los roles o permisos. Tambien te pregunto: debo relacionar dicha tabla con la de usuarios?
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

permisologia o roles

Publicado por JUAN LUIS ESP (35 intervenciones) el 19/10/2020 01:48:03
Buenas, Zendi

por lo que cuentas, entiendo que la aplicación debe tener protegida la parte de listado de los usuarios. Bueno, yo haría un formulario de login en dicho listado.

Si el usuario que accede no tiene una COOKIE determinada, se le presenta el formulario de login y termina la ejecución. Si sí la tiene, imprime el listado.

El formulario de login debería enviar los datos contra una página php de autenticación y, en caso de login ok, redireccionar al listado (donde se hace de nuevo la verificación de la cookie).

Para un solo administrador no creo que merezca la pena implementar tablas de usuarios y roles.

Un saludo!
Juan Luis
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

permisologia o roles

Publicado por zendi (1056 intervenciones) el 24/10/2020 22:05:31
Que tal Juan Luis, aqui te muestro como es el menu de la pagina o Aplicacion.


menu
Como puedes ver tiene su opciones tanto de registrarse como iniciar sesion.

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

permisologia o roles

Publicado por zendi (117 intervenciones) el 01/01/2021 21:04:49
Que tal Juan Luis te comento que ya resolvi el asunto de la permisologia en mi pagina web, de tanto estudiar e investigar.
En otro orden de ideas, si pudieras darme unas ideas con respecto a una base de datos en postgresql, claro no es este el post de Postgresql, pero si pudieras ayudarme mucho te agrdezco, resulta que el sistema operativo windows 7 se daño y no puedo llegar a mi base de datos, no puedo entrar ahora bien debo poner ese disco como esclavo para poder verlo con otro disco.

De que forma o con cual ruta debo entrar a la BBDD? ya entre con esta ruta: Archivos de programa\Postgresql\bin, pero no veo nada.

agradezco tu ayuda.
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
sin imagen de perfil
Val: 121
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

permisologia o roles

Publicado por Juan Luis (35 intervenciones) el 01/01/2021 21:13:42
Hola de nuevo, Zendi
Primero de todo, Feliz Año Nuevo!
Con respecto de la base de datos, no sé mucho sobre ello.
Al colocar el disco dañado como esclavo, se mapeará, supongo, con otra letra de unidad que ya no es C:/ por lo tanto, suponiendo que ya tienes otra vez montado el entorno de BBDD y de servidores en el nuevo disco duro, lo que tienes que hacer es copiar los archivos de la antigua ruta al /bin de la nueva.
Si no vale sólo con copiar los archivos, busca información sobre cómo importar bases de datos (normalmente se hace desde una ventana shell).

Me alegro que hayas resuelto lo del tema de permisos, estoy seguro de que habrás aprendido mucho en el proceso y que también habrá sido reconfortante el ver que te funciona tal como quieres que lo haga.

Un saludo!
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
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

permisologia o roles

Publicado por zendi (1056 intervenciones) el 03/01/2021 20:14:39
Hola Juan Luis, Bueno voy a trabajar como me sugieres, y te aviso.

En el caso de la permisologia, lo que hice fue preguntar en el codigo de la CLASE(en el metodo validar) si el permiso es igual a 1 es administrador y automaticamente el Administrador de la aplicacion entra a otro modulo, sino es igual a 2; es un cliente, y este va al modulo que le corresponde al Cliente. Y listo!! sin muchos ajetreos.
Gracias por responder.
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