Foros del Web » Programando para Internet » PHP »

varios select con el mismo id

Estas en el tema de varios select con el mismo id en el foro de PHP en Foros del Web. Que tal forer@s! Ya tenia tiempo que no venia por aqui, bueno ahora con esta duda! Tengo una consulta que me muestra las solicitudes atendidas ...
  #1 (permalink)  
Antiguo 08/12/2010, 14:13
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
varios select con el mismo id

Que tal forer@s!

Ya tenia tiempo que no venia por aqui, bueno ahora con esta duda!

Tengo una consulta que me muestra las solicitudes atendidas de los usuarios, los usuarios tienen la opcion de calificar el servicio que se les proporciono, para esto junto a cada solicitud debe ir un select con valores: Excelente, Muy Bueno, Bueno, Regular, Malo, y un boton para "votar".

por ejemplo

Código:
solicitud1       select       boton
solicitud2       select       boton
solicitud3       select       boton
...
Con esto no hay problema, el rollo viene cuando trato de guardar el valor de cada voto de cada solicitud, ya que como el select y el boton se genera "dinamicamente" por cada registro q trae la consulta, el select siempre se llama igual y su id tambien es igual, entonces siempre se toma el valor del primero que envie, es decir, si la solicitud1 le puse Bueno y la solicitud2 le puse Malo...siempre se guardara bueno.

este es un pedazo del codigo de la consulta:

Código PHP:
<?PHP
$sql_consulta
="SELECT campos FROM tablas WHERE condiciones";
$sql_result=mysql_query($sql_consulta);
?>
<table align="center" >        
<caption><span class="succes">Solicitudes Atendidas</span></caption>
<tr>
               <!--encabezados-->
            <th scope="col">No. Solicitud</th>
            <th scope="col">Titulo</th>
            <th scope="col">Fecha de<br />Entrada</th>
            <th scope="col">Fecha de<br />Finalizacion</th>
            <th scope="col">Calificacion</th>
            ...
</tr>
<?PHP                         
    
while($row=mysql_fetch_array($sql_resultMYSQL_ASSOC)){
?>
        <tr>
            <!--valores-->
            <td><?PHP echo $no_sol ?></td>
            <td><?PHP echo $titulo ?></td>
            <td><?PHP echo $fecha_ent ?></td>
            <td><?PHP echo $fecha_div ?></td>
            <td><select id="calificacion" name="calificacion">
                              <option value='Excelente'>Excelente</option>
                  <option value='Muy Bueno'>Muy Bueno</option>
                  <option value='Bueno'>Bueno</option>
                  <option value='Regular'>Regular</option>
                  <option value='Malo'>Malo</option>
            </select>
            <input type="button" value="Calificar" onclick="calificar('calificacion','<?PHP echo $no_sol ?>','calificar')" />
           </td>
</tr>
<?PHP
}
?>
</table>
el boton llama una funcion AJAX que rescata el valor del select con un getElementById y lo envia a otra pagina para insertarlo a la BD.

Espero haberme explicado y me puedan ayudar...Gracias
  #2 (permalink)  
Antiguo 08/12/2010, 14:27
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: varios select con el mismo id

Prueba poniendo en los nombres [] al final asi creas un arreglo.
Es decir select id="calificacion" name="calificacion[]">

Entonces cuando mandas el formulario en el $_POST['calificacion'] vas a tener un arreglo con cada uno de los valores de los selects.
Proba usando eso y no cuentas.
  #3 (permalink)  
Antiguo 08/12/2010, 14:31
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: varios select con el mismo id

Cita:
Iniciado por areslepra Ver Mensaje
Entonces cuando mandas el formulario en el $_POST['calificacion'] vas a tener un arreglo con cada uno de los valores de los selects..
Hola gracias por tu respuesta...pero no uso form por lo tanto no me sirve poner un arreglo al name del select, ya que su valor lo tomo por AJAX mediante el id, aunque podria intentar cambiar el getElementeById por getElementsByName y tal vez si serviria lo de los arreglos pero se me hace muy engorroso...

