Foros del Web » Programando para Internet » Javascript »

No se como capturar el id de un checkbox[]

Estas en el tema de No se como capturar el id de un checkbox[] en el foro de Javascript en Foros del Web. Hola a todos en el Foro: Tengo una consulta, xD quien no? Tengo un codigo generado por php que crea un listado de usuarios cada ...
  #1 (permalink)  
Antiguo 22/07/2008, 08:40
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 11 meses
Puntos: 0
No se como capturar el id de un checkbox[]

Hola a todos en el Foro:
Tengo una consulta, xD quien no? Tengo un codigo generado por php que crea un listado de usuarios cada uno con un checkbox de name campos['nombre_usuario']

El tema es que cuando quiero capturar los id para poder enviar los valores, no puedo tomar los valores del arreglo "campos".

Código PHP:
<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' >
<
tr align='left' bgcolor='#D5D5FF'>
<
td width='10%'></td>
<
td width='30%'>Usuario</td>
<
td width='60%'>Nombre</td>
</
tr>
<
p align 'center'>Seleccione al o a los Postulantes que desea que reciban este mensaje</p>0 al 50
<tr>
<
td width='10%'>
    <
input type='checkbox' id='campos[post]'>
</
td>
<
td width='30%'>post</td>
<
td width='60%'>asdasdf hgfchgv hgvghv</td>
</
tr>
<
tr>
<
td width='10%'>
    <
input type='checkbox' id='campos[german]'>
</
td>
<
td width='30%'>german</td>
<
td width='60%'>german</td>
</
tr>
<
tr>
<
td width='10%'>
    <
input type='checkbox' id='campos[asd]'>
</
td>
<
td width='30%'>asd</td>
<
td width='60%'>asd asd asd
</td>
</
tr>
</
table
Para capturar el id del input se supone que tendria que ser de esta manera:

var array = documents.getElementsById('campos');
var campos = array.value;

O no?

Aqui esta mi consulta, puest que al capturar los id del resto de los inputs no hay problema solo con este dichoso checkbox

Ojala me haya podido explicar.

Se agradece cualquier orientacion

Chauz
  #2 (permalink)  
Antiguo 22/07/2008, 10:02
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Respuesta: No se como capturar el id de un checkbox[]

hola,
quieres
hacer esto?
Código HTML:
onload = function(){

    var array = document.getElementsByTagName('input');
    var campos = [];
    for(var i=0;i<array.length;i++)
        if( /campos/.test(array[i].id) ) campos.push(array[i]);
        
    for(var i=0;i<campos.length; campos[i].checked = true ,i++ );

}
saludos
:]
__________________
Aerolíneas Alicia :D
  #3 (permalink)  
Antiguo 22/07/2008, 10:43
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: No se como capturar el id de un checkbox[]

Hola gracias por responder, el codigo que pusiste me orienta a como almacenar los campos input, pero lo que quiero es esto:

Son tres input que fueron generados de una consulta a una BD

estan insertos dentro de un form que debe ser enviado a un archivo php que toma el arreglo "campos" y almacena la info dependiendo del nombre de usuario que va entre corchetes ['esta info'].

El tema esta en que al querer tomar los valores del input chackbox envia un valor nulo, eso debe ser porque no se como capturar los valores.

Me explico? Ojala que si

Gracias
  #4 (permalink)  
Antiguo 22/07/2008, 11:15
 
Fecha de Ingreso: abril-2005
Mensajes: 1
Antigüedad: 19 años
Puntos: 0
Respuesta: No se como capturar el id de un checkbox[]

Hola:

Tú escribiste esto:

Para capturar el id del input se supone que tendria que ser de esta manera:

var array = documents.getElementsById('campos');
var campos = array.value;


en la primera línea de código te sobran dos "s" una en documents y otra en Elements, quítaselas y prueba.

Te debe quedar así.
var array = document.getElementById('campos');

Saludos.
  #5 (permalink)  
Antiguo 22/07/2008, 11:28
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Respuesta: No se como capturar el id de un checkbox[]

aaa,
ps para
capturar el
valor del input,
de hace falta un name
Código HTML:
<input type="checkbox" id="campos[post]" name="campos" value="german" /> 
y en PHP pones
Código PHP:
echo $_POST[campos]; 
o el method que sea

tiene que estar checked para
que salga el valor, en este caso en value
ponemos el nombre, y siguiendo lo que dice Yoki
si esa funcion no existe.

