Encontré el problema, pero necesito ayuda para solucionarlo
Hola a todos, con respecto a mi problema lo indico.
Poseo una pantalla de selección de preguntas, las cuales se presentan en 4 grupos, estas son tomadas de la misma tabla y poseen un código de pregunta idenpendiente pero poseen un campo Grupo el cual determina a cual pertenece.
Poseo un checkbox dinámico para cada grupo de preguntas el primero se llama ChkPreg1[] y así hasta el ChkPre[], cada uno de ellos con un value de
<code>ChkPreg1[] = <php>
ChkPreg2[] = <php>
ChkPreg3[] = <php>
ChkPreg4[] = <php></code>
Estos check se pasan a la segunda página, solo aquellos chequeados por el usuario, en la segunda página los recibo, les hago el implode y se los paso a la consulta de cada uno para generar nuevamente 4 grupos, identicos a los de la primera página, solo que akí presentaré las subpreguntas o preguntas hijas para realizar una nueva selección. De esta manera les hago la recepción, implode y paso a la consulta:
<code>$aLista=array_keys($_POST['ChkPreg1']);
$query_RecPreg1 = "SELECT * FROM preguntas WHERE PregMaster IN (".implode(',', $aLista).")";</code>
Modificando para cada consulta el # de RecPreg y de ChkPreg, de igual manera llevando $aLista para 1, hasta $dLista para 4.
Bueno total que el sistema me retorna para cada consulta las mismas preguntas, sencillo, recorri los ChkPreg uno a uno y me retornan a través del $value el valor del código de la pregunta pero con el $key me retornan los mismo, es decir si el primer check es de 4 preguntas seleccionadas, el segundo de 3, el tercero de 4 y el cuarto de 3, entonces siempre será de 1 a 4 el manejo con lo cual se me estan retornando las mismas preguntas siempre.
1 - La ayuda que pido o colaboración, es como pasar esos checkboxes como parametros pero q en la consulta no tome el id de cada checkbox o su $key...sino el value que contiene ya q es el q me determina el código real de la pregunta.
2 - De igual manera observo q si selecciono 4 checkbox del primer grupo, en la consulta solo me procesa 3, es decir me toma -1 checkbox o valor en el proceso, esto como puedo corregirlo, creo q esto ocurre en el implode.
Gracias a todos por esta colaboración que me puedan prestar
jhorbam Plus
Nodo271 muchas gracias
nodo271
Hola de nuevo,
acabo de responderte al otro mensaje y ahora me doy cuenta de que ya lo solucionaste, asi que espero ayudarte con esto (creo que todavia no lo has solucionado).
Creo saber el problema y hay posibles soluciones mas o menos elegantes.
Pa que lo veas, la variable '$_POST['ChkPreg1']' vale esto tras enviar el formulario:
<code>$_POST['ChkPreg1']=array(0=>'el valor del código de la pregunta a')</code>
El problema es que tal como esta el codigo a $aLista siempre le asigna un '0' la funcion array_keys ya que esta devuelve la 'key' del array que es '0' y la consulta SQL seria para los cuatro checkboxes:
<code>SELECT * FROM preguntas WHERE PregMaster IN (0)</code>
La solucion pasa por no usar la funciont 'array_keys' y asignarle directamente el valor del primer elemento del array:
<code>$aLista=$_POST['ChkPreg1'][0]</code>
De tal manera que el modo rapido de solucionarlo es asi:
<code>
$aLista=$_POST['ChkPreg1'][0];
$query_RecPreg1 = "SELECT * FROM preguntas WHERE PregMaster=".$aLista;
$bLista=$_POST['ChkPreg2'][0];
$query_RecPreg2 = "SELECT * FROM preguntas WHERE PregMaster=".$bLista;
$cLista=$_POST['ChkPreg3'][0];
$query_RecPreg3 = "SELECT * FROM preguntas WHERE PregMaster=".$cLista;
$dLista=$_POST['ChkPreg4'][0];
$query_RecPreg4 = "SELECT * FROM preguntas WHERE PregMaster=".$dLista;
</code>
Saludos.