Hulp gezocht bij maken van kruistabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ervaren senior C# developer in Arnhem gezocht

Organisatie Voor een van mijn businesspartners uit de omgeving van Arnhem ben ik op zoek naar een ervaren senior C# ASP.NET developer. Deze organisatie maakt complexe software producten voor bepaalde bedrijfsprocessen. Denk hierbij aan beslisregelsystemen, klachtenmanagementsystemen, digitale formulieren of een combinatie hiervan in één portaal. De software wordt specifiek op elke klant zijn wens aangepast. Bij de klanten moet je denken aan enerzijds provincies, gemeenten en overheidsinstanties en anderzijds aan banken, hypotheekverstrekkers en verzekeringsmaatschappijen. Binnen het bedrijf, van circa zestig man groot, heerst een informele sfeer. Collegialiteit staat er hoog in het vaandel, wat je terugziet in de wekelijkse vrijdagmiddagborrel

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5

Frank Nietbelangrijk

Frank Nietbelangrijk

25/08/2019 18:51:05
Quote Anchor link
bij een AJAX request doe je met javascript een nieuw verzoek of request aan de webserver, in dit request kun je (net als het inzenden van een formulier) data mee sturen. De request wordt dus geheel op de achtergrond verstuurd en als gebruiker merk je hier niets van. Javascript verstuurt het en javascript ontvangt ook het antwoord van de server welke dan ook gewoon in een javascript variabele terecht komt waarmee het programmaverloop verder bepaald kan worden.

Als dit allemaal nieuw is dan zul je wel wat tijd en energie moeten investeren om dit te begrijpen en onder de knie te krijgen. Dus wordt dit voor nu even een stap zijwaarts.
Gewijzigd op 25/08/2019 18:57:12 door Frank Nietbelangrijk
 
PHP hulp

PHP hulp

19/09/2019 05:22:03
 
- Ariën -
Beheerder

- Ariën -

25/08/2019 18:51:44
Quote Anchor link
Begin stap voor stap....
Zorg dat je eerst inziet wat een Javascript AJAX-request is, en wat het doet. En hoe het werkt. In combinatie met de jQuery-library is het uitlezen en aanpassen van de HTML-elementen erg eenvoudig.
Gewijzigd op 25/08/2019 18:52:49 door - Ariën -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/08/2019 19:00:13
 
Dirk Huizinga

Dirk Huizinga

25/08/2019 19:00:57
Quote Anchor link
alles is heel eenvoudig als ik iedereen moet geloven :-) maar het kost me nogal moeite om de basis te snappen. Klaarblijkelijk komt dan niet goed over of zo. Nu komt er weer 'n term jQuery erbij. Gooi maar op de hoop.

Kortom hier kom ik niet verder mee. Dit zijn ook technieken waarvan ik zelf denk dat ik uren/dagen/weken bezig ben om een te uberhaupt er wat van te begrijpen.

Ga het wel over een ander boeg gooien en ik probeer iemand via die 'vacature forum' te vinden die me hiermee wil helpen. Daar mag een tarief tegenover staan. Even uitvogelen om dat forum in elkaar steekt.
 
- Ariën -
Beheerder

- Ariën -

25/08/2019 19:19:43
Quote Anchor link
Niet lastig, alleen de criteria doornemen en toepassen.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/08/2019 19:21:53
Quote Anchor link
Maar zelfs als je niet (direct) technisch overziet hoe je iets implementeert, dan weet je toch nog steeds wat je functioneel aan administratie moet verrichten?

Jouw huidige opzet hebben we al onderzocht. Om één gigantische update te doen over alle gebruikers/rollen of zelfs alle rollen van een enkele gebruiker (dat is mij niet helemaal duidelijk, wil je het een, of het ander, of allebei, oftewel, hoe luidt nou precies *jouw* functionele spec?) lijkt mij enigszins risicovol, voornamelijk omdat je niet de middelen hebt om zo'n (middel)grote mutatie "atomair" (als één ondeelbare actie) te laten verlopen. En dat is weer een gevolg van het feit dat je geen (echte) relationele database gebruikt, maar MyISAM-tabellen. En zelfs dan zou dat mijn voorkeur niet hebben.