saludos
xd
__________________
Aerolíneas Alicia :D
  #6 (permalink)  
Antiguo 22/07/2008, 15:12
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: No se como capturar el id de un checkbox[]

Si entendí lo que quieren hacer y es solo mandar los checks seleccionados al php no le hace falta el js, marcopoloaz06 tiene razon con lo de el name pero te faltó los corchetes ( [ ] ) para que a la hora de el post los checks se interpreten como un array y pueda obtener todos los resultados seleccionados.

Quedaría algo asi:

Código:
<input type="checkbox" id="campos[post]" name="campos[]" value="german" />
al hacer POST:

Código:
foraech($_POST['campos'] as $value){
//cada iteracion del foreach te da un valor de los checks seleccionados
}
tambien te recuerdo que para hacer el submit necesitas un form..


Saludos y Suerte...
  #7 (permalink)  
Antiguo 28/07/2008, 23:09
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: No se como capturar el id de un checkbox[]

Primero que todo, mis disculpas por dejar botada esta consulta, lo que pasa es que me meti en otro proyecto orto que ya finalice, ahora sigo con este drama.

Gracias por sus respuestas Un_Tico y marcopoloaz06 ahora tratare de ex'plicar mejor mi duda.

lo que me indica Un_Tico es lo que estoy haciendo en el php para recorrer el arreglo campos.

Mi dificultad esta en que estoy enviando los datos por ajax con prototype y debajo de eso tengo otro codigo que es el que publico a continuacion
Cita:
<?php
include("conx/conectar.php");
include("newsletter/fckeditor/fckeditor.php");

$url = explode("?",$_SERVER['HTTP_REFERER']);
$redir=$url[0];

$link=Conectarse();
?>

<form name="form1" method="post" action="<?php print $redir. '?id=' .$id; ?>">
<table width="460" border="0" cellspacing="0" cellpadding="0" align = "center" >
<tr>
<td colspan = '2'>
<h2>Enviar Mensaje Personalizado</h2>
</td>
</tr>
<tr><td> Buscar Postulante por:</td>
<td>
<select name='buscar'>
<option selected value='ninguno'>(Ninguno)</option>
<option value='nombre'>Nombre</option>
<option value='apellido'>Apellido</option>
</select>
</td>
</tr>
<tr><td>Ingresar filtro de busqueda</td>
<td><input name='filtro' type='text' id='filtro' size='20' maxlength='15'></td>
</tr>
<tr>
<td></td>
<td><input name='enviar' type='submit' id='enviar' value='Buscar'></td>
</tr>
</table>
<br></br>
<hr>

<?php

$buscar = $_POST['buscar'];
$filtro = $_POST['filtro'];

if($buscar == 'nombre' || $buscar == 'apellido'){
echo "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' >";
echo "<tr align='left' bgcolor='#D5D5FF'>";
//echo "<td width='10%'></td>";
echo "<td width='50%'>Usuario Applicant</td>";
echo "<td width='50%'>Nombre</td>";
echo "</tr>";

if($buscar == 'nombre'){
$sql = mysql_query("select * from postulante where nombre ='".$filtro."'", $link);
/*$total=mysql_num_rows($sql);
$paginas=intval($total/50)+1;

if ($_GET["p"]==NULL)
$_GET["p"]=1;

$inf=($_GET["p"]*50)-50;
echo "<p align = 'center'>Seleccione al o a los Postulantes que desea que reciban este mensaje</p>";
echo $inf." al ".($inf+50);

$sql=mysql_query("select * from postulante LIMIT ".$inf.",50",$link);*/
}

if($buscar == 'apellido'){
$sql=mysql_query("select * from postulante where paterno like '".$filtro."%' or materno like '".$filtro."%'",$link);

/*$total=mysql_num_rows($sql);
$paginas=intval($total/50)+1;

if ($_GET["p"]==NULL)
$_GET["p"]=1;

$inf=($_GET["p"]*50)-50;
echo $inf." al ".($inf+50);

$sql=mysql_query("select * from postulante LIMIT ".$inf.",50",$link);*/
}

while($row = mysql_fetch_array($sql)){
echo "<tr>";
//echo "<td width='10%'><input type='checkbox' name='campos[".$row['usuario']."]'></td>";
echo "<td width='50%'>".$row["usuario"]."</td>";
echo "<td width='50%'>".$row["nombre"]." ".$row["paterno"]." ".$row["materno"]."</td>";
echo "</tr>";
$usuario = $row['usuario'];
}
echo "</table>";
}


