Foros del Web » Programando para Internet » PHP »

UsANdO BuCLeS eN FoRmULaRiO

Estas en el tema de UsANdO BuCLeS eN FoRmULaRiO en el foro de PHP en Foros del Web. Hola a todos los foreros! Stoy haciendo un formulario pero no le hallo la forma de cómo introducir un bucle para no estar escribiendo mucho ...
  #1 (permalink)  
Antiguo 05/03/2007, 13:55
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Mensaje UsANdO BuCLeS eN FoRmULaRiO

Hola a todos los foreros!

Stoy haciendo un formulario pero no le hallo la forma de cómo introducir un bucle para no estar escribiendo mucho código.

Les explico:
Tengo 3 tablas: cat_especialidad, cat_preguntas, cat_respuestas.

En dicho formulario deseo que se imprima todas las preguntas (del cat_preguntas) con sus 3 respuestas respectivamente (del cat_respuestas) y ke a su vez estas respuestas tenga su "input type" para elegir una de ellas y finalmente "votar".

El código que les mostraré a continuación hace el impreso en pantalla de las preguntas y respuestas de dicha especialidad, pero al momento de seleccionar una respuesta de cada pregunta lo hace una sola vez del total de preguntas ke son, o sea, de 3 preguntas con 9 respuestas solo me deja elegir una.

Código PHP:
<form action="voto-contabilidad.php" method="post">
<?
// Conectar con la base de datos
    
$connection mysql_connect ("localhost")
    or die (
"No se puede conectar al servidor");
    
mysql_select_db ("base22feb")
    or die (
"No se puede seleccionar BD");

    
//consulta pa obtenet la id de la especialidad
    
$query_id_esp mysql_query ("select * from cat_especialidad where especialidad='contabilidad'");
    
$r_id_esp mysql_fetch_array($query_id_esp);
    
$id_esp $r_id_esp[0]; 

    
//consulta pa obtener el id minimo de esa especialidad
    
$query_min_pregmysql_query ("select min(id_preg) from cat_preg where tipo_esp = $id_esp");
    
$r_min_preg mysql_fetch_array($query_min_preg);
    
$min_preg $r_min_preg[0];

    
//consulta pa obtener el id máximo de esa especialidad
    
$query_max_pregmysql_query ("select max(id_preg) from cat_preg where tipo_esp = $id_esp");
    
$r_max_preg mysql_fetch_array($query_max_preg);
    
$max_preg $r_max_preg[0];
            
    
     
//Aqui empiezo a hacer el bucle for pa que me imprima en pantalla todas las preguntas y respuestas de esa especialidad
     
for ($min_preg=$min_preg$min_preg<=$max_preg$min_preg++)
     {
       
$result1=mysql_query("select * from cat_preg where id_preg=$min_preg AND tipo_esp=$id_esp"$connection);

       
$result2=mysql_query("select * from cat_resp where no_preg=$min_preg AND tipo_esp=$id_esp");
       while (
$row=mysql_fetch_array($result1))
       {

        echo  
'<tr><td>'.$row ["id_preg"].'</td>';
        echo 
'<td>'.$row["preg"].'</td></tr>';

    while (
$row=mysql_fetch_array($result2))
    {
?>
    
           <td><input type=radio name=RespPreg1 value=a><?=$row['resp1'];?>
           </td>
           <tr>
           <td></td>
           <td><input type=radio name=RespPreg1 value=b><?=$row['resp2'];?></td></tr>
           <tr><td></td>
            <td><input type=radio name=RespPreg1 value=c><?=$row['resp3'];?></td></tr>
    
         <tr align=left>
         <td height=20 colspan=2>
    
<?    
           
}
      }
}
?>    
    <tr align=left>
      <td height=20 colspan=2>
        <div align="center">
          <INPUT TYPE="SUBMIT" NAME="enviar" VALUE="votar">
          </div>
    </FORM>

Al parecer es porque para todas las preguntas y respuestas toma el mismo "name" con valor a "RespPreg1" entonces mi duda es como meter otro bucle para que el valor del "name" incremente.por ejemplo ahora que se llama "RespPreg2" para la siguiente pregunta. Eso se puede?
Y si no, alguna idea o tips para que pueda hacerlo de mejor manera.

Espero me haya explicado bien.
GRacias de antemano .
Saludos!!
  #2 (permalink)  
Antiguo 06/03/2007, 19:58
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: UsANdO BuCLeS eN FoRmULaRiO

NAdie por ahi?? Alguien me puede echar la mano?
  #3 (permalink)  
Antiguo 06/03/2007, 20:27
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: UsANdO BuCLeS eN FoRmULaRiO

Pues lo único malo que veo en su codigo es esta expresion:

<input type=radio name=RespPreg1 value=a><?=$row['resp1'];?>

En primer lugar porque su valor es una constante, en segundo lugar, que hace un signo "=" en una etiqueta php? Eso solo vale en ASP.
  #4 (permalink)  
Antiguo 07/03/2007, 03:35
 
Fecha de Ingreso: febrero-2004
Mensajes: 15
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: UsANdO BuCLeS eN FoRmULaRiO

Hola, no le eche mucho ojo al código, por lo que veo estas utilizando bucles anidados eso esta perfecto, ahora deberías colocar un contador el cual se reinicie al hacer la última pregunta de cada respuesta de cada categoría. Dicho contador lo imprimes al final del name de cada radio input.

Código PHP:
<?php
.............
$cont 0;
while (
$row=mysql_fetch_array($result2)){
$cont += 1;
?>
    <td><input type=radio name=RespPreg<?=$cont?> value=a><?=$row['resp1'];?></td>
<tr>
    <td></td>
    <td><input type=radio name=RespPreg<?=$cont?> value=b><?=$row['resp2'];?></td>
</tr>
<tr>
    <td></td>
    <td><input type=radio name=RespPreg<?=$cont;?> value=c><?=$row['resp3'];?></td>
</tr>
<tr align=left>
    <td height=20 colspan=2>
<?php
if(ultima respuesta....)
    
$cont=0;
}
.........
?>
Te sugiero que organices el código para que te sea más legible, entiendo que al copiar y pegar en este editor posiblemente no tenga el mismo orden.
Espero que te sea de ayuda.

Ahora lo que no comprendo es por que dentro del mismo bucle colocas
$row['resp1']
$row['resp2']
$row['resp3']

Si estas imprimiendo las respuestas con el while, entonces deberías colocar así, ya que la cantidad de respuestas para que seleccionen los visitantes puede variar.

Código PHP:
<?php
.............
$cont 0;
while (
$row=mysql_fetch_array($result2)){
$cont += 1;
?>
<tr>
    <td><input type=radio name=RespPreg<?=$cont;?> value=a><?=$row['resp'];?></td>
</tr>
<?php
    
if(ultima respuesta....)
        
$cont=0;
}
.........
?>


Salu2

Última edición por stucca; 07/03/2007 a las 03:48
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 23:36.