Foros del Web » Programando para Internet » PHP »

Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Estas en el tema de Ayundeme con el insert de CHECKBOX a base de datos POSTGRES en el foro de PHP en Foros del Web. Buenos días Tengo un inconveniente debo insertar en una tabla llamada ENFER, varios valores con un checkbox no se como hacerlo, ESTO ES LO QUE ...
  #1 (permalink)  
Antiguo 22/05/2008, 08:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Buenos días

Tengo un inconveniente debo insertar en una tabla llamada ENFER, varios valores con un checkbox no se como hacerlo, ESTO ES LO QUE TENGO MONTADO Y SOLO ME ALMACENA EN MI BASE DE DATOS EN ESTE CASO EL ULTIMO REGISTRO SELECCIONADO, "por favor tengame paciencia que tengo tiempo investigando esto y cuando me explican en terminos php me cuesta"

CODIGO PHP


<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion=pg_connect("host=localhost port=5432 password=1234 user=postgres dbname=postgres")
or die("Problemas en la conexion");

pg_query("insert into alumnos(nombre,mail,ci,codigosexo,codigocurso) values
('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[ci],$_REQUEST[codigosexo],$_REQUEST[codigocurso])");

pg_query("insert into enfer(ci,codigoenfermedades) values
($_REQUEST[ci],$_REQUEST[codigoenfermedades)");}

pg_close($conexion);
echo "El alumno fue dado de alta";


?>
<p><a href="formulario.htm">volver a llenar el formulario </a></p>
</body>
</html>

CODIGO DE FORMULARIO


<html>
<head>
<title>Problema</title>
</head>
<body>
<h1>Alta de Alumnos</h1>
<form action="pagina2finisimo.php" method="post">
<p>Ingrese nombre:
<input type="text" name="nombre" >
<br>
Ingrese mail:
<input type="text" name="mail">
<br>
C.I.:
<input type="text" name="ci">
<br>
Seleccione el curso:
<select name="codigocurso" size="1">
<option value="1" selected>PHP</option>
<option value="2">ASP</option>
<option value="3">JSP</option>
</select>
</p>
<p>
<input type="radio" name="codigosexo" value="1">
MASCUILINO
<input type="radio" name="codigosexo" value="2">
FEMENINO </p>
<p>
<input type="checkbox" id="codigoenenfermedades" value="1"> ripe </p><p>
<input type="checkbox" id="codigoenenfermedades" value="2"> asma</p><p>
<input type="checkbox" id="codigoenenfermedades" value="3"> fiebre </p>

<p>
<input type="submit" value="Registrar">
<INPUT TYPE="button"
VALUE="Cerrar ventana"
onClick="window.close();">


</p>
</form>
</body>
</html>

Leonardo
El muy NOVATO
  #2 (permalink)  
Antiguo 22/05/2008, 08:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hola leonar2445,

Con el código que pones no podrás insertar los checkbox en la base de datos, ya que les falta un atributo que es clave, y es el de name, sin el no podrás recuperar los datos desde PHP.

Una vez que soluciones esto, lo más recomendable es que nombres tus checkbox como un arreglo (de la forma: name="checks[]"), así desde PHP podrás ciclarlos usando un foreach por ejemplo y en cada ciclo del foreach podrás insertarlo en tu base de datos.

Saludos.
  #3 (permalink)  
Antiguo 22/05/2008, 08:27
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

leonar2445,

Como te dice GatorV tienes ke poner tus checkboxes de esta forma:

Código:
parte html

<p>
<input type="checkbox" name="enfer[0]"  value="1"> ripe </p>
<p>
<input type="checkbox" name="enfer[1]"  value="2"> asma</p>
<p>
<input type="checkbox" name="enfer[2]"  value="3"> fiebre </p>
y en tu código php pon esto:

Código:
//recibes valores
$enfer=$_POST['enfer'];

//agrupas valores en un cadena
 $cadena= implode (",", $enfer);

haces tu insert y listo
Saludos
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 22/05/2008, 08:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hermano gracias por tu ayuda y tu asesoramiento

Fijate comprendo un 70% de lo que me dices, con respecto al FOREACH se que es un bucle que se repite cada vez que comparamos (y la compracion es igual a lo que se pide "si mal no me equivoco") y al ser igual ejecutamos lo que queremos en mi caso el insert........

Ahora mi pregunta que comparo hermano para ejecutar mis insert 1 por 1 siemprey cuando haya seleccionado en el checkbox

Me puedes ayudar con un ejemplo
Gracias por su colaboracion amigo GatorV
  #5 (permalink)  
Antiguo 22/05/2008, 08:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hermnao ferbux

Te he agregao a mi msn a ver que posiblidades hay de conversar tambien por esa vía

Atte
Leonardo
[email protected]
  #6 (permalink)  
Antiguo 22/05/2008, 08:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hola leonar2445,

ferbux ya te puso un ejemplo, aunque recuerda que por diseño de los exploradores web, tu solo vas a recibir aquellos checkbox que hayan sido seleccionados, los que no se hayan seleccionado, no los recibirás en el $_POST.

Saludos.
  #7 (permalink)  
Antiguo 22/05/2008, 08:49
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Asi es tal cual te lo explica el maestro GatorV solo recibiras los checkbox seleccionados, sobre lo del mensajero con gusto te agrego para conversar.

saludos
__________________
"Eres grande por que caminas entre gigantes"
  #8 (permalink)  
Antiguo 22/05/2008, 11:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hermano que colaboran conmigo fijense lo que tengo montado

Paso 1................. Como me habias dicho

<input name="enfer[0]" type="checkbox" id="codigoenenfermedades" value="1" checked>Gripe </p><p>
<input name="enfer[1]" type="checkbox" id="codigoenenfermedades" value="2" checked>Asma</p><p>
<input name="enfer[2]" type="checkbox" id="codigoenenfermedades" value="3" checked>Fiebre </p><p>

Paso 2................. Como me habias dicho

//recibes valores
$enfer=$_POST['enfer'];

//agrupas valores en un cadena
$cadena= implode (",", $enfer);

Paso 3................. Como me habias dicho

pg_query("insert into enfer(id,codigoenfermedades) values ($_REQUEST[id],$_REQUEST[codigoenenfermedades)");

PERO AHORA ME DA ERROR

Parse error: syntax error, unexpected ')', expecting ']' in C:\AppServ\www\pagina2finisimo.php on line 20

Muchas Gracias Hermano
  #9 (permalink)  
Antiguo 22/05/2008, 12:08
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Cita:
Iniciado por leonar2445 Ver Mensaje
Hermano que colaboran conmigo fijense lo que tengo montado

Paso 1................. Como me habias dicho

<input name="enfer[0]" type="checkbox" id="codigoenenfermedades" value="1" checked>Gripe </p><p>
<input name="enfer[1]" type="checkbox" id="codigoenenfermedades" value="2" checked>Asma</p><p>
<input name="enfer[2]" type="checkbox" id="codigoenenfermedades" value="3" checked>Fiebre </p><p>

Paso 2................. Como me habias dicho

//recibes valores
$enfer=$_POST['enfer'];

//agrupas valores en un cadena
$cadena= implode (",", $enfer);

Paso 3................. Como me habias dicho

pg_query("insert into enfer(id,codigoenfermedades) values ($_REQUEST[id],$_REQUEST[codigoenenfermedades)");

PERO AHORA ME DA ERROR

Parse error: syntax error, unexpected ')', expecting ']' in C:\AppServ\www\pagina2finisimo.php on line 20

Muchas Gracias Hermano
Hola leonar2445, cómo vas??

Pues para que no te enrolles, por que no lo haces de esta manera, mientras que aprendes a hacer un insert múltiple:

Código PHP:
foreach($_POST['enfer'] as $enf)
{
pg_query("insert into enfer(id, codigoenfermedades) values ($_REQUEST['id'], $enf)");

Dos cosas para que tengas en cuenta:

1- Cuando utilizas arreglos, para evitar inconvenientes, el nombre de los indices asociativos(palabras), como en tu caso($_REQUEST['id'], $_REQUEST['codigoenenfermedades'] ), debes encerrarlos en comillas simples. No lo tenías así, las agregué.

2- Te faltaba cerrar la llave en $_REQUEST['codigoenenfermedades'], la tenías así $_REQUEST['codigoenenfermedades'.

Espero te sirva

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #10 (permalink)  
Antiguo 22/05/2008, 12:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

EL PRIMER INSERT= PERFECTO NO ME HA PRESENTADO PROBLEMA

EL SEGUN INSERT= SOLO ME ALMACENA UN SOLO VALOR ASI HAYA SELECIONADO LOS TRES


Por favor traten de probarlo y digamesn cuales son las modificaciones que debo de hacer


CODIGO HTML
<head>
<title>Problema</title>
</head>
<body>
<h1>Alta de Alumnos</h1>
<form action="pagina.php" method="post">
<p>Ingrese nombre:
<input type="text" name="nombre" >
<br>
Ingrese mail:
<input type="text" name="mail">
<br>
C.I.:
<input type="text" name="ci">
<br>
Seleccione el curso:
<select name="codigocurso" size="1">
<option value="1" selected>PHP</option>
<option value="2">ASP</option>
<option value="3">JSP</option>
</select>
</p>
<p>
<input type="radio" name="codigosexo" value="1">
MASCUILINO
<input type="radio" name="codigosexo" value="2">
FEMENINO </p>
<p>
<p>

<input type="checkbox" name="enfer[0]" value="1"> ripe </p>
<p>
<input type="checkbox" name="enfer[1]" value="2"> asma</p>
<p>
<input type="checkbox" name="enfer[2]" value="3"> fiebre </p>

<input type="submit" value="Registrar">
<INPUT TYPE="button"
VALUE="Cerrar ventana"
onClick="window.close();">


</p>
</form>
</body>
</html>


CODIGO PHP


<?php
$conexion=pg_connect("host=localhost port=5432 password=1234 user=postgres dbname=postgres")
or die("Problemas en la conexion");

pg_query("insert into alumnos(nombre,mail,ci,codigosexo,codigocurso) values
('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[ci],$_REQUEST[codigosexo],$_REQUEST[codigocurso])");
//recibes valores
$enfer=$_POST['enfer'];

//agrupas valores en un cadena
$cadena= implode (",", $enfer);

foreach($_POST['enfer'] as $enf)
{
pg_query("insert into enfer(id, codigoenfermedades) values ($_REQUEST['id'], $enf)");
}

pg_close($conexion);
echo "El alumno fue dado de alta";


Muchisimas gracias por su colaboracion
EL MUY NOVATO
[email protected]
  #11 (permalink)  
Antiguo 22/05/2008, 13:11
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hola de nuevo leonar2445, cómo vas??

Elimina esto:

Código PHP:
//agrupas valores en un cadena
$cadenaimplode (","$enfer); 
Lo que hace es que te agrega comas(,) al arreglo $_POST. Y no veo para que...

Una de las cosas que le ayudan a uno a analizar lo que esta haciendo la consulta es haceerle un echo:

Código PHP:
echo $consulta="insert into enfer(id, codigoenfermedades) values ($_REQUEST['id'], $enf)";
pg_query($consulta); 
Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #12 (permalink)  
Antiguo 22/05/2008, 13:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Solo me almacena un dato en la tabla (de los que haya seleccionado, me almacena el ultimo)

Vale destacar que esta tabla (enfer) esta creada por la unión de dos tablas, "de n:n" quiero decir que puede repetir un ci varias veces con distintas enfermedades
  #13 (permalink)  
Antiguo 22/05/2008, 13:35
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

leonar2445, pusiste los echo?? Sabes que pasa con las consultas??
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #14 (permalink)  
Antiguo 22/05/2008, 14:18
 
Fecha de Ingreso: mayo-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

HERMANO LISTO YA ESTA SOLUCIONADO GRACIAS

EL ERROR QUE HABIA ME DECIA QUE HABIA ALGO COMO ESTO

PG_QUERY ($CONSULTA)

ESTA PARTE LA QUITE Y ME QUEDO DE ESTA MANERA


$enfer=$_POST['enfer'];
foreach($_POST['enfer'] as $enf)
{
pg_query("insert into enfer(ci, codigoenfermedades) values ($_REQUEST[ci], $enf)");
}

BUENO ESTA PARTE NO LA ENTIENDO NO SE QUE ES LO QUE HACE MUY BIEN

¿SI ME LO PUEDES EXPLICAR?


GRACIAS MUCHAS GRACIAS HERMANO
UN PLACER CONOCERTE ESTO ES PARA HACER LA TESIS DE MI UNIVERSIDAD Y GRADUARME

Atte
Leonardo
[email protected]
Caracas-Venezuela

No crean todo lo malo de HUGO CHAVEZ, porque eso lo dicen los medios no el pueblo......
  #15 (permalink)  
Antiguo 22/05/2008, 15:58
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Ayundeme con el insert de CHECKBOX a base de datos POSTGRES

Hola de nuevo leonar2445... creo que hace dos post te había dado la solución

Y no hay problema en explicarte:

Resulta que la variable $_POST como tal, es un arreglo(imagino que sabes el concepto de arreglo y como funciona). Y lo llamamos acá como array asociativo.

Utilizas un objeto html input tipo checkbox llamado "enfer" como array también. Este objeto "enfer", se llena de acuedo a los check que escojan, solo esos. Por ejemplo si hay 5 checkbox y checas solo 3, pues lo que se mande en el form van hacer 3 checkbox con sus respectivos valores en vez de 5. Hasta ahí bien???

Cuando llegas a php, pues recorres ese arreglo "enfer", mediante un ciclo foreach (para este caso basta con este ciclo para recorrer el arreglo sin necesidad de colocar las posiciones por que él se encarga de eso solo). A medida que va recorriendo va incrementando automáticamente una posicion cosa que va trayendo los id que checaste...

Si ya tienes los dos id's pues ya puedes insertar... y por eso es que se hace un insert dentro del foreach.

Espero me hayas entendido man...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:54.