Hulp gezocht bij maken van kruistabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5 volgende »

- Ariën  -
Beheerder

- Ariën -

08/07/2019 22:59:03
Quote Anchor link
Ik denk dat je het niet begrijpt. Zie mijn privébericht met wat meer duidelijkheid.
Ik hoop dat dit de zaak opheldert en dat we je alsnog kunnen helpen hier met je hulpvraag.

Want nu wordt het topic juist extra warrig, en dat willen we voorkomen. Ik hoop niet dat je dit ziet als pesterijen of iets dergelijks, maar je moet het enkel zien als een sturing zodat het forum en het topic overzichtelijk blijft.
Gewijzigd op 08/07/2019 23:01:01 door - Ariën -
 
PHP hulp

PHP hulp

28/03/2024 22:43:15
 
Ozzie PHP

Ozzie PHP

09/07/2019 11:42:34
Quote Anchor link
---- STOP ----

Misschien even opnieuw beginnen?

@ Dirk Huizinga

Dit is een openbaar forum. Alles wordt hier in de openbaarheid besproken. Wil je privé-contact of privé-begeleiding dan kun je inderdaad beter, zoals Ariën voorstelde, een vacature plaatsen.

De opties zijn dus:
1) In de openbaarheid je probleem bespreken, zodat iedereen zich op het forum ermee kan bemoeien
2) Een vacature plaatsen als je 1-op-1 contact wil met iemand die het probleem tegen betaling oplost

Je moet voor jezelf uitmaken welke optie jouw voorkeur heeft.

Hoe jij jouw vraag stelt, ik citeer "Dit hoeft uiteraard niet kosteloos te zijn. Ga graag met iemand daarover in onderhandeling buiten het forum om." lijkt het alsof je voor optie 2 kiest waarbij je dus een vacature dient te plaatsen.

Als een vacature niet de bedoeling is, dan kun je je vraag gewoon hier op het forum stellen, maar dan kan dus ook iedereen erop reageren en is er geen sprake van 1-op-1 contact. Indien je voor deze optie kiest, dan is het wel de bedoeling dat je aangeeft wat je zelf al hebt geprobeerd met wat code erbij.

Hoop dat het zo wat duidelijker voor je is.
 
- Ariën  -
Beheerder

- Ariën -

09/07/2019 21:23:47
Quote Anchor link
Ik zie nu net dat de TS al een topic gestart had:
https://www.phphulp.nl/php/forum/topic/koppelings-matrix-hoe-maak-je-die/102754/

Helaas hebben we niks meer van hem gehoord hierover, dus mogelijk zat hij al dicht in de buurt van een goede oplossing die hem gegeven is?
 
- DHU -

- DHU -

17/08/2019 15:03:57
Quote Anchor link
hoi guyz.... diegene die me een trap onder kont heeft gegeven om toch ff door te pakken.THNKS
Ben alweer bijna een hele zaterdag bezig om een kruistabel in elkaar te flansen... Tjee zeg.. in tegenstelling at jullie zeggen dat het allemaal voorgekauwd is blijft het wel puzzelen voor mij hoor ;-)

Maar ik denk dat ik mijn query voor elkaar heb. Ik krijg zonder foutmelding de data uit de tabellen die voor nu voldoende is.
Dit kan ik ook in kruistabel format op scherm krijgen... verticaal de rollen en horizontaal de personen van een bepaalde afdeling.

Maar bij de opbouw van de tabel lijkt er toch wat mis te gaan wat ik niet begrijp waarom.
Het lijkt erop dat dat de verticale regels met 1 regel zakt zodat bovenaan een lege regel ontstaat maar wel een match wordt gevonden.. (sorry, beter kan ik het omschrijven).

Hier een plaatje met wat ik bedoel:
Afbeelding

dan de code.

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
<?php
require_once('../inc/connect.php');