$sql = "select * from datos_postulante where usuario = '".$usuario."'";
$respuesta = mysql_query($sql, $link);

while($row = mysql_fetch_array($respuesta)){
$post_asunto = $row['proceso_1_asunto'];
$post_info = $row['proceso_1'];
$post_fecha = $row['proceso_fecha_1'];
$spon_asunto = $row['proceso_2_asunto'];
$spon_info = $row['proceso_2'];
$spon_fecha = $row['proceso_fecha_2'];
$visa_asunto = $row['proceso_3_asunto'];
$visa_info = $row['proceso_3'];
$visa_fecha = $row['proceso_fecha_3'];
$emba_asunto = $row['proceso_4_asunto'];
$emba_info = $row['proceso_4'];
$emba_fecha = $row['proceso_fecha_4'];
$aere_asunto = $row['proceso_5_asunto'];
$aere_info = $row['proceso_5'];
$aere_fecha = $row['proceso_fecha_5'];
$aere_destino = $row['destino'];
$fina_asunto = $row['proceso_6_asunto'];
$fina_info = $row['proceso_6'];
$fina_fecha = $row['proceso_fecha_6'];
$deta_pagos = $row['det_pagos'];
$dato_depositos = $row['datos_dep'];
$otros = $row['otros'];
}

?>
El codigo en negrita es el que necesito enviar, me genera un litado de usuarios cada uno con su checkbox correspondiente, la idea es que pueda enviar una informacion a solo los usuarios que yo selecciono, pero como decia antes los estoy enviando por ajax y debo capturar el id del input para poder hacerlo, esto ultimo es lo que no consigo, me envia solo un campo vacio no el arreglo con los usuarios que selecciono.

Espero poderme explicar mejor

Agradecido del tiempo dedicado para orientarme.

Chauz
  #8 (permalink)  
Antiguo 29/07/2008, 08:35
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: No se como capturar el id de un checkbox[]

Me Gustaría ver el código en prototype...
  #9 (permalink)  
Antiguo 29/07/2008, 10:46
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: No se como capturar el id de un checkbox[]

Hola Un_Tico aca esta el codigo completo que utilizo

Formulario para enviar la informacion
Código PHP:
<?php
include("conx/conectar.php");
include(
"newsletter/fckeditor/fckeditor.php");

$url explode("?",$_SERVER['HTTP_REFERER']);
$redir=$url[0];

$link=Conectarse();
?>

<form name="form1" method="post" action="<?php print $redir'?id=' .$id?>">
<table width="460" border="0" cellspacing="0" cellpadding="0" align = "center" >
    <tr>
        <td colspan = '2'>
            <h2>Enviar Mensaje Personalizado</h2> 
        </td>
    </tr>
    <tr><td> Buscar Postulante por:</td>
        <td>
            <select name='buscar'>
                <option selected value='ninguno'>(Ninguno)</option>
                <option value='nombre'>Nombre</option>
                <option value='apellido'>Apellido</option>
            </select>
        </td>
    </tr>
    <tr><td>Ingresar filtro de busqueda</td>
        <td><input name='filtro' type='text' id='filtro' size='20' maxlength='15'></td>
    </tr>
    <tr>
        <td></td>
        <td><input name='enviar' type='submit' id='enviar' value='Buscar'></td>
    </tr>    
</table>
<br></br>
<hr>

<?php

    $buscar 
$_POST['buscar'];
    
