Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Inserire dati tabella leggendo parte di altra tabella con php

    Salve a tutti,
    avevo postato questo richiesta di aiuto in Database, pero nessuno ha risposto. :-)


    Salve a tutti.
    Scusate la mia ignoranza, pero ho la necessitá di inserire dati in una tabella dopo un inserimento in un'altra tabella.
    Mi spiego meglio:

    Sto cercado di crere un sistema di accesso a un sito web con regole specifiche per ogni usario,
    perció ho 3 tabelle, una tabella module, una role e una role_rights.

    Nella tabella module ho i dati dei menu e delle pagine, nella role i tipi di utente e nella role_rights quello che possono fare gli utenti.

    CREATE TABLE `module` (
    `mod_modulegroupcode` varchar(25) NOT NULL,
    `mod_modulegroupname` varchar(50) NOT NULL,
    `mod_modulecode` varchar(25) NOT NULL,
    `mod_modulename` varchar(50) NOT NULL,
    `mod_modulegrouporder` int(3) NOT NULL,
    `mod_moduleorder` int(3) NOT NULL,
    `mod_modulepagename` varchar(255) NOT NULL,
    `mod_type` enum('add','edit','normal') NOT NULL DEFAULT 'normal'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    INSERT INTO `module` (`mod_modulegroupcode`, `mod_modulegroupname`, `mod_modulecode`, `mod_modulename`, `mod_modulegrouporder`, `mod_moduleorder`, `mod_modulepagename`, `mod_type`) VALUES
    ('SITE', 'Site', 'HOME', 'Home', 1, 0, home.php', 'normal');


    CREATE TABLE `role` (
    `role_rolecode` varchar(50) NOT NULL,
    `role_rolename` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    INSERT INTO `role` (`role_rolecode`, `role_rolename`) VALUES
    ('ADMIN', 'Administrator'),
    ('UTENTE SEMPLICE', 'Utente Semplice'),
    ('SUPERADMIN', 'Super Admin');



    CREATE TABLE `role_rights` (
    `rr_rolecode` varchar(50) NOT NULL,
    `rr_modulecode` varchar(25) NOT NULL,
    `rr_create` enum('yes','no') NOT NULL DEFAULT 'no',
    `rr_edit` enum('yes','no') NOT NULL DEFAULT 'no',
    `rr_delete` enum('yes','no') NOT NULL DEFAULT 'no',
    `rr_view` enum('yes','no') NOT NULL DEFAULT 'no',
    `rr_order` enum('yes','no') NOT NULL DEFAULT 'no',
    `rr_show` enum('yes','no') NOT NULL DEFAULT 'no'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


    INSERT INTO `role_rights` (`rr_rolecode`, `rr_modulecode`, `rr_create`, `rr_edit`, `rr_delete`, `rr_view`, `rr_order`, `rr_show`) VALUES
    ('UTENTE SEMPLICE', 'HOME', 'no', 'no', 'no', 'yes', 'no', 'no'),


    Necessito che quando inserisco un record nuovo in module faccia una select della role e inserisca in role_rights:

    role_rights.rr_rolecode = role.role_rolecode (select role_rolecode from role)

    role_rights.rr_modulecode = module.mod_modulecode (appena inserito)

    questo dovrebbe inserire un record per ogni record restituito dalla select nella tabella role.

    esempio:

    admin - home
    superadmin - home
    utente semplice - home

    avete una idea di come posso fare?
    Grazie a tutti per leggere questo post.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    perdonami, forse non ho capito il punto, ma mi sembra che tu ti stia infilando in un ginepraio

    se ogni tipo di utente ha gli stessi permessi per tutte le pagine, perché replicare i diritti per ruolo per ogni pagina?
    verifica all'accesso il ruolo dell'utente e leggi nella tabella generica dei permessi per ruolo cosa può fare in generale sulle pagine (o, meglio ancora, direttamente nella tabella dei tipi di utente gestisci i permessi)

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    perdonami, forse non ho capito il punto, ma mi sembra che tu ti stia infilando in un ginepraio

    se ogni tipo di utente ha gli stessi permessi per tutte le pagine, perché replicare i diritti per ruolo per ogni pagina?
    verifica all'accesso il ruolo dell'utente e leggi nella tabella generica dei permessi per ruolo cosa può fare in generale sulle pagine (o, meglio ancora, direttamente nella tabella dei tipi di utente gestisci i permessi)
    In realtà gia tengo tutta la parte web fatta e dovrei cambiare tutte le pagine.
    In ogni caso, i permessi sono tutti di default "NO" poi vado a cambiare i permessi pagina per pagina con un form specifico.
    quello che ho bisogno è che quando inserisco il record della pagina con il link e il nome del menu, legga la tabella role e inserisca un record per ogni utente (tabella role) nella tabella role_rights

  4. #4
    Forse si puo fare creando un trigger nel database, pero sinceramente no ho la minima idea di come fare.
    basterebbe che ogni volta che inserisco un record nella tabella module, prendesse il valore mod_modulecode appena inserto, facesse la query della tabella role, prendesse tutti i valori role_rolecode e li inserisse nella tabella role_rights:


    rr_rolecode - rr_modulecode - rr_create - rr_edit - rr_delete - rr_view - rr_order - rr_show
    admin home no no no no no no
    superadmin home no no no no no no
    utente semplice home no no no no no no


    Non so' se mi sono spiegato bene. :-)


    questo è il codice que uso per inserire il module:

    codice:
      try {
    
      $sql = "INSERT INTO " . TBL_MODULE . " (`mod_modulecode`, `mod_modulegroupcode`, `mod_modulegroupname`, `mod_modulename`, `mod_modulegrouporder`, `mod_moduleorder`, `mod_modulepagename`, `mod_type`) VALUES (:modulecode, :modulegroupcode, :modulegroupname, :modulename, :modulegrouporder, :moduleorder, :modulepagename, :type)";
    
          $stmt = $DB->prepare($sql);
    
           
            
    $stmt->bindValue(":modulecode", $modulecode);
    $stmt->bindValue(":modulegroupcode", $modulegroupcode);
    $stmt->bindValue(":modulegroupname", $modulegroupname);
    $stmt->bindValue(":modulename", $modulename);
    $stmt->bindValue(":modulegrouporder", $modulegrouporder);
    $stmt->bindValue(":moduleorder", $moduleorder);
    $stmt->bindValue(":modulepagename", $modulepagename);
    $stmt->bindValue(":type", $type);
    
      
    
          $stmt->execute();
    
          $retval = $stmt->rowCount();
    
    
    
          if ($retval > 0) {
    .............................
    
          }
    Grazie
    Ultima modifica di coinfeuropea; 09-09-2017 a 22:51

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.