Dus okay, dan ga je naar een strategie kijken die (bijvoorbeeld) één mutatie per keer verricht (andere opties mogelijk?): het toevoegen of verwijderen van een enkele rol. Dat is functioneel dus wellicht een betere aanpak. En vervolgens ga je dus kijken naar een implementatiemethode hiervoor. Dan check je in je gereedschapskist of je zoiets hebt, en anders kijk je eens hoe andere mensen dat aanvliegen.

Maar allereerst moet je dus een soort van PLAN hebben, voordat je begint te rennen. Maakt niet uit of je niet direct weet hoe je dit implementeert, maar als je een functionele specificatie hebt (een abstract IDEE van wat er moet gebeuren, dus een soort van boodschappenlijst: dit zijn de acties die achtereenvolgens moeten gebeuren, zonder hierin enige techniek te betrekken, want dat is dan weer implementatie) dan is echt 50% van het werk al gedaan. De implementatie is "slechts" een (mogelijk haast willekeurige) uitdraai van een functionele spec...

Dit is toch een beetje hoe je in zijn algemeenheid software ontwikkelt dacht ik.
Gewijzigd op 25/08/2019 19:25:06 door Thomas van den Heuvel
 
Dirk Huizinga

Dirk Huizinga

25/08/2019 19:44:08
Quote Anchor link
dank je Thomas voor je response.. ik was er min of meer van uit gegaan dat het al duidelijk was hoe ik het zo willen hebben. de tabel geeft inzicht wie welke rol heeft. nu had ik in eerste instantie de indruk dat dit met standaard form gemuteerd kon worden. Jij gaf me een ander inzicht en dat die methodiek eigenlijk bloedje link was. Want het zou in sommige gevallen maar om één mutatie kunnen gaan en niet zo'n massa form. Dus ik heb alle select veldjes weer ongedaan gemaakt en het zijn weer vinkjes. Maar de wens blijft om een rol aan iemand te kunnen koppelen of in te trekken op welke vorm dan ook. Inmiddels heb ik een post gedaan in de vacture deel.

De opdracht lijkt uitgesproken vrij eenvoudig te zijn maar klaarblijkelijk heb ik Plan van aanpak, functioneel- en technische ontwerp nodig terwijl ik van alle kant met handjes en voetjes gebonden ben. Ik hoop dat ik iemand daar tref die eea wil bouwen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/08/2019 08:48:07
Quote Anchor link
Is het niet veel gemakkelijker om een rijtje weer te geven van alle gebruikers met daarachter een linkje naar een "edit" pagina van die ene gebruiker?

(Het linkje wordt dan zoiets als http://mijndomein.nl/users/edit-roles?id=4)

Op die pagina maak je vervolgens het formulier waarmee je de rol van de gebruiker kunt aanpassen....

Deze pagina moet dan uiteraard alleen toegankelijk zijn voor gebruikers met voldoende rechten
Gewijzigd op 26/08/2019 08:49:16 door Frank Nietbelangrijk
 
Dirk Huizinga

Dirk Huizinga

26/08/2019 15:46:09
Quote Anchor link
Hoi Frank,

dit zou dan betekenen dat voor iedere gebruiker een pagina moet worden geopend? Dit lijkt me niet zo werkbaar. Maar ik kan niet helemaal goed beoordelen hoe je dat dan voor ogen ziet. Let op.. ik hoef de rol van gebruiker niet aan te passen he.... alleen de rollen die aan een gebruiker zijn gekoppeld. Inhoudelijke rolaanpassing zijn hier niet van toepassing


ps.. ingesloten link werkt niet
 
Thomas van den Heuvel

Thomas van den Heuvel

26/08/2019 19:22:05
Quote Anchor link
Quote:
Maar de wens blijft om een rol aan iemand te kunnen koppelen of in te trekken op welke vorm dan ook. Inmiddels heb ik een post gedaan in de vacture deel.

Deze functionaliteit staat in principe helemaal los van de rest. Dit onderdeel zou je dus ook in complete isolatie van de rest kunnen aanpakken. Ook zou je dus een soort van prototype of proof of concept kunnen bouwen die precies doet wat jij wilt. Het lijkt mij handig en verstandig om dit soort dingen ook te compartimenteren. Alles bij elkaar is dit dan weliswaar een redelijk complex ding, maar als je dit onderdeel per onderdeel aftikt dan valt dit allemaal reuze mee. Zoals vanouds: verdeel en heers.

Quote:
klaarblijkelijk heb ik Plan van aanpak, functioneel- en technische ontwerp nodig terwijl ik van alle kant met handjes en voetjes gebonden ben

Je hoeft dit alles helemaal niet over een zwaar gedocumenteerde boeg te gooien, maar je moet op zijn minst weten wat je gaat maken en waarom je voor die aanpak kiest. Dit zijn namelijk stuk voor stuk ontwerpbeslissingen die een directe invloed hebben hoe iets (technisch) werkt en hoe iets er (visueel) uit komt te zien. Dit moet dus echt gebaseerd zijn op en onderbouwd worden door argumenten, je moet deze beslissingen namelijk altijd kunnen verdedigen.

Als je dit niet doet dan bedien je je al snel van een aanpak die nergens op gebaseerd is en dan is elke structuur letterlijk en figuurlijk ver te zoeken, en deze structuur kan juist een enorme bijdrage leveren aan het begrip. Je overtuigt jezelf als het ware van je handelswijze en dat levert gigantisch veel inzicht op omdat je hebt uitgezocht wat de mogelijkheden zijn, en je hebt uiteindelijk vanwege redenen xyz bewust gekozen voor een specifieke aanpak.

Wat ik tot nu toe heb gezien in deze en andere threads zijn in zekere zin "groeipijnen", je moet jezelf iets eigen maken wat je nog niet echt beheerst. En dat is ingewikkeld, dat snap ik, maar ik denk dat als je de hele tijd flippert tussen "gaan we doen" en "gaat me nooit lukken" dat dit een proces van wringen en wurgen wordt / blijft.

Zoals met zoveel vraagstukken op dit forum is "het probleem" niet zozeer het probleem, maar meer de benadering en aanpak van "het probleem". Dit is meer een kwestie van "mentale" training en vergt een wat abstractere benadering van een programmeervraagstuk dan dat dit nu echt over "parate kennis" gaat.

Vraagstukken zijn ook zelden tot nooit uniek in die zin dat jij de enige bent die tegen dat unieke probleem aanloopt. Ga dus eens op zoek naar informatie over simpele voorbeelden die ongeveer doen wat jij wilt en ga daar dan mee aan de slag. Kijk ook een naar AJAX/asynchrone requests et cetera. Zelfs als je helemaal geen fantasie hebt zou je altijd nog kunnen kijken wat anderen doen. Maak jezelf hiermee vertrouwd als instrument voor het oplossen van programmeervraagstukken: simpelweg Googlen.

Of je moet besluiten dat hier je interesse overduidelijk niet ligt en abstract denkvermogen jouw ding niet is, of dat je (grote) moeite hebt met het leren van nieuwe dingen ofzo (hey, wie heeft dit niet?), ik heb dit (laatste) zelf ook een beetje, dat ik niet graag uit mijn comfort zone treed. Ik bedoel dat kan, dat is geen oordeel ofzo, mensen zijn gewoon verschillend. Zou je toch voorstellen om de knoop door te hakken want ik krijg de indruk dat de enige begrenzing een soort van overmachtsgevoel is ofzo, ik heb verder volgens mij nog niet over andere begrenzingen gehoord. Maar dat kan dus voor een groot deel, of misschien wel helemaal, gecompenseerd worden door een andere benadering of "mindset" van het vraagstuk.
Gewijzigd op 26/08/2019 19:23:06 door Thomas van den Heuvel
 
Dirk Huizinga

Dirk Huizinga

27/08/2019 08:17:53
Quote Anchor link
Abstract denken is inderdaad niet zo mijn ding.. Mijn leervermogen is ook niet van topniveau hoor.. Maar om nu alles tegelijkertijd moet leren zie ik al helemaal niet zitten :-) Dat heeft lange tijd nodig eer ik deze materie een beetje begrijp ;-)Trouwens die tijd ontbreekt me ook. Wel mijn complimenten hoor dat je in een bericht zo'n analyse kan verwoorden. Knap.

Ik dacht dat wat ik nu zou willen wel inmiddels duidelijk is. Hoe te realiseren nog niet. Maar ik heb hier een op de vacature deel ook een oproep geplaatst. Hopelijk reageert iemand daar. Want dit is niet helemaal mijn ding merk ik wel. Ben al heel blij met het overzicht wat er nu staat hoor. Het geeft een mooi inzicht wie welke rol heeft. Maar het muteren zou een fantastische uitbreiding zijn.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/08/2019 09:04:54
Quote Anchor link
Dirk Huizinga op 26/08/2019 15:46:09:
dit zou dan betekenen dat voor iedere gebruiker een pagina moet worden geopend?

Je opent de pagina van de gebruiker waarvan je de rollen die aan hem gekoppeld zijn wilt wijzigen. Dit is niet meer dan een muisklik. Je hoeft maar één (dynamische) pagina te maken.


Dirk Huizinga op 26/08/2019 15:46:09:
Let op.. ik hoef de rol van gebruiker niet aan te passen he.... alleen de rollen die aan een gebruiker zijn gekoppeld.

Oke maar dat maakt verder geen verschil


Dirk Huizinga op 26/08/2019 15:46:09:
ps.. ingesloten link werkt niet

Klopt. Het is als voorbeeld bedoeld hoe je de pagina waarin je de gebruiker aan zijn rollen koppelt aan kunt roepen. Merk op dat je de gebruikers_id meegeeft als GET variabele.


Toevoeging op 27/08/2019 09:12:41:

Misschien is de zoekterm php crud example interessant?
Gewijzigd op 27/08/2019 09:13:32 door Frank Nietbelangrijk
 
Dirk Huizinga

Dirk Huizinga

27/08/2019 22:26:38
Quote Anchor link
Hallo Frank, ben hiermee aan het experimenteren.. en zo waar het lukt me om hyperlink te maken... deze ziet er op die velden waar geen link staat als volgt eruit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="?actie=m2r&persnr='.substr($key, -7 ,6).'&rol='.$naam.'">+</a>


wanneer ik op link klik dan wordt een formulier getoond met twee gevulde velden met de waarden die ik heb meegegeven in de link.... ik zou dus zeggen nu ff op het knoppie Opslaan klikken en dan wordt de koppeling toegevoegd aan de database.... Maar dat lukt dus niet... er wordt niets weggeschreven... zit te puzzelen hoe dit kan en wat proberen...
Het zal ongetwijfeld met ON SUBMIT te maken hebben. we blijven proberen
 
- Ariën -
Beheerder

- Ariën -

27/08/2019 22:52:36
Quote Anchor link
Er kunnen diverse oorzaken zijn:
- De action van het formulier is niet correct
- De afhandeling van je formulier klopt niet
- Je query mislukt.

Het is een kwestie van debuggen, en stap voor stap een string plaatsen om te kijken waar het spaak loopt, en welke route wel wordt bewandeld door je script.
 
Dirk Huizinga

Dirk Huizinga

27/08/2019 22:59:34
Quote Anchor link
ongetwijfed.... maar zelfs debuggen is voor mij niet iets vanzelfsprekend... dat moet ik dan ook weer eerst uitzoeken hoe dat in elkaar steekt....

het is niet een kwestie van iets roepen en dat ik dan alles maar snap
 
- Ariën -
Beheerder

- Ariën -

27/08/2019 23:33:50
Quote Anchor link
Debuggen is niets anders dan kijken wat je script precies doet. Gooi hier en daar een echo neer, kijk met print_r() of var_dump() naar de inhoud van variabelen.

Het is iets wat bij de basis hoort, als je iets wilt programmeren.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2019 09:31:47
Quote Anchor link
Zo te horen ben je er bijna.. Mocht het niet lukken dan zou je nog even wat relevante code kunnen plaatsen zodat we even met je mee kunnen kijken.

Toevoeging op 28/08/2019 09:41:53:

Algemene tip:

Op php.net vindt je uitgebreide informatie over iedere functie in php (bijvoorbeeld de functie mysqli_query). Bij het kopje Return Values staat beschreven wat de functie mogelijk voor waarden terug kan geven. Door deze waarden vervolgens te testen in je programma kun je achterhalen of er een fout optreedt. Wanneer dat het geval is zou je een nette melding kunnen tonen. Het resultaat is dat je minder hoeft te gissen en sneller fouten oplost.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$result
= mysqli_query($con, 'SELECT * FROM table');

if(FALSE === $result) {
    echo 'er gaat iets mis met de query! ' . mysqli_error($con);
}

?>
Gewijzigd op 28/08/2019 09:50:05 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

28/08/2019 13:46:29
Quote Anchor link
Voortbordurend op mijn vorige variant hier een "mockup" met jQuery/AJAX. Het enige wat ontbreekt is een koppeling met de database, met daarbij:
- het uitlezen van de rollen, gebruikers, en de koppelingen hiertussen
- communicatie met de koppeltabel in de AJAX-call

Het enige wat in wezen verschilt is dat ik enkele cellen heb voorzien van een id en wat data-attributen, de rest is wat jQuery. De syntax lijkt ingewikkeld, maar alle afzonderlijke operaties zijn in principe bij elkaar te Googlen. En ja, dat kost wat tijd als hier niet vertrouwd mee bent, maar met wat annotatie in code en fatsoenlijke naamgeving van de variabelen zou je hier toch chocola van moeten kunnen maken.

Uiteraard moeten deze scripts ook afgeschermd worden van de buitenwereld met authenticatie of wat dan ook... Het gaat hier puur om de werking, niet om security of precieze database-operaties of wat dan ook. Dat zou je zelf wel in moeten kunnen vullen. Dit alles zou je in ieder geval een idee/aanzet moeten geven.

style.css
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
/*
NOTES
- choose an appropriate value for the minimum cell width (table.matrix td min-width)
*/
table.matrix                    { border-collapse: collapse; border-style: solid; border-width: 1px; border-color: #aaaaaa; }
table.matrix td                 { height: 25px; margin: 0; padding: 0; border-style: solid; border-width: 1px; min-width: 50px; text-align: center; }
table.matrix td a               { display: block; width: 100%; height: 100%; text-decoration: none; color: #000000; line-height: 25px; }
table.matrix td a.checked       { background-color: #ccffcc; }
table.matrix td a.unchecked     { background-color: #ffcccc; }
table.matrix td a.waiting       { background-color: #ffffcc; }


index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
// normally, this information comes from a database
$users = array(
    1 => array('name' => 'GOD',   'roles' => array(1 => true)),
    2 => array('name' => 'Bob',   'roles' => array(2 => true, 3 => true)),
    3 => array('name' => 'Joe',   'roles' => array(3 => true)),
    4 => array('name' => 'Bubba', 'roles' => array(4 => true)),
);


$roles = array(
    1 => 'developer',
    2 => 'administrator',
    3 => 'moderator',
    4 => 'only human',
);


// calculate how often a role is used
$roleCount = array();
foreach ($roles as $id => $whatever) {
    $roleCount[$id] = 0;
}


foreach ($users as $user) {
    foreach ($user['roles'] as $id => $whatever) {
        // if we can assume $user['roles'] only contains existing roles we can drop this if-statement
        if (isset($roleCount[$id])) {
            $roleCount[$id]++;
        }
else {
            // nonexisting role?
        }
    }
}


header('Content-Type: text/html; charset=UTF-8');
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>interactive matrix</title>
<link href="style.css?<?php echo $_SERVER['REQUEST_TIME']; ?>" rel="stylesheet" type="text/css">
<!-- grab jQuery from CDN, for more stable performance download your own copy and refer to it locally -->
<script
  src="https://code.jquery.com/jquery-1.12.4.min.js"
  integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
  crossorigin="anonymous"></script>
</head>

<body>
<table border="1" class="matrix" id="matrix">
    <!-- user row, initial cell is for role and role usage count column, hence colspan 2 -->
    <tr><td colspan="2">&nbsp;</td><?php
        foreach ($users as $userId => $user) {
            ?>
<td><?php echo $user['name']; ?></td><?php
        }
    ?>
</tr>
    <!-- user role count row -->
    <tr><td>&nbsp;</td><td>#</td><?php
        foreach ($users as $userId => $user) {
            ?>
<td id="userRoleCount-<?php echo $userId; ?>"><?php echo count($user['roles']); ?></td><?php
        }
    ?>
</tr>
    <!-- the actual user-role matrix -->
    <?php
    foreach ($roles as $roleId => $roleName) {
        ?>
<tr id="roleRow-<?php echo $roleId; ?>">
            <td><?php echo $roleName; ?></td>
            <td id="roleCount-<?php echo $roleId; ?>"><?php echo $roleCount[$roleId]; ?></td><?php
            foreach ($users as $userId => $user) {
                $checked = isset($user['roles'][$roleId]);
                ?>
<td><a href="javascript:void(0);" data-user="<?php echo $userId; ?>" data-role="<?php echo $roleId; ?>" data-checked="<?php echo ($checked ? '1' : '0'); ?>" class="<?php echo ($checked ? 'checked' : 'unchecked'); ?>"><?php echo ($checked ? '&#10004;' : '&#10006;'); ?></a></td><?php
            }
        ?>
</tr><?php
    }
?>
</table>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
    // no need to make a delegated onclick as the table itself is not dynamic
    $('table#matrix a').on('click', function(e) {
        e.preventDefault();
        var userId = $(this).attr('data-user');
        var roleId = $(this).attr('data-role');
        var checked = $(this).attr('data-checked');

        console.log('click on user '+userId+', role '+roleId+', checked '+checked);

        $(this).removeClass('checked').removeClass('unchecked').addClass('waiting').html('&#9742;');

        var that = this; // save reference to hyperlink

        $.ajax({
            'url': 'ajax.php',
            'data': {'user': userId, 'role': roleId, 'checked': checked },
            'dataType': 'json',
            'success': function(data) {
                if (data.status == 'ok') {
                    // update checked value
                    $(that).attr('data-checked', data.checked);

                    // update user role count
                    var userRoleCount = 0;
                    $('table#matrix a[data-user='+data.user+']').each(function() {
                        if ($(this).attr('data-checked') == 1) {
                            userRoleCount++;
                        }
                    });
                    $('#userRoleCount-'+data.user).html(userRoleCount);

                    // update role count
                    var roleCount = 0;
                    $('#roleRow-'+data.role+' a').each(function() {
                        if ($(this).attr('data-checked') == 1) {
                            roleCount++;
                        }
                    });
                    $('#roleCount-'+data.role).html(roleCount);

                    // update icon
                    var cssClass = data.checked ? 'checked' : 'unchecked';
                    var icon     = data.checked ? '&#10004;' : '&#10006;';
                    $(that).removeClass('waiting').addClass(cssClass).html(icon);
                } else {
                    alert('error retrieving data :(');
                }
            }
        });
    })
});
//]]>
</script>
</body>
</html>


ajax.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
sleep(1); // simulate wait time

$response = array(
    'status' => 'error',
);

function
isId($in) {
    return preg_match('#^[1-9][0-9]*$#', $in) === 1;
}


// normally we check data with database and update stuff accordingly
if (
    isset($_GET['user']) && isId($_GET['user']) &&
    isset($_GET['role']) && isId($_GET['role']) &&
    isset($_GET['checked']) && in_array($_GET['checked'], array('0', '1'))
) {

    // for now just flip checked
    $user = $_GET['user'];
    $role = $_GET['role'];
    $checked = 1 - $_GET['checked'];

    $response = array(
        'status'    => 'ok',
        'user'      => $user,
        'role'      => $role,
        'checked'   => $checked,
    );
}


header('Content-Type: application/json; charset=UTF-8');
echo json_encode($response);
?>


werkend voorbeeld
Vragen? Vragen!
Gewijzigd op 28/08/2019 17:45:02 door Thomas van den Heuvel
 
Dirk Huizinga

Dirk Huizinga

28/08/2019 16:08:56
Quote Anchor link
Thomas kerel, je maakt er weer 'n hoogstandje van. Was al ver zoals door Frank Nietbelangrijk z'n methode dit via link een pagina te open waar de koppeling met de waarden in een form wordt geopend en met $_GET waarden wordt gevuld.. je hebt nog de mogelijkheid te annuleren en bij ok kan de mutatie toegevoegd worden aan de database.... dit heb ik nu werkend.

Maar tja... dan zie ik dit pareltje... Prachtig. Hier ga ik zeker mee aan de slag want dit was wel wat ik aanvankelijk bedoelde en er hoeft niet steeds een pagina geopend te worden.. als op deze manier koppelingen tussen rol/persoon kan toevoegen/intrekken in een tabel werkt dit vele malen eenvoudiger en sneller...


Maar nogmaals mijn complimenten.
 

Pagina: « vorige 1 2 3 4 5



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.