$filtro $_POST['filtro'];

    if(
$buscar == 'nombre' || $buscar == 'apellido'){
            echo 
"<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' >";
            echo 
"<tr align='left' bgcolor='#D5D5FF'>";
            
//echo "<td width='10%'></td>";
            
echo "<td width='50%'>Usuario Applicant</td>";
            echo 
"<td width='50%'>Nombre</td>";
            echo 
"</tr>";

        if(
$buscar == 'nombre'){
            
$sql mysql_query("select * from postulante where nombre ='".$filtro."'"$link);
            
/*$total=mysql_num_rows($sql);
            $paginas=intval($total/50)+1;
                
            if ($_GET["p"]==NULL)
                $_GET["p"]=1;
                    
            $inf=($_GET["p"]*50)-50;
            echo "<p align = 'center'>Seleccione al o a los Postulantes que desea que reciban este mensaje</p>";
            echo $inf." al ".($inf+50);

            $sql=mysql_query("select * from postulante LIMIT ".$inf.",50",$link);*/
        
}

        if(
$buscar == 'apellido'){
            
$sql=mysql_query("select * from postulante where paterno like '".$filtro."%' or materno like '".$filtro."%'",$link);

            
/*$total=mysql_num_rows($sql);
            $paginas=intval($total/50)+1;
                
            if ($_GET["p"]==NULL)
                $_GET["p"]=1;
                    
            $inf=($_GET["p"]*50)-50;
            echo $inf." al ".($inf+50);

            $sql=mysql_query("select * from postulante LIMIT ".$inf.",50",$link);*/
        
}

        while(
$row mysql_fetch_array($sql)){
                echo 
"<tr>";
                [
B]//echo "<td width='10%'><input type='checkbox' name='campos[".$row['usuario']."]'></td>";[/B]
                
echo "<td width='50%'>".$row["usuario"]."</td>";
                echo 
"<td width='50%'>".$row["nombre"]." ".$row["paterno"]." ".$row["materno"]."</td>";
                echo 
"</tr>";
                
$usuario $row['usuario'];
        }
        echo 
"</table>";
    }

    
$sql "select * from datos_postulante where usuario = '".$usuario."'";
    
$respuesta mysql_query($sql$link);

    while(
$row mysql_fetch_array($respuesta)){
        
$post_asunto $row['proceso_1_asunto'];
        
$post_info $row['proceso_1'];
        
$post_fecha $row['proceso_fecha_1'];
        
$spon_asunto $row['proceso_2_asunto'];
        
$spon_info $row['proceso_2'];
        
$spon_fecha $row['proceso_fecha_2'];
        
$visa_asunto $row['proceso_3_asunto'];
        
$visa_info $row['proceso_3'];
        
$visa_fecha $row['proceso_fecha_3'];
        
$emba_asunto $row['proceso_4_asunto'];
        
$emba_info $row['proceso_4'];
        
$emba_fecha $row['proceso_fecha_4'];
        
$aere_asunto $row['proceso_5_asunto'];
        
$aere_info $row['proceso_5'];
        
$aere_fecha $row['proceso_fecha_5'];
        
$aere_destino $row['destino'];
        
$fina_asunto $row['proceso_6_asunto'];
        
$fina_info $row['proceso_6'];
        
$fina_fecha $row['proceso_fecha_6'];
        
$deta_pagos $row['det_pagos'];
        
$dato_depositos $row['datos_dep'];
        
$otros $row['otros'];
    }

?>
<br />
<hr />
<input type="checkbox" name="otros" id = "otros" onClick="MosOcu('otros')"> <b>Publicar otra Informacion.</b><br />
<div id = 'capaotros'>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td><b>Otros Datos:</b></td>
    <td><textarea name='otros_info' id='otros_info' cols='65' rows='6'><?php echo $otros?></textarea></td>
    </tr>
    <tr>
    <td>
    </td>
    <td>    
    <input  type="button" id = "btn_ing_otros" value="Ingresar" onclick="valida_ingresa_otros()" />
    </td>
    </tr>
    </table>
    <input type = "hidden" id = "usuario" value = "<?php echo $usuario?>"/>
    <input type = "hidden" id = "grupo" value = "<?php echo $_GET['grp']; ?>"/>
</form>
</div>

Este es el codigo protoype para enviar otro tipo de info (solo publicare un modulo los otros son iguales, solo capturan distinta info)
Código:
/***********************************************************************************************
ENVIAR OPTRO TIPO DE INFORMACION
***********************************************************************************************/
valida_ingresa_otros = function() {	
	var error = 0;
	if($('otros_info').value == 0){
		alert("Debe completar Otros Datos");
		error++;
	}
	if(error == 0)ingresa_otros(); 
}

ingresa_otros = function() {
	var parametros = 'otros_info=' + $('otros_info').value;
	var pars = parametros + '&grupo=' + $('grupo').value + '&usuario=' + $('usuario').value;
	alert(pars);
	new Ajax.Request("informacion/ing_datos_otros.php", {method: 'post', parameters: pars, onComplete: ingresa_otros_respuesta});
}

ingresa_otros_respuesta = function(resp) {
	eval(resp.responseText);
	if(msg.error == 0){
		alert(msg.txt);
	}
	else alert(msg.txt);
}
Aca esta comentado el codigo parta enviar el input porque no supe como hacerlo asi que opte por otro metodo pero tampoco me resulta.

Ojala entiendas lo que hice

Chauz
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:26.