Ciao a tutti.
Stavo sperimentando un sistema di permessi per le pagine contenute in una cartella “pagine”.
Quindi ho la mia bella cartellina “pagine” contenente le mie belle paginette:
- start.php
- lippa_a.php
- lippa_y.php
- cacca.php
- permessi1.php
etc.etc
Creo una tabella e vi inserisco un campo “name” ossia l’utente connesso seguito dai campi con i nomi di pagina e relativi permessi “0 = non accedi” “1 = hai il permesso”:
es
CREATE TABLE test_permessi (
id int(10) unsigned NOT NULL auto_increment,
`name` varchar(100) default NULL,
`start` varchar(20) default NULL,
lippa_a varchar(20) default NULL,
lippa_y varchar(20) NOT NULL,
cacca varchar(20) NOT NULL,
permessi1 varchar(20) default NULL,
permessi2 varchar(20) default NULL,
permessi3 varchar(20) default NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#
# Dump dei dati per la tabella `test_permessi`
#
INSERT INTO test_permessi VALUES (1, 'pippo_test', '9', '1', '1', '1', '1', '1', '9');
INSERT INTO test_permessi VALUES (2, 'pippo2', '9', '0', '0', '0', '0', '0', '9');
INSERT INTO test_permessi VALUES (3, 'pippo3', '1', '1', '0', '1', '0', '0', '1');
----------------------------------------
Fin qui tutto a posto!
Ora poniamo il caso che io metta una nuova pagina nella mia directory: “mucca.php”.
Dovrei aggiornare la tabella sopra aggiungendo manualmente un nuovo campo con il nome della nuova pagina e inserirvi, per ogni utente, un valore di default pari a “0”.
Giusto?
Io farei:
* leggi la dir e mettila in un array. “ $array_pagine”.
Array ( [0] => benvenuto [1] => cacca [2] => lippa_a [3] => lippa_y [4] => permessi1 [5] => permessi2 [6] => permessi3 [7] => start [8]=> mucca )
* Estraggo i dati dal db dove “name = pippo_test” e ottengo un array: “$array_db”:
}
Array ( [id] => 1 [name] => pippo_test [start] => 9 [lippa_a] => 1 [lippa_y] => 1 [cacca] => 1 [permessi1] => 1 [permessi2] => 1 [permessi3] => 9 )
* Confronto i due array e verifico qual è stato il cambiamento (se c’è stato)!
Dal secondo array $array_db estraggo le chiavi e i valori e li inserisco in due array.
foreach ($array_db as $k3 => $v3){
$array_permessi_k[]=$k3;
$array_permessi_v[]=$v3;
}
con l’array dei valori recuperato
$array_permessi_v faccio un confronto con $array_pagine (che ha in più mucca).
$array_differenze1 = array_diff($array_pagine, $array_permessi_k);
foreach ($array_differenze1 as $value) {
echo "<font color = 'red'>$value</font>
";
}
e mi stampa “Mucca”.
Bene!
Aggiungo agli array precedenti i nuovi valori:
array_push($array_permessi_k, $value);
array_push($array_permessi_v, '0');
e poi li trasformo in stringhe:
$impk = implode(" ", $array_permessi_k);
$impv = implode(" ", $array_permessi_v);
echo $impk;
echo "
";
echo $impv;
Ottenendo:
$stringa_uno = “id name start lippa_a lippa_y cacca permessi1 permessi2 permessi3 benvenuto”;
$stringa_due = “1 pippo_test 9 1 1 1 1 1 9 0”;
Da queste due stringhe come faccio a fare una query di update che inserisca i dati nel db per tutti gli utenti?
Come vi sembra come idea?
Il metodo è giusto?
Grazie, sto impazzendo!