Foros del Web » Programando para Internet » PHP »

error al grabar lista de seleccion.

Estas en el tema de error al grabar lista de seleccion. en el foro de PHP en Foros del Web. Estoy desarrollando un sistema de control de accesos donde: Dispongo de 3 tablas. • Usuarios (id, usrlogin, nombre, apellidop, apellidom, email) • Aplicaciones (id, aplicación, ...
  #1 (permalink)  
Antiguo 30/10/2006, 07:54
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
recuperar lista marcada, para grabar.

Estoy desarrollando un sistema de control de accesos donde:
Dispongo de 3 tablas.
• Usuarios (id, usrlogin, nombre, apellidop, apellidom, email)
• Aplicaciones (id, aplicación, descripción, acceso)
• Accesos (id, usuario, aplicación)


Tengo trabajando correctamente el ingreso de las 2 primeras aplicaciones (usuarios y aplicaciones) y estoy en desarrollo de la 3º (acceso).

Pero me he encontrado con algunos problemas:
a) Agregar_acceso.php: Donde muestro todas las aplicaciones disponibles no asignadas al usuario, de la siguiente manera:

<?
$usuario=$_REQUEST['usua'];
include ("config_apli.php");
$sql_tabla="aplicaciones";
$sql="SELECT * FROM $sql_tabla where acceso='S'";
$res=mysql_query($sql,$db) or die(mysql_error());
?>
<table width=100 >
<tr bgcolor="#FFFFEA">
<td width="80%"colspan="4" align="center">APLICACIONES DISPONIBLES PARA USUARIO : <? echo $usuario; ?></td>
<td width="20%" bgcolor="#CCFFCC" align="center">
<input type="button" value="Atras" class="botones" onclick="javascript:history.go(-1);">
</td>
<tr>
<tr bgcolor="#00CCCC">
<td width="4%" align="center">ID</td>
<td width="15%" align="center">Aplicacion</td>
<td width="51%" align="center">Descripcion de Aplicacion</td>
<td width="10%" align="center">Control de Acceso</td>
<td width="20%" align="centerMarca para Agregar</td>
</tr>
<?
while($resu = mysql_fetch_array($res))
{
echo "<tr>
<td width=4% align=center>$resu[ID]</td>
<td width=15% align=left>$resu[aplicacion]</td>
<td width=51% align=left>$resu[descripcion]</td>
<td width=10% align=center>$resu[acceso]</td>
<td width=20% align=center><input type=checkbox name=agregar value=$resu[aplicacion]></td>
</tr>";
}
?>
<tr bgcolor="#FFFFEA">
<td width="80%"colspan="4" align="center">&nbsp;</td>
<td width="20%" bgcolor="#CCFFCC" align="center">
<input type="button" value="Agrega Seleccion" class="botones">
</td>
<tr>
</table>

Como te podrás dar cuenta genero una lista de todas las aplicaciones no asignadas al usuario donde muestro ID, aplicación, descripción y un checkbox donde se marca aquellas que quiero agregar para tener acceso.

Mi pregunta es la siguiente:
Una vez marcadas las aplicaciones (1….n) en el checkbox como las recupero una a una para grabar en tabla accesos.

Espero darme a entender cualquier consulta haganla saber… GRACIAS.
  #2 (permalink)  
Antiguo 30/10/2006, 08:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Como te podrás dar cuenta genero una lista de todas las aplicaciones no asignadas al usuario donde muestro ID, aplicación, descripción y un checkbox donde se marca aquellas que quiero agregar para tener acceso.
Esa afirmación te parecerá obvia para tí .. pero tu no muestras la relación de las tablas (la hemos de "suponer" por los nombres de los campos) ni que datos gestionas .. sobre todo esos "flag's" como "S" que aparece por ahí .. En definitiva, haría falta una explicación más "profunda" del lo que tienes para que nos hagamos una idea y minimizar las "suposiciones" que nos llevaran a error de entendimiento.

De todas formas .. no te preocupes en explicar eso ..

Cita:
Mi pregunta es la siguiente:
Una vez marcadas las aplicaciones (1….n) en el checkbox como las recupero una a una para grabar en tabla accesos.
Tu problema lo tienes principalmente en la forma de tratar tus checkbox .. así como lo haces:

Cita:
><input type=checkbox name=agregar value=$resu[aplicacion]></td>
</tr>";
NO recibiras nada más que el último valor (marques el que marques).

Sigue las instrucciones o explicación de la forma de trabajar con elementos de formulario en forma de "array" para que puedas recibir todos los checkbox que seleccionas:

http://www.forosdelweb.com/showthrea...710#post518710

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 30/10/2006, 13:39
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
error al grabar lista de seleccion.

Dispongo de la siguiente aplicacion que solo me despliega una lista de aplicaciones disponibles para grabarlas en la tabla accesos, para ello las marco con un checkbox y luego las recupero en script_graba.php, para grabarlas.
Pero me da error en la ultima linea de programas. Además no se si es correcto como realizo la grabación en script_graba.php

