Foros del Web » Programando para Internet » PHP »

Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

Estas en el tema de Modificar Array ([array] =>[{"1":"A"},{"2":"B"}] en el foro de PHP en Foros del Web. Hola amigos, Tengo una consulta que hace dias no he podido solucionar ya que se poco de javascrip, y es que rescato un array que ...
  #1 (permalink)  
Antiguo 07/02/2016, 16:59
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

Hola amigos,

Tengo una consulta que hace dias no he podido solucionar ya que se poco de javascrip, y es que rescato un array que no puedo desglosar en PHP porque no puedo sacar la primera columna.

Esto es lo que me llega :
Array ( [rows] => [{"DNI":"1111","checkinday":"2016-02-06","checkoutday":"08:00:00"},{"DNI":"weqwe","chec kinday":"2016-02-06","checkoutday":"08:00:00"},{"DNI":"333","checki nday":"2016-02-06","checkoutday":"08:00:00"}] )


como puedo hacerlo para insertar este tipo de array en php o si alguien tiene como sacar el DNI , checkinday y checkoutday.

este es un extracto del codigo con el que obtengo el resultado :

Código Javascript:
Ver original
  1. $('#selectAll').toggle(function(){
  2.         $('#contacts-table >tr input:checkbox').attr('checked','checked');
  3.         $('#hidden').removeAttr('checked');
  4.     },function(){
  5.         $('#contacts-table >tr input:checkbox').removeAttr('checked');      
  6.     });
  7.    
  8.     $('#submit_btn').click(function(){
  9.         var rows = [];
  10.         $('#contacts-table tr input[type=checkbox]:checked').map(function(i,v){
  11.             var tds = $(v).parents('tr').children('td');
  12.             rows.push({
  13.                 'pasaport': tds.eq(1).find('select').val(),
  14.                 'pasaport': tds.eq(2).text(),
  15.                 'checkinday': tds.eq(3).text(),
  16.                 'checkoutday': tds.eq(4).text()
  17.             });
  18.         });
  19.         rows = JSON.stringify(rows);
  20.         $.post("php/test.php", { 'rows': rows })
  21.    .done( function(data) {
  22.     alert("Data Loaded: " + data);
  23.     });
  24.     });
  25. });
  26. });

he tratado de modificarlo un monton de veces como no se mucho javascrips se me ha echo mas dificil de lo que pensaba.
  #2 (permalink)  
Antiguo 07/02/2016, 23:20
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

No entiendo claramente qué necesitas.

Hasta donde comprendo, estás enviando por post los datos de 'rows' a test.php y recibiendo el resultado (echo, print, die o lo que sea) de ese archivo como 'data'. Tiene sentido.

Primera consulta: ¿estás llamando a la librería de jQuery?

Por otra parte, ¿qué hay en el archivo PHP? ¿Cómo estás obteniendo los datos? Quizá el problema sea de PHP, por lo cual este tema iría en el foro de PHP: http://www.forosdelweb.com/f18/
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 07/02/2016, 23:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

Por lo que explicas, el problema está en el lado del servidor, es decir, en PHP, puesto que es con JavaScript que elaboras el array de objetos JSON que envías. Siendo así y como veo que lo que llega es un array con un solo índice que contiene al array de objetos JSON, tendrías que recorrer al array de objetos, es decir, al valor del índice "rows" y, en cada iteración, decodificar a cada objeto JSON para así poder acceder a sus atributos y valores.

Un ejemplo:
Código PHP:
Ver original
  1. $array = ['rows' => ['{"DNI":"1111","checkinday":"2016-02-06","checkoutday":"08:00:00"}','{"DNI":"weqwe","checkinday":"2016-02-06","checkoutday":"08:00:00"}','{"DNI":"333","checkinday":"2016-02-06","checkoutday":"08:00:00"}']];
  2.  
  3. foreach ($array['rows'] as $row){
  4.     foreach (json_decode($row) as $prop => $val){
  5.         echo "$prop: $val<br />";
  6.     }
  7.     echo '<br />';
  8. }

El resultado:
Código HTML:
Ver original
  1. DNI: 1111
  2. checkinday: 2016-02-06
  3. checkoutday: 08:00:00
  4.  
  5. DNI: weqwe
  6. checkinday: 2016-02-06
  7. checkoutday: 08:00:00
  8.  
  9. DNI: 333
  10. checkinday: 2016-02-06
  11. checkoutday: 08:00:00

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 07/02/2016, 23:53
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

Amigo muchas gracias por tu ayuda, claramente entendiste exactamente lo que quiero decir, como no se Javascript para mi es un poco complejo definir de la misma forma que PHP, no podia decoficar el objeto Json porque no sabia como y ahora tu me lo enseñaste.

voy a revisar ahora si puedo capturarlo en PHP como lo mencionas para insetar los datos.

Avisooo si me resulto :D ! gracias por sus respuestas.
  #5 (permalink)  
Antiguo 08/02/2016, 23:13
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

Aqui les dejo la respuesta amigos, despues de buscar entre tanto que hay por internet encontre la siguiente forma de hacerlo.

Código PHP:
Ver original
  1. <?php  
  2. include('conexion.php');
  3.  
  4.  $array = ['rows' => ['{"DNI":"1111","dia":"2016-02-06","hora":"08:00:00","signin":"firmain1","signout":"firmaout1"}','{"DNI":"weqwe","dia":"2016-02-06","hora":"08:00:00","signin":"firmain2","signout":"firmain2"}','{"DNI":"333","dia":"2016-02-06","hora":"08:00:00","signin":"firmain3","signout":"firmaout3"}']];
  5.  
  6. foreach ($array['rows'] as $row){
  7.     foreach ($datos=json_decode($row) as $prop =>$val){
  8.         $array = json_decode(json_encode($datos),true);
  9.          }
  10.              $sql[] = '("'.mysqli_real_escape_string($conexion,$array['DNI']).'","'.$array['dia'].''.$array['hora'].'","'.$array['signin'].'","'.$array['signout'].'")';
  11.         // echo $array['DNI'];
  12.      }
  13. $query='INSERT INTO checkper (DNI, dia,hora,signin,singout) VALUES '.implode(',',$sql).'';
  14.  
  15.  
  16. mysqli_close($conexion);
  17.  
  18. // Confirmamos que el registro ha sido insertado con exito  
  19. ?>

Queria hacerlo en menos lineas pero no pude con el $this porque me falto algo y no se que era :(... perooooo este funciona perfecto.

toma un array desde Javascript y lo transformo en array para despues insertarlos de a 1.

Saludos !
  #6 (permalink)  
Antiguo 09/02/2016, 10:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Modificar Array ([array] =>[{"1":"A"},{"2":"B"}]

No era necesario codificar y luego volver a decodificar al objeto si ya lo tenías decodificado.

Código PHP:
Ver original
  1. foreach ($array['rows'] as $row){
  2.     $datos = json_decode($row);
  3.     $sql[] = "'{$datos['DNI']}', '{$datos['dia']}', '{$datos['hora']}, '{$datos['signin']}', '{$datos['signout']}''";
  4. }
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: input, javascript, js, modificar
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 15:00.