$sqlUitlezen = mysqli_query($connection,
$sql = "SELECT    
        CONCAT(idm_person.CALLNAME, ' ', idm_person.MX_LASTNAME, ' <br>(', idm_person.EMPLOYEENUMBER, ')' ) naam,
        idm_person.MSKEYVALUE_MEDEWERKER,
        idm_role.MSKEYVALUE_ROL rol,
        idm_role.DISPLAYNAME,
        idm_role.ROLETYPE
        
    FROM `idm_person`
        
    LEFT JOIN `idm_person2role`
        ON idm_person.MSKEYVALUE_MEDEWERKER = idm_person2role.MSKEYVALUE_MEDEWERKER
        
    LEFT JOIN `idm_role`
        ON idm_role.MSKEYVALUE_ROL = idm_person2role.MSKEYVALUE_ROL

    WHERE idm_person.REF_OU = 'OU:60000203'

    ORDER BY idm_role.ROLETYPE, idm_role.MSKEYVALUE_ROL
    "
);
    
                    
$data = mysqli_fetch_all($sqlUitlezen, MYSQLI_ASSOC);
            
    foreach($data as $rij) {
    $namen[$rij['rol']] = $rij['rol'];
    $draai[$rij['naam']][$rij['rol']] = true;
    }

        echo '<table cellspacing="0" cellpadding="2" border="1" bordercolor="#e1e3e6">' . PHP_EOL;
        echo '<tr><td></td>';
        
    foreach($draai as $key=>$rol) {
        echo '<td nowrap><font size="2">' . $key . '</font></td>';
    }

        echo '</tr>';
      
    foreach ($namen as $naam) {
        echo '<tr><td nowrap><font size="2">'. $naam . '</font></td>' . PHP_EOL;
        foreach($draai as $key=>$rol) {
            if(isset($draai[$key][$naam])) {
                echo '<td align="center" valign="middle">?</td>';
            }
else{
                echo '<td></td>';
            }
        }

        echo '</tr>';
    }

        echo '</tr>
    </table>'
;
?>
    


Kortom ik ben er nog niet. Maar ik wordt 'n beetje draaierig van de tabelopbouw...
waar zit 'm nu het feit dat ik een blanco regel heb?
Gewijzigd op 17/08/2019 15:13:41 door - DHU -
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 15:21:54
Quote Anchor link
Waar zie je een blanco regel? Vanuit welke statement?
 
- DHU -

- DHU -

17/08/2019 15:24:10
Quote Anchor link
- Ariën - op 17/08/2019 15:21:54:
el
Waar zie je een blanco regel? Vanuit welke statement?


Zie ingesloten image.. aangeven met pijltje.. voor mijn gevoel hoor de lege cel op de 2e rij daar niet te zijn. Lijkt of de rollen allemaal 1 cell naar beneden zijn geschoven. Beetje lastig uitleggen..
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 15:28:11
Quote Anchor link
Het beste advies om dit te tackelen is met maken van een mock-up in HTML, en te kijken waar het in de geparste HTML fout gaat. Zorg dat je exacte dezelfde data toont.

Met een simpele diff (kan elke goede editor) zie je zo de verschillen.

PS: onthoud wel dat font-tags in het museum thuishoren. Tegenwoordig hebben we CSS ;-)
Gewijzigd op 17/08/2019 15:29:25 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

17/08/2019 15:53:01
Quote Anchor link
Waar komt de </tr> op regel 51 vandaan?

Het makkelijkste is gewoon de broncode te bekijken van de uitgedraaide HTML (Ctrl-U in de meeste browsers).

Naar alle waarschijnlijkheid zit er een fout in de opmaak van de HTML.
 
- DHU -

- DHU -

17/08/2019 17:08:26
Quote Anchor link
- Ariën - op 17/08/2019 15:28:11:
Het beste advies om dit te tackelen is met maken van een mock-up in HTML, en te kijken waar het in de geparste HTML fout gaat. Zorg dat je exacte dezelfde data toont.

Met een simpele diff (kan elke goede editor) zie je zo de verschillen.

PS: onthoud wel dat font-tags in het museum thuishoren. Tegenwoordig hebben we CSS ;-)
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 17:09:38
Quote Anchor link
Ik mis wat tekst naast een quote?
 
- DHU -

- DHU -

17/08/2019 17:16:29
Quote Anchor link
om als laatste te beginnen... dat realiseer ik maar om de code voor mij even zo simpel als mogelijk te houden heb ik even voor die methodiek gekozen:-) anders wordt het een en weer schrollwerk :-)

Maar dan de vraag wat is een mock-up in html? geparste html? een simpele diff? Lijkt me een eea design tool. Ik vermoed dat daar dan ook weer alle kanten uit kan.

Toevoeging op 17/08/2019 17:23:30:

Thomas van den Heuvel op 17/08/2019 15:53:01:
Waar komt de </tr> op regel 51 vandaan?

Het makkelijkste is gewoon de broncode te bekijken van de uitgedraaide HTML (Ctrl-U in de meeste browsers).

Naar alle waarschijnlijkheid zit er een fout in de opmaak van de HTML.




