Inserire dati tabella leggendo parte di altra tabella con php

Discussione in 'PHP' iniziata da coinfeuropea, 11 Settembre 2017.

  1. coinfeuropea

    coinfeuropea Nuovo Utente

    Registrato:
    11 Settembre 2017
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Località:
    Sámara - Costa Rica
    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.


    Codice:
    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');
    
    [CODE]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

    questo è il codice que uso per inserire il module:

    codice:
    PHP:
     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);
    avete una idea di come posso fare?
    Grazie a tutti per leggere questo post.
     
    Ultima modifica di un moderatore: 12 Settembre 2017
  2. filomeni

    filomeni Moderatore Membro dello Staff MOD

    Registrato:
    14 Maggio 2006
    Messaggi:
    971
    Mi Piace Ricevuti:
    4
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Web Developer
    Località:
    Roseto degli Abruzzi (TE)
    Home Page:
    Basta mettere le query in cascata nell'ordine di inserimento che vuoi tu...
     
  3. coinfeuropea

    coinfeuropea Nuovo Utente

    Registrato:
    11 Settembre 2017
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Località:
    Sámara - Costa Rica
    questo è il codice que uso per inserire il module:

    codice:
    PHP:
     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);
    Scusa ma non capisco cosa vuoi dire, questa é lo script che uso per caricare i dati in module, pero io devo i
     
    Ultima modifica di un moderatore: 12 Settembre 2017
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.647
    Mi Piace Ricevuti:
    125
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao @coinfeuropea
    quando posti del codice racchidilo con gli appositi bcccode o usa inserisci codice (barra formattazione del post+tipo di codice)
     
  5. coinfeuropea

    coinfeuropea Nuovo Utente

    Registrato:
    11 Settembre 2017
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Località:
    Sámara - Costa Rica
    Si, scusa, ho creato e risposto al post con il cellulare e non ho trovato la barra formattazione.
     
  6. coinfeuropea

    coinfeuropea Nuovo Utente

    Registrato:
    11 Settembre 2017
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Località:
    Sámara - Costa Rica
    Nessuno mi sa dare un aiuto con questo?
    Grazie
     
  7. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.647
    Mi Piace Ricevuti:
    125
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    io ti aiuterei, ma vedo che utilizzi la classe pdo che non ho mai usato, sbaglierò ma non mi piace la programmazione ad oggetti e non ho voglia di impararla.
    comunque ho letto quello che hai scritto
    tu fai una insert sulla tabella module e sin qui ok
    fai una select su role, ma in base a cosa? vuoi estrerre tutti i record della role? o solo quelli che hanno un legame con quanto hai inserito in module?
    fatta la select quindi estratti i record e campi (tutti? ribadisco) vuoi inseririli (tutti?) in role_rights?
    comunque se spieghi meglio posso darti una mano, ma con mysqli poi eventualmente a tradurlo per la pdo ci pensi tu
     
  8. coinfeuropea

    coinfeuropea Nuovo Utente

    Registrato:
    11 Settembre 2017
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Località:
    Sámara - Costa Rica
    Ciao Borgo Italia,
    grazie per rispondermi.
    praticamente la tabella role é la lista degli utenti:
    admin
    superadmin
    utente semplice
    franco
    pippo
    minni
    ect.

    e il campo que necessito è role_rolecode

    per tanto bisogna fare un select role_rolecode from role, pero essendo vari, non so' come inserire nella tabella role_rights
    il risultato del loop while.

    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
    .........

    o

    admin - prodotti
    superadmin - prodotti
    utente semplice - prodotti
    .........

    gli altri campi della tabella role_rights sono i permessi, pertanto quando inserisco essendo tutti default NO non ho bisogno di inserirli nel insert, in seguito li modifico in base alla pagina e al utente.
    Spero di essere stato un po piu chiaro. :)
    e ancora grazie per la disponibilitá
     
    Ultima modifica: 14 Settembre 2017
Sto caricando...

Condividi questa Pagina