Foros del Web » Programando para Internet » PHP »

ayuda!

Estas en el tema de ayuda! en el foro de PHP en Foros del Web. en un programa php k estoi aciendo estoy enredado..... como hago que una funcion k tiene un consulta sql function revisa_acceso($perfil, $idsubmenu) { $sqlacc = ...
  #1 (permalink)  
Antiguo 29/10/2010, 07:47
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
ayuda!

en un programa php k estoi aciendo estoy enredado.....

como hago que una funcion k tiene un consulta sql

function revisa_acceso($perfil, $idsubmenu)
{
$sqlacc = "select * from web.acceso acc
where acc.perfil_id = $perfil
and acc.submenu_id = $idsubmenu";
return new DB_server($sqlacc);
}

esa función me busca si existen accesos.... si no existe un acceso k seleccione en un combolist ($perfil y $idsubmenu) entonces quiero hacerle un insert a dixa tabla accesos e insertar el nuevo acceso...

si existe el acceso seleccionado que aga un update.............

mi problema... es que noc como preguntar si el select k ace la funcion no encuentra nada entonce que me inserte lo k kiero......


se entiende? ayuda plz!!!!
__________________
- Ingeniero en Informática -
  #2 (permalink)  
Antiguo 29/10/2010, 07:56
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda!

Saludos


Deberias utilizar la funcion de php mysql_num_rows para saber que cantidad de registros te retorna el select y ya dependiendo del resultado haces el update o insert que necesitas
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 29/10/2010, 09:05
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: ayuda!

gracias funciona =)

ahora tengo otra duda dentro del mismo programa
un select el cual me trae todos los accesos que seleccione en un select anterior

cuando ago el insert este lo tengo dentro de un for para que me traiga todos los datos de cada una de los accesos.....

ahora el problema es que cuando selecciono en un checkbox el acceso k quiero insertar en la tabla, al estar dentro del for el programa se cae xk intenta insertar un acceso que ya existe

ejemplo: yo selecciono el ultimo acceso de la lista que es uno nuevo y al aceptar y proceder al insert, el programa intenta insertar el primer acceso, que ya existe y x ende se cae

....... se entendio?
ayuda de nuevo plz :P
__________________
- Ingeniero en Informática -
  #4 (permalink)  
Antiguo 29/10/2010, 09:12
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda!

Saludos

Si te entiendo, pero necesitarias que postees el codigo para saber como estas manejando los checkbox ya que lo mas probable es que ahi tengas el inconveniente.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 29/10/2010, 09:22
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: ayuda!

oka .....

Código PHP:
Ver original
  1. $mod = $_POST['mod'];   // llega lo que selecciono en el 1° select
  2. $perfil = $_POST['perfil'];
  3.  
  4. $aracc = $_POST['aracc'];  // todos los accesos
  5. $arper = $_POST['arper'];
  6. $armenu = $_POST['armenu'];
  7. $arsubm = $_POST['arsubm'];
  8.  
  9. $aracc2 = explode(';',$aracc);// array con los accesos sin ;
  10. $arper2 = explode(';',$arper);
  11. $armenu2 = explode(';',$armenu);
  12. $arsubm2 = explode(';',$arsubm);
  13.  
  14. for($i=0;$i < count($armenu2);$i++) // aca el for
  15. {  
  16.     $nper = $_POST[$arper2[$i]];  // trae
  17.     $menus = $armenu2[$i];  
  18.     $submenus = $arsubm2[$i];
  19.     if($i != 0 )
  20.     {  
  21.         if($nacc == 'on') // si el checkbox esta seleccionado
  22.         {
  23.             $sqlins="insert into web.acceso(perfil_id, modulo_id, menu_id, submenu_id, activo, permiso)
  24.                         values('$perfil', '$mod', '$menus', '$submenus', '1', '$nper')";
  25.             $regins = new DB_server($sqlins);
  26.         }
  27.         else // si esta sin seleccionar
  28.         {
  29.             $sqlins="insert into web.acceso(perfil_id, modulo_id, menu_id, submenu_id, activo, permiso)
  30.                     values('$perfil', '$mod', '$menus', '$submenus', '0', '$nper')";
  31.             $regins = new DB_server($sqlins);
  32.         }
  33.     }      
  34. }

los daots a insertar son solo id's osea puros numeros
espero me ayudes.....
__________________
- Ingeniero en Informática -

Última edición por xamilo; 29/10/2010 a las 09:29
  #6 (permalink)  
Antiguo 29/10/2010, 09:55
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda!

Saludos

Revisa este post Click Aqui
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #7 (permalink)  
Antiguo 29/10/2010, 13:49
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: ayuda!

estuve viendo el post y llego a que me ace el insert pero solo me ace uno de los 2 insert que deseo hacer

te dejo el codigo
Código PHP:
Ver original
  1. function revisa_acceso($perfil, $idsubmenu)
  2. {  
  3.     $sqlacc = "select  * from web.acceso acc
  4.             where acc.perfil_id = $perfil
  5.             and acc.submenu_id = $idsubmenu";
  6.     return  new DB_server($sqlacc);
  7. }
  8.  
  9. $mod = $_POST['mod'];
  10. $perfil = $_POST['perfil'];
  11. $idsubmenu = $_POST['idsubmenu'];
  12. $idmenu =$_POST['idmenu'];
  13.  
  14. $vacio = revisa_acceso($perfil, $idsubmenu);
  15.         if ($vacio->next_record() == "0")
  16.         {
  17.             if ($vacio->num_rows() == "0")
  18.             {
  19.                 for($i=0;$i < count($idmenu);$i++)
  20.                 {
  21.                 $sqlins="insert into web.acceso(perfil_id, modulo_id, menu_id, submenu_id, activo, permiso)
  22.                          values('$perfil', '$mod', '$idmenu', '$idsubmenu', '0', '1')";
  23.                 $regins = new DB_server($sqlins);  
  24.                 echo $sqlins;
  25.                 }
  26.             }
  27.         }
__________________
- Ingeniero en Informática -
  #8 (permalink)  
Antiguo 29/10/2010, 14:02
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda!

Saludos

Es por que al momento de realizar el 2 insert va insertar los mismos datos del primero por lo tanto te retornara un error de llave primaria agrega mysql_error() e imprime el query para que verifiques que datos se estan insertando

Código PHP:

  $sqlins
="insert into web.acceso(perfil_id, modulo_id, menu_id, submenu_id, activo, permiso)
                        values('$perfil', '$mod', '$idmenu', '$idsubmenu', '0', '1')"

__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #9 (permalink)  
Antiguo 29/10/2010, 14:19
Avatar de xamilo  
Fecha de Ingreso: febrero-2010
Mensajes: 120
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: ayuda!

ejempleficame porfa....

no entiendo muy bien :P
__________________
- Ingeniero en Informática -

Última edición por xamilo; 29/10/2010 a las 15:37

Etiquetas: Ninguno
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 01:54.