Foros del Web » Programando para Internet » PHP »

Encontré el problema, necesito ayuda para solucionarlo

Estas en el tema de Encontré el problema, necesito ayuda para solucionarlo en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/11/2007, 11:46
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 22 años, 5 meses
Puntos: 0
De acuerdo Encontré el problema, 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

ChkPreg1[] = <?php echo $row_RecPreg1['codigo']; ?>
ChkPreg2[] = <?php echo $row_RecPreg2['codigo']; ?>
ChkPreg3[] = <?php echo $row_RecPreg3['codigo']; ?>
ChkPreg4[] = <?php echo $row_RecPreg4['codigo']; ?>

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:

$aLista=array_keys($_POST['ChkPreg1']);
$query_RecPreg1 = "SELECT * FROM preguntas WHERE PregMaster IN (".implode(',', $aLista).")";

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
__________________
Buscando el camino...
  #2 (permalink)  
Antiguo 24/11/2007, 13:14
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Encontré el problema, necesito ayuda para solucionarlo

Para el punto 1 te diría que no uses array_keys sino
Código PHP:
$aLista$_POST['ChkPreg1']; 
En el punto 2, no entiendo... marcás 4 checkbox y te llegan 3 nada más? estás seguro de eso?
  #3 (permalink)  
Antiguo 24/11/2007, 16:31
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Encontré el problema, necesito ayuda para solucionarlo

Hola Seppo...si es decir...si marco 4 checkboxes q serían 4 preguntas seleccionadas, en el momento de recorrer el array e imprimirlas las muestra, pero al hacer el implode del array y pasarlo a la consutla SQL, no sé en cual de las dos falla pero solo me muestra 3 preguntas..las 3 primeras, la 4ta se pierde.
__________________
Buscando el camino...
  #4 (permalink)  
Antiguo 24/11/2007, 17:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Encontré el problema, necesito ayuda para solucionarlo

Deberías de publicar el código completo para poder verificar en donde tienes el error.

Saludos.
  #5 (permalink)  
Antiguo 24/11/2007, 18:48
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Encontré el problema, necesito ayuda para solucionarlo

Este es el código que utilizó, si hago lo que me indico Seppo, solo funciona el primer grupo, los demás no realizan nada. Este es el código original. Me pregunto ahora, si puedo de alguna manera pasar cierta información de un arreglo a otro, y de que manera, ya q veo como una solución crear un nuevo arreglo al cual le pase el $value del arreglo que tengo...aunque sería lo mismo q hacerlo como seppo indico, solo que no sé x q para los demas grupos no funciono, incluso inhabilitando la ejecución del primer grupo.


Código PHP:
echo 'Grupo de Preguntas 1';
if (
is_array($_POST['ChkPreg1'])) { 
  while(list(
$key,$value) = each($_POST['ChkPreg1'])) 
   {
     echo 
$value.'='.$key.' -> '.$pregunta1[$key].' - Indicador-> '.$indicador1[$key].' - Criterio-> '.$codcriterio1[$key]; 
 }
}
$aLista=array_keys($_POST['ChkPreg1']); 
//$aLista=$_POST['ChkPreg1'];
$query_RecPreg1 "SELECT * FROM preguntas WHERE PregMaster IN (".implode(','$aLista).")";
$RecPreg1 mysql_query($query_RecPreg1$Audito) or die(mysql_error()); while($row=mysql_fetch_assoc($RecPreg1))
 {
  echo 
'COD. -> '.$row['codigo'].' - PREGMASTER -> '.$row['PregMaster'].'
'
.$row['detalle'].;
 }

echo 
'Grupo de Preguntas 2';
if (
is_array($_POST['ChkPreg2']))
{
 while(list(
$key,$value) = each($_POST['ChkPreg2']))
 {
  echo 
$value.'='.$key.' -> '.$pregunta2[$key].' - Indicador-> '.$indicador2[$key].' - Criterio-> '.$codcriterio2[$key];
  }
}
$bLista=array_keys($_POST['ChkPreg2']);
if(!empty(
$_POST['ChkPreg2']))
 {
 
$query_RecPreg2 "SELECT * FROM preguntas WHERE PregMaster IN (".implode(','$bLista).")";
 
$RecPreg2 mysql_query($query_RecPreg2$Audito) or die(mysql_error());  while($row=mysql_fetch_assoc($RecPreg2))
  {
   echo 
'COD. -> '.$row['codigo'].' - PREGMASTER -> '.$row['PregMaster'].'
'
.$row['detalle'];
 }
}

echo 
'Grupo de Preguntas 3';
if (
is_array($_POST['ChkPreg3']))
{
 while(list(
$key,$value) = each($_POST['ChkPreg3']))
 {
  echo 
$value.'='.$key.' -> '.$pregunta3[$key].' - Indicador-> '.$indicador3[$key].' - Criterio-> '.$codcriterio3[$key];
  }

$cListaarray_keys($_POST['ChkPreg3']); 
$query_RecPreg3 "SELECT * FROM preguntas WHERE PregMaster IN (".implode(','$cLista).")"
$RecPreg3 mysql_query($query_RecPreg3$Audito) or die(mysql_error()); while($row=mysql_fetch_assoc($RecPreg3))
{
 echo 
'COD. -> '.$row['codigo'].' - PREGMASTER -> '.$row['PregMaster'].'
'
.$row['detalle'];
}

echo 
'Grupo de Preguntas 4';
if (
is_array($_POST['ChkPreg4']))
 {
  while(list(
$key,$value) = each($_POST['ChkPreg4'])) 
  {
   echo 
$value.'='.$key.' -> '.$pregunta4[$key].' - Indicador-> '.$indicador4[$key].' - Criterio-> '.$codcriterio4[$key];
  }
}

$dLista=array_keys($_POST['ChkPreg4']); 
$query_RecPreg4 "SELECT * FROM preguntas WHERE PregMaster IN (".implode(','$dLista).")"
$RecPreg4 mysql_query($query_RecPreg4$Audito) or die(mysql_error()); while($row=mysql_fetch_assoc($RecPreg4))
 {
 echo 
'COD. -> '.$row['codigo'].' - PREGMASTER -> '.$row['PregMaster'].'
'
.$row['detalle'];

__________________
Buscando el camino...

Última edición por Jhorb; 25/11/2007 a las 07:41
  #6 (permalink)  
Antiguo 25/11/2007, 07:50
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Encontré el problema, necesito ayuda para solucionarlo

Ok...corregí la presentación no sabí como pegar el código y q se viera así de ordenado...

Como indique antes yo utilizo la orden
Código PHP:
 $aLista=array_keys($_POST['ChkPreg1']); 
Lo cual hace que mi arreglo se convierta en un arreglo de index o keys...y no del valor almacenado (el códido de la pregunta en la BD).

Seppo me indica que use lo siguiente:
Código PHP:
$aLista=$_POST['ChkPreg1']; 
Pero de manera extraña, si lo pongo en la secciones por debajo de la 1, no funcionan, la impresión no muestra nada.

Q puede estar pasando akí...gracias
__________________
Buscando el camino...
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 21:19.