ademas pensandolo bien no me sirve un array ya que solo tendria q poner un boton que recogeria los votos pero no los id de la solicitudes y como sabria que voto es para cual solicitud??

bueno segun yo es necesario botones para cada solicitud...

alguna idea??

Última edición por catpaw; 08/12/2010 a las 14:38
  #4 (permalink)  
Antiguo 08/12/2010, 14:43
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: varios select con el mismo id

Bueno, esto se soluciona de la siguiente manera, en el while para generar agregas un contador. Este contador lo utilizas para que cada select tenga un id distinto. De esta forma podes obtener cada uno de los elementos y saber cual es cual.
  #5 (permalink)  
Antiguo 09/12/2010, 01:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: varios select con el mismo id

Cita:
Iniciado por areslepra Ver Mensaje
Bueno, esto se soluciona de la siguiente manera, en el while para generar agregas un contador. Este contador lo utilizas para que cada select tenga un id distinto. De esta forma podes obtener cada uno de los elementos y saber cual es cual.
¿Cuál es el problema en utilizar el campo ID autogenerado en la base de datos? porque, @catpaw, tus datos están siendo ingresados con una id, verdad?.
  #6 (permalink)  
Antiguo 09/12/2010, 09:40
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: varios select con el mismo id

Hola metacortex, mira la tabla en la que guardo los datos tiene:

id_sol (id de la solicitud)
no_sol (numero de solicitud)
titulo (titulo descriptivo)
fecha_ent (fecha de entrada)
fecha_fin (fecha de finalizacion)
...(algunos otros)
calificacion (calificacion de los usuarios) --> cada solicitud por default se guarda con calificacion excelente, pero el usuario tiene la opcion de cambiar ese valor...

Mediante una consulta yo le muestro al usuario todas sus solicitudes y por cada una se genera un select con las opciones y un boton (esta en el code que puse en el primer post)

Lo que sucede es que si el usuario desea calificar, por ejemplo, sus 5 solicitudes, siempre se toma el valor de la primera para las otras 4, y dedusco que es por q el select q se genera (en este ejemplo) 5 veces tiene el mismo id y el boton que recoge los datos manda a llamar una funcion AJAX que recupera el valor del select con un getElementById...

Me decian que pusiera en el id un contador para que sean distintos los id's pero yo no se como recuperarlos de esa forma en AJAX??

Pero no se como hacer para que no se tome el valor del primer select para todos los demas?

Gracias
  #7 (permalink)  
Antiguo 09/12/2010, 10:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: varios select con el mismo id

Lo que bien dice metacortex es que utilices el ID del registro para identificar cada uno de los select's algo asi(suponiendo que el id es $no_sol sino deberias cambiarlo por el campo correspondiente):

Código HTML:
Ver original
  1. ...
  2. <select id="calificacion-<?php echo $no_sol; ?>" name="calificacion">
  3.     <option value='Excelente'>Excelente</option>
  4.     <option value='Muy Bueno'>Muy Bueno</option>
  5.     <option value='Bueno'>Bueno</option>
  6.     <option value='Regular'>Regular</option>
  7.     <option value='Malo'>Malo</option>
  8. <input type="button" value="Calificar" onclick="calificar('calificacion','<?php echo $no_sol ?>','calificar')" />
  9. ...

luego en la funcion javascript calificar ya tienes los datos necesarios para obtener el select.

Código Javascript:
Ver original
  1. function calificar(param, id, action)
  2. {
  3.     var select = document.getElementById(param + '-' + id)
  4.     .....
  5. }

Salu2.
  #8 (permalink)  
Antiguo 09/12/2010, 10:17
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: varios select con el mismo id

Gracias! masterpuppet

lo acabo de probar y va muy bien!!

Etiquetas: select
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 12:55.