Código PHP:
<?
// Gestion de Accesos de Aplicaciones a Usuarios
//----------------------------------------------
$usuario=$_REQUEST['usua'];
include (
"config_apli.php");                                                  
$sql_tabla="aplicaciones";                                                
$sql="SELECT * FROM $sql_tabla where acceso='S'";   
$res=mysql_query($sql,$db) or die(mysql_error());
include(
"cabecera.php");
?>
<form action="script_graba.php?usua=<? echo $usuario?>" method="post">
<table width=100% border=1 cellspacing=0 cellpadding=4 bordercolor=#CCCCCC>
  <tr>
    <td width="80%" colspan="4" align="center"><b>APLICACIONES DISPONIBLES PARA USUARIO : <? echo $usuario?></b></td>
    <td width="20%" bgcolor="#CCFFCC" align="center">
    <input type="button" value="Atras" class="botones" onclick="javascript:history.go(-1);">
    </td>
  <tr> 
  <tr bgcolor="#00CCCC">
    <td width="4%" align="center"><b>ID</b></td>
    <td width="15%" align="center"><b>Aplicación</b></td>
    <td width="51%" align="center"><b>Descripcion de Aplicacion</b></td>
    <td width="10%" align="center"><b>Control de Acceso</b></td>
    <td width="20%" align="center">Marca para Agregar</td>
  </tr>
  <? 
   
while($resu mysql_fetch_array($res)) 
   {
      
$ide=$resu['ID'];
      
$apli=$resu['aplicacion'];
      
$desc=$resu['descripcion'];
      
$acces=$resu['acceso'];
      echo 
"<tr>
       <td width=4%>$ide</td>
       <td width=15%>$apli</td>
       <td width=51%>$desc</td>
       <td width=10%>$acces</td>
       <td width=20%>"
;?>
        <input type="checkbox" name="aplica[]" value="<? echo $apli?>"></td>
       <? echo"</tr>";
   }
  
?>
 <tr bgcolor="#FFFFEA">
    <td width="80%"colspan="4" align="center">&nbsp;</td>
    <td width="20%" bgcolor="#CCFFCC" align="center">
    <input type="submit" value="Agrega Seleccion" class="botones">
    </td>
  <tr> 
</table>
</form>
</body>
</html>

Script_graba.php--------------------
Código PHP:
<?
// Grabacion de aplicaciones seleccionadas
//----------------------------------------
include("config_apli.php");
$sql_tabla="accesos";
$usuario=$_REQUEST['usua'];
foreach (
$_POST['aplica'] as $ide)
{
   echo 
"Grabando aplicacion.....".$ide." para usuario...".$usuario."<br>";
   
$sql="INSERT INTO $sql_tabla VALUES(' ','$usuario','$ide');
   mysql_query($sql,$db) or die (mysql_error());
}
?>

Pueden ayudarme...... por favor.

Última edición por Cluster; 30/10/2006 a las 16:24
  #4 (permalink)  
Antiguo 30/10/2006, 16:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Uní ambos temas .. No puedes ir abriendo temas dejandote otros que se te hacían propuestas abiertos sin tan siquiera comentar como te fué .. eso no es muy bueno para el seguimiento de tu problema. Recuerdalo para otra vez.

Por otro lado .. reportes de problemas tan ambigüos como: "Pero me da error en la ultima linea de programas" no te ayudan nada a que veamos el real problema .. No obligues a "repasar código" .. el mensaje de error nos ayuda a ver el problema más directo .. al igual que a tí en algún futuro te ayudará si empiezas a interpretarlos.

También ayuda que uses el botón "PHP" cuando coloques código .. así quedará coloreado (tal cual lo ves ahora que te edité tu mensaje). Incluso así se suelen ver problemas (de "parser") facilmente!.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/10/2006, 16:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. lo que te decía ..

Ves como queda coloreado el código .. observas algo "extraño"?. Te fijas que:

Código PHP:
 $sql="INSERT INTO $sql_tabla VALUES(' ','$usuario','$ide'); 
   mysql_query($sql,$db) or die (mysql_error()); 

aparecen en "rojo" .. No debería ser así .. y eso es por qué por lo menos ahí te falta una " de cierre (comilla) .. Pero eso se verá más claro y se confirmará si colocas el mensaje de error .. .el cual te indicará cierta línea de tu código (y que tú tendras que indicarnos cual es .. por qué el código fuera de contexto no se aprecia "n°" de líneas ni aunque la contemos "a mano").

Código PHP:
 $sql="INSERT INTO $sql_tabla VALUES(' ','$usuario','$ide')"
   
mysql_query($sql,$db) or die (mysql_error()); 

Fijate ahora .. ¿Ves lo importante que es "colorear el código" ..? usas algún editor de código que te coloree el código? .. Aprender a saber que estás viendo ayuda mucho a identificar problemas como estos.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:09.