Foros del Web » Programando para Internet » PHP »

Problema con paso de variables con nombre compuesto por concatenación

Estas en el tema de Problema con paso de variables con nombre compuesto por concatenación en el foro de PHP en Foros del Web. Hola a todos! Mi problema es que tengo un listado extraído de una tabla de la base de datos, y en ese listado aparece un ...
  #1 (permalink)  
Antiguo 06/06/2005, 11:45
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Problema con paso de variables con nombre compuesto por concatenación

Hola a todos!
Mi problema es que tengo un listado extraído de una tabla de la base de datos, y en ese listado aparece un campo editable y un checkbox por cada elemento del listado, estos datos tengo que capturarlos en otra página (Donde proceso los datos) y hacer lo que corresponda según se haya tildado el checkbox o no.
Para esto generé dentro del do - while que muestra los elementos de la tabla, un input con nombre concatenado con una variable $i que va incrementando por cada muestra de la base de datos.
Todo lo toma menos el nombre del checkbox en la pagina de procesos... y realmente no me doy cuenta pro qué, si alguien tiene ganas de mirar mi código a ver qué le encuentra se lo agradecería mucho.
El error es que no reconoce el checkbox, cuando trato de rescatar su valor por $_POST[$var] dice que es un indice indefinido.
Pero si pruebo esto con otro de los campos que llegan por POST, los muestra.
Ah! $var="nombre".$i;
Para que al poner $_POST[$var]; tome lo que tiene asociado var.
Bueno, acá adjunto el código:
Código PHP:
 <?php session_start();
require_once(
'../Connections/coninfo.php');
$i=1;?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../estiloprivado.css" rel="stylesheet" type="text/css">
</head>
<body class="bodyuser">
<table width="600" border="0" align="center" cellspacing="1">
<tr>
    <td>&nbsp;</td>
</tr>
<tr>
    <td class="tituser"><div align="center">Bienvenido <?php echo $_SESSION['nomus'];?> al panel de configuraci&oacute;n <br>
        </div></td>
</tr>
<tr>
    <td class="rowcontenido">Nivel de participaci&oacute;n: <?php echo $_SESSION['usuario'];?></td>
</tr>
<?php if( $_SESSION['usuario']=="Administracion"){
//Trae los datos de usuarios
mysql_select_db($database_coninfo$coninfo);
$Quser "SELECT idusuario, nombre, nivel FROM usuarios ORDER BY nombre ";
$User mysql_query($Quser$coninfo) or die(mysql_error());
$row_User mysql_fetch_assoc($User);
$totalRows_User mysql_num_rows($User);
?>
<tr>
    <td class="tituser"><div align="center">Usuarios registrados</div></td>
 
</tr>
<tr>
    <td class="rowcontenido"><form name="form2" method="post" action="niveles.php">
     <table width="100%" border="1" cellspacing="0" class="tablaborde">
<tr>
         <td width="44%"><div align="center">Nombre</div></td>
         <td width="38%"><div align="center">Nivel de participación</div></td>
         <td width="18%"><div align="center">Eliminar</div></td>
</tr>
         <?php do {?>
<tr>
<td><?php echo $row_User['nombre'];?>
     <input name="nombre<?php echo $i;?>" type="hidden" id="nombre<?php echo $i;?>"> <input name="Iusuario<?php echo $row_User['idusuario']; ?>" type="hidden" id="Iusuario<?php echo $row_User['idusuario']; ?>"></td>
<td>     <select name="nivel<?php echo $i;?>" id="nivel<?php echo $i;?>">
     <option value="Administracion" <?php if ($row_User['nivel']=="Administracion"){echo "Selected"; }?>>Administracion</option>
     <option value="Tecnico" <?php if ($row_User['nivel']=="Tecnico"){echo "Selected"; }?>>Tecnico</option>
     <option value="Consulta" <?php if ($row_User['nivel']=="Consulta"){echo "Selected"; }?>>Consulta</option>
     </select></td>
<td><div align="center">
     <input name="eli<?php echo $i;?>" type="checkbox" id="eli<?php echo $i;?>" value="Si">
     </div></td>
</tr>
     <?php
$i
++;
     }while (
$row_User=mysql_fetch_assoc($User));?>
        <tr>
         <td colspan="3"><div align="center">
            <input name="indice" type="hidden" id="indice" value="<?php echo $i?>">
            <input name="Submit3" type="submit" class="texto12" value="Guardar cambios">
         </div></td>
         </tr>
     </table>
    </form></td>
</tr>
<?php }?>
<tr>
    <td class="tituser"><div align="center">Edici&oacute;n de contrase&ntilde;a </div></td>
</tr>
<tr>
    <td><form name="form1" method="post" action="">
     <table width="100%" border="0" cellspacing="1">
        <tr class="rowcontenido">
         <td>Nueva Contrase&ntilde;a 
            <input name="textfield" type="password" class="texto12"></td>
         <td>Confirmar 
            <input name="textfield2" type="password" class="texto12"></td>
        </tr>
        <tr class="rowcontenido">
         <td colspan="2"><div align="center">
             <input name="Submit" type="submit" class="texto12" value="Guardar contraseña">
&nbsp;&nbsp;&nbsp;             
<input name="Submit2" type="submit" class="texto12" value="Salir del panel de usuario">
         </div></td>
         </tr>
     </table>
    </form></td>
</tr>
</table>
</body>
</html>
Y la página que procesa los datos, solo de la tabla que se encarga de actualizar o eliminar registros de usuarios (La parte de contraseña la estoy desarrollando pero no creo que presente mayores inconvenientes) es la siguiente:
Código PHP:
 <?php session_start();
require_once(
'../Connections/coninfo.php');
$tot=$_POST['indice'];
$i=1;
for (
$i=1;$i<$tot;$i++){
//Asignación del texto sql según corresponda
$elim="eli".$i;
if ((
$_POST[$elim])!="Si"){
$usa="Iusuario".$i;
$nive="nivel".$i;
$idusuario=($_POST[$usa]);
$nivel=($_POST[$nive]);
$SentSql sprintf("UPDATE usuarios SET nivel='$nivel' WHERE idusuario='$idusuario' ");
}
else{
$usa="Iusuario".$i;
$idusuario=($_POST[$usa]);
$SentSql=sprintf("DELETE FROM usuarios WHERE idusuario='$idusuario'");
}
//Ejecución del comando condicional 
mysql_select_db($database_coninfo$coninfo);
$Resultado mysql_query($SentSql$coninfo) or die(mysql_error());
}
//header("Location:verusua.php");
$uno="eli1";
echo 
$_POST[$uno];
?>
Si alguien tiene una idea de lo que estoy haciendo mal, por favor deme una mano!!!
Un saludo grande para todos, gracias de antemano por prestarme atención
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 06/06/2005, 12:21
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Al fin encontré la solución

Ok! ya lo tengo!!!
Después de darle muuuchas vueltas me di cuenta.
No tengo que preguntar que sea !="Si", por la sencilla razón que cuando un checkbox no es tildado directamente no pasa como valor por post.
Entonces, la pregunta del millón era if !isset $_POST[$elim]
y con eso queda perfectamente solucionado.
Muchas gracias a todos los que hayan tenido la intención de aclararme este tanto, espero por lo menos que esta duda le sirva a alguien en un futuro
Les mando un saludo grande a todos, disculpen que moleste con pavadas pero es que hacía horas que intentaba resolver sin éxito este problema
__________________
Why can't we not be sober?
www.partitorium.com.ar
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 05:19.