Archief - PHP/Mysql: Updaten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

stoffer

Legacy Member
Ik heb een pagina die alle geregistreerde gebruikers weergeeft met hun corresponderende mogelijkheden.
Bvb:
Persoon a: mag nieuws toevoegen en de catologus bewerken
Persoon b: mag niks doen
Persoon c: mag alles doen, inclusief gebruikers bewerken

In het voorbeeld zijn er maar 3 kolommen in de database, maar bij mij heb ik een variërend aantal kolommen.

Wanneer persoon c dus op die pagina komt ziet hij alle info over de gebruikers + checkboxes zodat hij alle mogelijkheden kan wijzigen.
Ik had daar 2 mogelijkheden, 1 form per gebruiker met telkens 1 submit knop of 1 form voor alles samen. Ik heb voor de 2e optie gekozen, omdat mij dat iets handiger leek.

Nu zou de pagina dus alle database elementen moeten kunnen updaten.
Ik heb dit uitgewerkt mbv 2 luskes, de eerste gaat elke rij af en per rij een 2e lus die elk kolom element afgaat.
Dit werkt wel maar dit vind ik allesbehalve goed want de tijd hiervoor nodig hangt zeer sterk af van het aantal opties en het aantal gebruikers.
Zijn er andere mogelijkheden? Een volledige tabel in 1 keer updaten?
Ik beschik over de kolomnamen maar niet over de rijen/kolommen die al dan niet bewerkt zouden moeten worden.

sys4096

Legacy Member
Kunt ge d'er een tekeningske bij doen aub ? :)

Als ge wet wat een bepaalde user kan/mag doen, kan je toch ook een aparte actie opstarten als die user op submit klikt ? Dus een aangepaste update behoord toch tot de mogelijkheden ?

stoffer

Legacy Member
Als persoon C de personen A en B terzelfdertijd wilt veranderen is het handiger om alles in 1 actie (1 form, 1 submit knop) te brengen.
(Misschien niet bij 2 andere gebruikers, maar wel bij 100 andere gebruikers)

De andere users worden geupdate, maar allen tegelijk.

Homer

Legacy Member
op zich zou ik die variabele kolommen al wegdoen door gebruik te maken van accessflags (denk aan chmod by unix filesystems)

1 : nieuws toevoegen
2 : catalogus bewerken
4 : users bewerken
8 : nieuws deleten
16 : ...

als je dan iemand de rechten om nieuws toe te voegen en nieuws te verwijderen wilt geven, moet je hem accessflag 9 geven.

Zo heb je dus maar 1 kolom in de user tabel en kun je dus ook gewoon elke user apart updaten.



PHP:
        function makeflags($flags)
	{
        global $db;

        $res=$db->query("select * from ".$db->table["flags"]." order by flagvalue DESC");
        WHILE($row = $db->fetch_array($res))
        {
                $accessflag = new accessflags($row);
                $flag[$accessflag->value] = div($flags,$accessflag->value);
                $flags = $flags - ($flag[$accessflag->value]*$accessflag->value);
        }

        return ($flag);
	}
	
	
	function edit_news()
	{
		$value = pow(2,0);
		return($this->flag[$value]);
	}

	function del_comments()
	{
		$value = pow(2,1);
		return($this->flag[$value]);
	}

Bij mij zitten de accessflags dus ook in database, om een overzichtje te kunnen maken en "gemakkelijk" flags te kunnen toevoegen.

killgore

Legacy Member
homer, post geen deel van een klasse he, met die $this-> verwijzingen zijn ze dan niets :ironic:

stoffer

Legacy Member
Ik heb erover nagedacht om daarmee te werken maar ik dacht dat het beter zou zijn van niet.
Wanneer ik de catalogus boven nieuws toevoegen plaats zullen al diegenen die tot de catalogus toegang hebben ook tot de nieuwssectie toegang krijgen.
Je hebt dan wel het voordeel dat het iets eenvoudiger gaat worden maar de mogelijkheden worden beperkter.
Of werkt het anders?
(Ik kan natuurlijk ook vergelijken met de waarden, maar dan verlies ik de mogelijkheid om gebruikers meerdere opties te geven)
Wat ik wel kan doen is alle waarden in een string stoppen, gescheiden door tekens, vb: 1/4/8 en dat splitsen, maar ik denk dat dit minder overzichtelijk gaat worden en alles nog wat moeilijker gaat maken.

Cakeman

Legacy Member
stoffer zei:
Ik heb erover nagedacht om daarmee te werken maar ik dacht dat het beter zou zijn van niet.
Wanneer ik de catalogus boven nieuws toevoegen plaats zullen al diegenen die tot de catalogus toegang hebben ook tot de nieuwssectie toegang krijgen.
Je hebt dan wel het voordeel dat het iets eenvoudiger gaat worden maar de mogelijkheden worden beperkter.
Of werkt het anders?
Flag-value 1: enkel nieuws adden
Flag-value 2: enkel de catalogus bewerken
Flag-value 3 (1+2): nieuws adden én de catalogus bewerken
Flag-value 5 (1+4): nieuws adden en users bewerken
Flag-value 9 (1+8): enkel news toevoegen en news deleten

Aan de waarde van flag is eenduidig af te leiden welke permissies iemand heeft.

stoffer

Legacy Member
Cakeman zei:
Flag-value 1: enkel nieuws adden
Flag-value 2: enkel de catalogus bewerken
Flag-value 3 (1+2): nieuws adden én de catalogus bewerken
Flag-value 5 (1+4): nieuws adden en users bewerken
Flag-value 9 (1+8): enkel news toevoegen en news deleten

Aan de waarde van flag is eenduidig af te leiden welke permissies iemand heeft.

Als er kolommen worden toegevoegd, ga ik dan niet verplicht zijn om de code aan te passen? Want nu hoef ik enkel een naam in te vullen en op ok te klikken en alles is aangepast.

Cakeman

Legacy Member
Je kan in je database een tabel maken met de flagvalues en de omschrijving die erbij hoort. Wanneer je een nieuwe permissie wilt introduceren (bijvoorbeeld het veranderen van passwoorden) dan voeg je gewoon een nieuw record toe aan die tabel.

In je controle structuren ga je dan wel iets moeten aanpassen, maar dat moet je bij je huidig systeem ook.

stoffer

Legacy Member
Mijn huidig systeem werkt hoor, daar moet ik in principe niks aan wijzigen.

Maar ik denk dat ik het toch eens ga proberen met die flagvalues, het zal wellicht wel iets meer werk nemen om die code op die manier aan te passen maar ik denk dat ik het misschien toch een heel stuk kan vereenvoudigen.
Ty :)

Als iemand nog ideeën heeft, laat ze maar komen ;)

killgore

Legacy Member
zo moeilijk me u accesflags jong :s

leer gewoon binaire operators gebruiken, dan kunde me een paar regelkes code die accesflags gebruiken.

stoffer

Legacy Member
killgore zei:
zo moeilijk me u accesflags jong :s

leer gewoon binaire operators gebruiken, dan kunde me een paar regelkes code die accesflags gebruiken.

Ik wil wel eens zien hoe gij in een paar regelkes code een menu aanmaakt op basis van de flags van een bepaald persoon, in staat zijt om dat menu aan te passen zonder enige manuele verandering in de code of de database en alle accesflags met 1 klik te kunnen updaten.

killgore

Legacy Member
stoffer zei:
Ik wil wel eens zien hoe gij in een paar regelkes code een menu aanmaakt op basis van de flags van een bepaald persoon, in staat zijt om dat menu aan te passen zonder enige manuele verandering in de code of de database en alle accesflags met 1 klik te kunnen updaten.
leer eerst wat binaire operators zijn :p. Das echt wel extreem simpel om me flags te werken :).

bv.:

PHP:
define("NEWS",1);
define("USERS",2);
$userflags = NEWS|USERS; //$usersflags = 3;

if(NEWS & $userflags)
{
echo "you may edit news!";
}
if(USERS & $userflags)
{
echo "you may edit users!";
}
$userflags kan je dan simpel opslaan in een db :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan