PHP - Array de un segundo valor en mismo input

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

Array de un segundo valor en mismo input

Publicado por fernando (17 intervenciones) el 01/06/2019 19:25:21
Buenas, os cuento tengo un formulario en php por método post dividido por partes con fieldset. Hay un tramo del formulario que son preguntas con opciones.
En el formulario obtengo esas opciones clicandas y las guardo en forma de array.
Me gustaría recoger un segundo value de esos inputs para guardarlo como otro array en el formulario. He intentado hacerlo pero no me funciona alguien sabría como solucionarlo? para recoger una segunda array de un segundo value en el mismo input?


Dejo solo la parte del formulario que tengo el problema
el segundo value seria el que he puesto data-time=""
los inputs son checkbox porque se pueden seleccionar varios.

Pd: hay muchas mas preguntas por eso lo recogo en array pero solo he dejado 1 para el ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form id="regiration_form" enctype="multipart/form-data" name="" method="post">
<fieldset>
	<div class="mg__20">Pregunta 1</div>
 
	<label for="asked7" class="OptionNext task_input">
		<input type="checkbox" name="asked[]" id="asked7" value="Menos de 120" data-time="30">
		<span>Menos de 120</span>
	</label>
	<label for="asked8" class="OptionNext task_input">
		<input class="task_input_rd" type="checkbox" name="asked[]" id="asked8" value="Entre 120 y 200" data-time="30">
		<span>Entre 120 y 200</span>
	</label>
 
	<label for="asked9" class="OptionNext task_input">
	<input class="task_input_rd" type="checkbox" name="asked[]" id="asked9" value="Más de 200" data-time="50">
	<span class="task_input_option">Más de 200</span>
	</label>
 
	<div class="MgBtmForm"></div>
	<button type="button">Continuar</button>
</fieldset>
 
</form>


Asi recojo el array del value normal, solo faltaría recoger el array del value 2 (que e nombrado data-time)

1
$askoptions=((isset($_POST['asked']) && is_array($_POST['asked'])) ? implode('|', $_POST['asked']) : '');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array de un segundo valor en mismo input

Publicado por Mauro (1036 intervenciones) el 02/06/2019 00:11:19
El problema que tienes aqui es que las propiedades que le agregues al input no viajaran hacia el servidor... lo que podrias hacer es agregarlas al value del input (via javascript) antes de hacer el envio
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: 49
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Array de un segundo valor en mismo input

Publicado por fernando (17 intervenciones) el 02/06/2019 12:00:05
y como se haría esta solución que me comentas? gracias de antemano
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
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array de un segundo valor en mismo input

Publicado por Mauro (1036 intervenciones) el 02/06/2019 15:51:18
Es un poco complicado, pero veamos... sería algo como:

1
2
3
4
5
<script type="text/javascript">
$('#regiration_form').submit( function() {
   $('#asked7').value += '/' + $('#asked7').attr('data-time')
});
</script>

No estoy 100% seguro de la sintaxis (no he podido probarla pero la idea está). Lo que harías sería iterar por todos los "asked" haciendo lo mismo para cada uno y del lado del php separas los valores por la "/" usando preg_split
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: 49
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Array de un segundo valor en mismo input

Publicado por fernando (17 intervenciones) el 02/06/2019 16:33:09
Muchas gracias por el aporte.
Pero con este código lo que devolvería es el value + el atributo juntos.
La cuestión esta en que el usuario puede seccionar varias opciones y no veo como enviar todas, lo que propones solo es para cada una por separado verdad
Seria algo como
Menos de 120/30/Entre 120 y 200/30

Debería extrar luego Menos de 120 y entre 120 y 200 para juntarlos
Y por otro lado extraer los 30 y juntarlos.

Ja que enviar el formulario necesitaría
una array de todas las opciones cicladas del value
Y por otro lado otro array diferente para todas las data-time seleccionada.


Porque con jquery no se podría capturar un arrary el data-time a través del clic y enviarlo al formulario?
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array de un segundo valor en mismo input

Publicado por Mauro (1036 intervenciones) el 03/06/2019 01:35:21
Pero con este código lo que devolvería es el value + el atributo juntos.

Exacto. No veo otra manera de lograrlo. Te queda después separarlo del lado de php.

Supongo que podrías crear una nueva serie de inputs desde javascript con nombres tipo "date-time[]" y luego usarlas como un array nuevo en el $_POST... honestamente, no veo una gran ventaja respecto de lo que te propongo pero se podriia hacer.

Algo que si te recomiendo es ponerle a los inputs asked una class en común, de esa forma podrás iterar más fácilmente:

1
2
3
$('.asked').each( function( e ) {
    e.value += '/' + e.attr('data-time');
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar