Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Crear un array y luego extraer sus valores

Estas en el tema de Crear un array y luego extraer sus valores en el foro de Mysql en Foros del Web. Hola amigos, Tengo un formulario en donde tengo varios checkboxs y quiero guardar los valores de cada checkbox seleccionado por el usuario en un solo ...
  #1 (permalink)  
Antiguo 24/09/2010, 13:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Crear un array y luego extraer sus valores

Hola amigos, Tengo un formulario en donde tengo varios checkboxs y quiero guardar los valores de cada checkbox seleccionado por el usuario en un solo campo de mi tabla, para eso le puse el mismo nombre a los checkboxs terminando con [], con eso se crea el array, luego en la siguiente pagina hago el insert pero cuando checo mi tabla solo me guarda el ultimo valor del array??

Alguien sabe como puedo extraer todos los valores del array para luego insertalos en un campo de la tabla???

codigo:
pagina 1.html

<td>Type Material:</td>
<td>
<input type="checkbox" name="typemat[]" id="checkbox" value="Uncontaminated Soil"/>Uncontaminated Soil.
<input type="checkbox" name="typemat[]" id="checkbox" value="Brick"/>Brick.
<input type="checkbox" name="typemat[]" id="checkbox" value="Stone"/>Stone.
<input type="checkbox" name="typemat[]" id="checkbox" value="Reclaimed Asphalt Paviment" />Reclaimed Asphalt Paviment.
<input type="checkbox" name="typemat[]" id="checkbox" value="Other" />Other.
</td>

pagina2.php

foreach($typemat as $typemat){

mysql_query("update proyectos set typemat='$typemat' where numpro='$_REQUEST[numpro]'",$link);

}


Ayuda porfa....
  #2 (permalink)  
Antiguo 24/09/2010, 15:15
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Respuesta: Crear un array y luego extraer sus valores

tu problema es mas de PHP que de Mysql....
pero tratare de ayudarte...

pseudocodigo:
recibes los checkbox como $_POST en forma de arreglo
genera un ciclo para recorrer el arreglo y armar tu string SQL con cada dato
ejecuta tu query
cierra el ciclo

espero te de una idea
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #3 (permalink)  
Antiguo 24/09/2010, 15:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

Muchas gracias por ayudarme omar1977, pero la verdad creo q es eso lo q estoy haciendo pero al momento de guardar los valores solo se guarda el ultimo valor del array mira este es mi codigo php

//aqui recibo el array y lo paso a una variable

$typemat = $_POST['typemat'];

//luego creo un ciclo y recorro el array
foreach($typemat as $typemat){

mysql_query("update proyectos set typemat='$typemat' where numpro='$_REQUEST[numpro]'",$link);

}

lo q no entiendo es q si imprimo la variable donde paso el array se imprimen todos los valores q hay en el array, pero al guardar esa variable en mi tabla solo se guarda el ultimo valor q hay en el array
  #4 (permalink)  
Antiguo 27/09/2010, 14:56
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Respuesta: Crear un array y luego extraer sus valores

entonces deberia estar bien, claro que revisa esta linea estas duplicando la variable
foreach($typemat as $typemat){
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #5 (permalink)  
Antiguo 27/09/2010, 19:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear un array y luego extraer sus valores

Cita:
Hola amigos, Tengo un formulario en donde tengo varios checkboxs y quiero guardar los valores de cada checkbox seleccionado por el usuario en un solo campo de mi tabla, para eso le puse el mismo nombre a los checkboxs terminando con [], con eso se crea el array, luego en la siguiente pagina hago el insert pero cuando checo mi tabla solo me guarda el ultimo valor del array??
Vamos por partes:
1) MySQL no maneja arrays. Postgre si, pero no MySQL.
2) Desde la óptica de Bases de Datos, lo que quieres hacer es crear un campo multivaluado. Los campos multivaluados son ilegales en Bases de Datos. No se usan porque violan el paradigma en que se basan, no se deben usar porque implican defectos de normalización gravísimos, y si se intentan usar lo único que traen son dolores de cabeza porque no son funcionales en las consultas.
3) Si quieres guardar un conjunto de datos o parámetros que deben responder a un checkBox, lo que correspondería en Bases de Datos sería usar un campo BIT o BOOLEAN por cada check.
4) Si lo que quieres es guardar un objeto de programación que te permita reconstruir el estado de un objeto de formulario, lo que te conviene es serializar ese objeto y guardarlo, sea en un BLOB o en un TEXT como XML.

Toda otra solución la tienes que pedir en el Foro de PHP, porque se escapa a los alcances de este y aquí no se tratan temas de programación de aplicaciones sino SQL y Bases de Datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 28/09/2010, 09:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

Muchas gracias por ayudarme omar1977 y gracias a gnzsoloyo por tu buena explicacion creo q si me equivoque en pedir ayuda en esta seccion del foro pero la verdad no estaba muy seguro de q se trataba el problema exactamente (si php o mysql) , pero gracias a tu explicacion veo q si estoy mal al querer hacer eso q les explique, mas sin embargo tengo q buscar una opcion factible para lo que quiero hacer, y creo q la mejo opcion es crear un campo en la tabla para cada checkbox
  #7 (permalink)  
Antiguo 14/10/2010, 12:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

He podido lograr lo que queria solo era agregar implode antes:

foreach($_POST['typemat'] as $palabra)
$fkeywords[] = "".trim($palabra)."";
$resultado = implode ($fkeywords);

y a la hora de guardar los valores en mi tabla solo era poner $typemat='$resultado' y asi se guardan los valores del array en un solo campo de mi tabla


Gracias!!!!
  #8 (permalink)  
Antiguo 14/10/2010, 12:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear un array y luego extraer sus valores

Cita:
y a la hora de guardar los valores en mi tabla solo era poner $typemat='$resultado' y asi se guardan los valores del array en un solo campo de mi tabla
Como ya te dije, los campos multivaluados no existen en bases de datos. Implementar uno es meterse en problemas a futuro porque sólo expresan una total falta de normalización de la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/10/2010, 12:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

entonces la mejor opcion seria crear un campo para cada checkkbox?
  #10 (permalink)  
Antiguo 14/10/2010, 13:14
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

tengo otra duda estoy haciendo un proyecto para una compania de construccion.
el problema es al crear un reporte en donde aparece la informacion del trabajo q iso un contratista en especifico, ya q ese contratista pudo haber trabajado con diferentes camiones, debo en listar lo q iso cada camion y sumar un total.

ejemplo:
(son diferentes camiones pero son del mismo contratista)

C1=Contratista
C2=Truck#
C3= Total

C1 C2 C3
MI 301 $500
MI 301 $200
MI 303 $100
MI 303 $300
MI 305 $500

Asi es como genera el reporte hasta ahorita y lo q necesito es que me de un subtotal entre los camiones q son iguales.

ejemplo:

C1 C2 C3
MI 301 $500
MI 301 $200
subtotal =$700

MI 303 $100
MI 303 $300
subtotal=$400

MI 305 $500
subtotal=$500

para generar el reporte ago una consulta y despues un ciclo while pero no se como hacer para q dentro del ciclo while compare los registros entre si en este caso lo camiones y q cada ves q encuentre uno diferente me sume los q son iguales, me de un subtotal y despues siga comparando con el siguiete registro (camion)

haber si alguien me puede ayudar porfavor y espero haberme explicado bien
  #11 (permalink)  
Antiguo 14/10/2010, 13:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear un array y luego extraer sus valores

Cita:
Iniciado por troyer4 Ver Mensaje
entonces la mejor opcion seria crear un campo para cada checkkbox?
Si no habrá variaciones en el modelo de checkBox, es decir, si siempre tendrá la misma cantidad de checks, si.
Pero si en el futuro puede haber variaciones, es mejor crear una tabla adicional que almacene las opciones y su estado relacionadas con la otra tabla dependiente (users o lo que sea).
Incluso de esa forma sólo guardarías, por ejemplo, los que estuviesen ek check marcado y el resto los dejas en False.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 14/10/2010, 13:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear un array y luego extraer sus valores

Cita:
para generar el reporte ago una consulta y despues un ciclo while pero no se como hacer para q dentro del ciclo while compare los registros entre si en este caso lo camiones y q cada ves q encuentre uno diferente me sume los q son iguales, me de un subtotal y despues siga comparando con el siguiete registro (camion)
Esto se hace simplemente con un SUM() de la columna importe y un ROLLUP:
Código MySQL:
Ver original
  1. SELECT Contratista, Truck, SUM(importe) Total
  2. FROM tabla
Esto genera una linea con el subtotal por cada agrupamiento y una linea final con el total general.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 14/10/2010, 13:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

ok la cantidad de cheks no varia, entonces dejare como tenia en un principio, un campo para cada checkbox, y me olvido de lo demas.

Y a ver si me puedes echar una mano con el mensaje anterior porfa te lo agradeceria muchooo!!
  #14 (permalink)  
Antiguo 15/10/2010, 11:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 22
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Crear un array y luego extraer sus valores

Ya probre como me dijiste solo q estoy haciendo algo mal porq no me da el resultado q deberia, me muestra solo un registro por grupo y yo necesito q me muestre todos los registros q aiga en el grupo, aki te dejo mi codigo a ver si puedes ver q es lo q esta mal, o como lo debo aplicar:

Código PHP:
Ver original
  1. $registros=mysql_query("select * from invoicestemp where
  2. brodri='$_REQUEST[idtruck]' and date>='$_REQUEST[fechaini]'
  3. and date<='$_REQUEST[fechafin]' order by truck",$link);
  4. $num_registros=mysql_num_rows($registros);
  5. if ($num_registros==0)
  6.     {
  7.         echo "No Trucks Found";
  8.     }
  9.     else{
  10.            
  11.             while($fila=mysql_fetch_row($registros))
  12.             {
  13.                
  14.                 echo "
  15.                 <table width='100%' align='center'>
  16.                     <tr align='center'>
  17.                    <td width='8%'>".$fila[1]."</td>
  18.                    <td width='12%'>".$fila[3]."</td>
  19.                    <td width='5%'>".$fila[4]."</td>
  20.                    <td width='6%'>".$fila[5]."</td>
  21.                    <td width='12%'>".$fila[8]."</td>
  22.                    <td width='12%'>".$fila[9]."</td>
  23.                    <td width='6%'>".$fila[10]."</td>
  24.                    <td width='6%'>".$fila[11]."</td>
  25.                    <td width='6%'>";$amountpay=$fila[10]*$fila[11]; echo $amountpay."</td>
  26.                    <td width='6%'>";$percent=$percentage/100; $total=$percent*$amountpay; echo $total."</td>
  27.                     </tr>";
  28.             }
  29.         }
  30. ?>

con este codigo consigo q me muestre todos los camiones entre esas fechas, hice el group by with ROLLUP, pero como te digo solo me muestra un registros por grupo.

Etiquetas: extraer
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:32.