PHP - <SELECT> con listado desde una base de datos

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

<SELECT> con listado desde una base de datos

Publicado por Brian (5 intervenciones) el 11/09/2017 02:25:45
Buen día compañeros programadores!!!

Por ahora soy novato en la programación, sin embargo estoy trabajando duro para mejorar.

Estoy realizando un formulario, en donde en el se encuentre un <select> que muestre el listado de datos guardados en una de las tablas de la base de datos, al seleccionar uno de los datos necesito guardar el id (primary key) del dato seleccionado en otra de las tablas, es decir una llave foránea para relacionar ambas tablas. La llave foránea es un tipo de dato int auto_increment.

La conexión la estoy realizando por medio de PDO y las consultas tengo que hacerlas utilizando PREPARE, es decir... Una variable $statement = $conexion -> prepare('consulta.');

Aclaro!!! La variable $conexion contiene la conexión realizada a la base de datos.

EJ:

1
2
3
4
5
6
7
8
9
10
$statement=$conexion->prepare('INSERT INTO PuntosVenta(idPuntosVenta,Ubicacion_Punto,Direccion_Punto,Email_Punto,Telefono_Punto) VALUES (null,:ubicacionp,:direccionp,:puntoe,:puntot)');
 
$statement->execute(
	array(
		':ubicacionp'=>$ubicacion,
		':direccionp'=>$dpuntp,
		':emailp'=>$puntoe,
		':telefonop'=>$puntot
	)
);

Por favor me podrían ayudar? Estaré al tanto de cualquier inquietud y muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

<SELECT> con listado desde una base de datos

Publicado por xve (6935 intervenciones) el 11/09/2017 13:33:14
Hola Brian, exactamente donde tienes el problema?? en la consulta? o en capturar los datos del select? si nos puedes comentar con mas detalle...

Viendo el INSERT, veo que no pasas todos los parámetros necesarios, ya que en el array te falta :puntoe y :puntot, y te sobra :emailp y :telefonop
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: 9
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

<SELECT> con listado desde una base de datos

Publicado por Brian (5 intervenciones) el 11/09/2017 22:28:20
Hola xve, muchas gracias por tu respuesta.

Tienes razón, es un error que tenia mas sin embargo no es la inquietud que tengo.

Si deseas hacerme el favor de ayudarme, el tema es que necesito realizar un select dinámico en el que me cargue la lista de datos desde una db, y según el dato seleccionado, guardar el id del mismo, como llave foránea en otra de las tablas; el problema es que no tengo conocimiento en el manejo de programación orientada a objetos, por lo cual se me dificulta el trabajo.

Adjunto los archivos por si puedes ayudarme.
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 facundo

<SELECT> con listado desde una base de datos

Publicado por facundo (185 intervenciones) el 11/09/2017 16:00:17
Hola brian, aca te explico como hacer un select dinamico desde la base de datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql = "select `id`,`name` FROM usuarios";
$stmt = $this->pdo->prepare($sql);      //preparas consulta sql       
$stmt->execute();                      //la ejecutas 
?>
 
<select name="campos">
 <?php
 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){   //mientras fetch() encuentre resultados en la consulta sql, los va a guardar en $row en forma de array ( hacé var_dump($row) para comprobarlo )
     //aca decimos que por cada fila que encuentre fetch() la muestre en un option del select, indicandole que campo queremos de la siguiente manera...
     ?>
     <option value="<?=$row['id']?>"> <?=$row['name']?>  </option> <!-- En el value se le indica el valor con el que queres trabajar despues (hacer insert), y entre las dos etiquetas option va lo que queres que se vea -->
     <?php
 } ?>
 
</select>

En este caso $this->pdo viene del resultado de una conexion:
1
2
3
$dsn = $this->engine . ':host=' . $this->hostname . ';dbname=' . $this->dbname;
$this->pdo = new PDO($dsn,$this->username,$this->password);
return $this->pdo;

Luego para hacer el insert tenes que tomar el valor del select seleccionado, en este caso el select se llama campos, entonces si el formulario tiene method='post' lo harias asi:
$selected = $_POST['campos']; Esto lo que va a hacer es guardar en $selected el id del option seleccionado

Fijate que en la tabla en la que vas a insertar el ID no puede ser auto_increment este campo, porque le estas pasando vos los valores

Se entiende? Comentá como te fue
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

<SELECT> con listado desde una base de datos

Publicado por Brian (5 intervenciones) el 11/09/2017 22:02:29
Hola facundo, muchas gracias por responder.

Mira es que tengo un problema, como estoy iniciando en el mundo de la programación no tengo muchos conocimientos, por lo tanto aun no manejo la programación orientada a objetos, hasta ahora lo conozco teóricamente, se que es un requisito primordial para la programación pero por ahora no lo se utilizar; creo que tu método necesita del manejo de este tema, no se si me equivoco... ya intente lo que mas pude y pues no tengo mucho tiempo para entregar el proyecto.

Quiero subir los archivos que tengo por si me quieres ayudar a fondo.

Espero me entiendas y puedas hacer el favor de ayudarme.
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 facundo

<SELECT> con listado desde una base de datos

Publicado por facundo (185 intervenciones) el 11/09/2017 23:42:47
Mirá, vi tu codigo, lo unico distinto que hice a vos es usar los $this

Entonces hacé asi:

$this->pdo sustituilo por $conexion.

Y en puntosVenta.view para hacer el select dinamico si no queres usar objetos y clases creá una nueva conexion en esa pagina e implementá el código que te pasé.

Que parte no entendes del codigo que te pasé? Decime y te lo explico.

No te voy a pasar todo el codigo resuelto para que lo entregues porque asi no vas a estar aprendiendo, pero estoy dispuesto a enseñarte algo que no entiendas. Cualquier cosa comentá !!
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: 9
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

<SELECT> con listado desde una base de datos

Publicado por Brian (5 intervenciones) el 12/09/2017 20:58:42
Buen día facundo, muchas gracias por el apoyo.

Adjunto el archivo para que veas como lo acomode.

No se si lo he acomodado mal, ya que no me funciona el select. Ademas envió un pantallazo para que veas como aparece el select.
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 facundo

<SELECT> con listado desde una base de datos

Publicado por facundo (185 intervenciones) el 13/09/2017 01:18:45
tenes que estar mas atento a lo que te digo jeje

$this->pdo no lo sustituiste por $conexion, en cambio pusiste $this->$conexion, lo cual esta mal, sacale el $this. Te recomiendo que no te enrosques con usar el $this si todavia no sabes bien su uso, cuando aprendas objetos lo aprenderas.
Deberia quedar asi:
1
$stmt = $conexion->prepare($sql);

Otra cosa tenes mal, ahi decis "if request method == post entonces hago la conexion " osea.. "si toco el boton submit entonces hago la conexion. "

Si no toco el boton "submit" entonces no hay conexion, por lo tanto el select no te va a funcionar..

Entendes lo que tenes que hacer y porque no te anda? Es facil, tal vez tengas que pensarlo minimamente un poco como hacerlo, pero lo hago aproposito porque veo que estas interesado en aprender, y si te escribo el codigo resuelto entonces nunca vas a aprender como funciona y porque no te anda.

Proba arreglando eso que te dije y me comentas cualquier cosa
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