PHP - traer registros con select dinamico: ayuda

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

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 877
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 (190 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 877
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 (190 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 877
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 (190 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 877
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 (190 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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
21
22
<?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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis R. (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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: 616
Bronce
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

traer registros con select dinamico: ayuda

Publicado por zendi (983 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

traer registros con select dinamico: ayuda

Publicado por Juan Luis ESP (23 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