die </tr> op regel 51 lijkt me idd ook teveel. Heeft geen toegevoegde waarde.
Maar een fout opsporen met de <ctrl>+u optie is met blote oog een pittig klus de code wordt dus danig achter elkaar aangekwakt op beeld getoond dat het speuren met loep gaat worden. Maar ik zal het eens een kladbok gaan dumpen en eea gaan orden want zo is het niet te doen :-)

Ongetwijfeld ergens opmaakvautje ... :-)
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 17:28:24
Quote Anchor link
Een mock-up is een tijdens de ontwerp- of productiefase op schaal of op ware grootte gemaakt model van een ontwerp of product. In de software-industrie komt het begrip tevens voor bij het vroeg in het ontwikkelproces testen van de gebruikersinterface van het software-ontwerp.

Met een diff kan je vergelijken wat de verschillen zijn tussen twee stukken text of scripts. Er zijn ook speciale sites die dit kunnen, zoals DiffChecker.
Je kan ook de geparste HTML (in een volledig HTML-document) laten testen door de W3 Validator.
Gewijzigd op 17/08/2019 17:32:35 door - Ariën -
 
- DHU -

- DHU -

17/08/2019 18:09:40
Quote Anchor link
Code helemaal doorlopen overbodige codering er even uitgehaald en dor W3 Validator gehaald. Die geeft nu het resultaat "Document checking completed. No errors or warnings to show."

De code zonder foutmelding (aldus de validator) ziet er als volgt uit.

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
<!DOCTYPE html>

<html lang="nl">

<head>
<meta charset="UTF-8">
<title>Kruistabel rol - medewerker</title>
</head>

<body>

<?php
require_once('../inc/connect.php');

$sqlUitlezen = mysqli_query($connection,
$sql = "SELECT    
        CONCAT(idm_person.CALLNAME, ' ', idm_person.MX_LASTNAME, ' <br>(', idm_person.EMPLOYEENUMBER, ')' ) naam,
        idm_person.MSKEYVALUE_MEDEWERKER,
        idm_role.MSKEYVALUE_ROL,
        idm_role.DISPLAYNAME rol,
        idm_role.ROLETYPE
        
    FROM `idm_person`
        
    LEFT JOIN `idm_person2role`
        ON idm_person.MSKEYVALUE_MEDEWERKER = idm_person2role.MSKEYVALUE_MEDEWERKER
        
    LEFT JOIN `idm_role`
        ON idm_role.MSKEYVALUE_ROL = idm_person2role.MSKEYVALUE_ROL

    WHERE idm_person.REF_OU = 'OU:60000203'

    ORDER BY idm_role.ROLETYPE, idm_role.MSKEYVALUE_ROL
    "
);
    
                    
$data = mysqli_fetch_all($sqlUitlezen, MYSQLI_ASSOC);
            
    foreach($data as $rij) {
    $namen[$rij['rol']] = $rij['rol'];
    $draai[$rij['naam']][$rij['rol']] = true;
    }

        echo '<table>' . PHP_EOL;
        echo '<tr><th></th>';
        
    foreach($draai as $key=>$rol) {
        echo '<th>' . $key . '</th>';
    }

        echo '</tr>';
      
    foreach ($namen as $naam) {
        echo '<tr><td>'. $naam . '</td>' . PHP_EOL;
        foreach($draai as $key=>$rol) {
            if(isset($draai[$key][$naam])) {
                echo '<td>?</td>';
            }
else{
                echo '<td></td>';
            }
        }

        echo '</tr>';
    }

        echo '</table>';
?>
    

</body>
</html>


Niet dat ik er iets verder mee gekomen ben.. op paar kleine dingetjes na... want de output is onveranderd.
Gewijzigd op 17/08/2019 20:03:17 door - DHU -
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 18:25:26
Quote Anchor link
Als ik de screenshot bekijk, heb je niet gewoon een rol zonder naam? Er is een immers een right die gewoon gekoppeld is.

Kijk anders eens met print_r() naar de inhoud van je rechten/roles boom?
En kijk of dit overeenkomt met je tabel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r($data,true)."</pre>";
?>
Gewijzigd op 17/08/2019 18:33:07 door - Ariën -
 
- DHU -

- DHU -

17/08/2019 19:40:03
Quote Anchor link
Ik had ook heel even gedacht dat er een rol zonder naam zou zijn. Dit is niet het geval. Tabel rollen in de database er op nageslagen en alles is daar gevuld. Dat blijkt ook als ik het overzicht genereer maar dan voor een andere afdeling (OU)...

Afbeelding

hieronder een deel van de voorgestelde print_r()

Array
(
[0] => Array
(
[naam] => naam1 wegehaald ivm privacy
(018411)
[MSKEYVALUE_MEDEWERKER] => 100.005756
[MSKEYVALUE_ROL] =>
[rol] =>
[ROLETYPE] =>
)

[1] => Array
(
[naam] => Dirk Huizinga
(008475)
[MSKEYVALUE_MEDEWERKER] => 100.002201
[MSKEYVALUE_ROL] => ROLE:OU:50000597:ALGEMEEN
[rol] => Algemeen
[ROLETYPE] => OU
)

[2] => Array
(
[naam] => naam1 wegehaald ivm privacy
(010780)
[MSKEYVALUE_MEDEWERKER] => 100.003205
[MSKEYVALUE_ROL] => ROLE:OU:50000597:ALGEMEEN
[rol] => Algemeen
[ROLETYPE] => OU
)

dit loopt helemaal door tot nummer 226. Dus die lap tekst bespaar ik jullie maar :-)
opmerking is dat ik namen van medewerkers heb weggehaald maar die staan er wel hoor.

wat mij opvalt is dat array [0] wel een naam, mskeyvalue_medewerker heeft maar de mskeyvalue_rol blijf legen. Dit wordt echter wel vanaf array [1] gevuld..

ik raak het overzicht kwijt en ik probeer voorzichtig wat dingetjes maar tot nu toe geen resultaat... blijft een zoekklus
Gewijzigd op 17/08/2019 20:12:38 door - DHU -
 
- Ariën  -
Beheerder

- Ariën -

17/08/2019 20:00:09
Quote Anchor link
Maar deze lege record zie je niet in de query terug?
 
- DHU -

- DHU -

17/08/2019 20:04:01
Quote Anchor link
nope. Eea nog uitgeprobeerd van andere afdeling.. Maar het lijkt er op dat iedere eerst genoemde persoon een leef rol heeft terwijl dit in de werkelijkheid niet is.

Toevoeging op 18/08/2019 10:51:21:

Ergens gebeurt er iets wat niet klopt. Kan alleen de vinger niet op de zere plek liggen. Vanmorgen een vergelijking gehouden met het resultaat van de kruistabel t.o.v. het bronbestand.

Daarbij maakte ik de conclusie dat bij alleen de eerste genoemde persoon de rolnaam niet wordt weergegeven. de match is er wel zodat het lijkt dat het een lege rol is. Maar dat is niet zo. Als ik in het bronbestand kijkt mist hij in de kruistabel inderdaad één rol.

Van alle daaropvolgende personen kloppen de matches wel. Maar tja, daarmee heb ik de oplossing nog niet gevonden.
Gewijzigd op 18/08/2019 07:36:04 door - DHU -
 
- Ariën  -
Beheerder

- Ariën -

18/08/2019 13:31:10
Quote Anchor link
Ik zit ook te kijken, maar hij loopt m.i. toch echt de array af vanaf het begin, zonder dergelijke berekeningen. Want er staat normaal niks boven Achmea Algemeen?
 
- DHU -

- DHU -

18/08/2019 13:40:25
Quote Anchor link
Nee daar staat echt niks.... dat de lege regel nu bovenaan staat heeft m.i. te maken dat ik in mijn SELECT een ORDER BY doe.

Vanmorgen dit ook op de oorspronkelijke van JAN R (zie begin topic) toegpast en daar heb ik ook die blanco regel. Dacht dat het daarmee te maken had omdat ik eea had omgedraaid omdat ik verticaal de rollen wil en horizontaal de personen. Maar dat is enige wijziging in de tabelopbouw.. Ik weet niet of het correct is gebeurt maar ik had wel resultaat. Toen dacht ik dat het met LEFT JOINS te maken had. In de oorspronkelijk code wordt er namelijk allleen JOIN gebruikt maar wanneer ik dat dat toepas blijf ik maar een zandloper behouden en gebeurt er niet veel. (op het oog dan he).. En het gekke is dat alleen dit euvel voorkomt bij de eerste genoemde persoon.
 
- Ariën  -
Beheerder

- Ariën -

18/08/2019 13:47:09
Quote Anchor link
De foreach loopt alle records af, dus als je door een JOIN issue een waarde mist, dan zou je dat ook in je query moeten zien.
 

Pagina: « vorige 1 2 3 4 5 volgende »



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.