Hallo allemaal,

Ik schaar mezelf nog steeds onder beginners hoewel eea wel duidelijker gaat worden. Nu wil ik vervolgstap zien te maken maar ik staar me blind om gevens uit twee tabellen met elkaar te vergelijken.

De stituatie is:

Er bestaat een administratie waarin personen rbac geautoriseerd worden volgens het principe Medewerker->Rol->Activiteit-Autorisatie. Dit noemen we de Soll. Daarnaast bestaat er applicatie waarbinnen gebruikers worden geautoriseerd voor bepaalde rechten. Dit noemen we de Ist.

De praktijk is:
Personen stromen in, door en weer uit. Mensen zijn dus in beweging en daardoor veranderd ook de behoefte aan autorisaties.


De wens is:
Periodiek een controle uitvoeren over users met hun rechten (ist) nog steeds overeenkomen met de administratie (soll). Daarvoor importeer ik mbv 3-tal ist-bestanden (autorisatie, user2autorisatie en users) in eigen tabellen.

Maar vanaf dit punt wordt het lastiger... deze bestanden moeten met elkaar vergeleken worden en daar waar verschillen onstaan moet dit zichbaar gaan worden. Wanneer iemand volgens de administratie een autorisatie heeft maar in werkelijkheid niet op het systeem hebben we te maken met een soll-verschil. Heeft iemand een autorisatie binnen de applicatie wel maar niet via de administratie dan hebben we een ist-verschil (mogelijk risico?).

Nu dacht ik de UNION of UNION ALL statement te gebruiken. Zie hieronder. Ik heb een tool FlySpeed SQL Query gebruikt maar die zet all gegevens onder elkaar terwijl voor het gemak de Soll (S) en Ist (I) juist naast elkaar worden getoond en zodoende eenvoudig gegroepeerd overzicht krijg..

De code die ik in elkaar heb geflanst is:


global $connection;

			$where = NULL;
			if (isset($_GET['doelsysteem'])){
				$where = 'WHERE MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
			}
		
		$sqlUitlezen = mysqli_query($connection, "Select
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU As S_OU,
			bigpicture.idm_ou.Z_ORG_DN As S_organisatie,
			Count(bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE) As soll
		From
			bigpicture.idm_autorisatie
			Left Join bigpicture.idm_act2aut On bigpicture.idm_act2aut.MSKEYVALUE_AUTORISATIE = bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE
			Left Join bigpicture.idm_activiteit On bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_act2aut.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role2act On bigpicture.idm_role2act.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role On bigpicture.idm_role.MSKEYVALUE_ROL = bigpicture.idm_role2act.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person2role On bigpicture.idm_person2role.MSKEYVALUE_ROL = bigpicture.idm_role.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person On bigpicture.idm_person.MSKEYVALUE_MEDEWERKER = bigpicture.idm_person2role.MSKEYVALUE_MEDEWERKER
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		
		".$where." 
		
		Group By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		
		Union All
		
		Select
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU As I_OU,
			bigpicture.idm_ou.Z_ORG_DN As I_organisatie,
			Count(bigpicture.ist_aut_swift_productie_cea.Autorisatienaam) As ist
		From
			bigpicture.ist_aut_swift_productie_cea
			Left Join bigpicture.ist_user2aut_swift_productie_cea On bigpicture.ist_user2aut_swift_productie_cea.Autorisatie_naam = bigpicture.ist_aut_swift_productie_cea.Autorisatienaam
			Left Join bigpicture.ist_user_swift_productie_cea On bigpicture.ist_user_swift_productie_cea.gebruikersnaam = bigpicture.ist_user2aut_swift_productie_cea.gebruikersnaam
			Left Join bigpicture.idm_person On bigpicture.idm_person.ACHMEA_EMPLOYEENUMBER = bigpicture.ist_user_swift_productie_cea.Personeelsnummer
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		Group By
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		Order By
			MSKEYVALUE_DOELSYSTEEM Desc,
			S_OU
			
			");


maar helaas is niet erg bruikbaar op deze manier.. iemand een idee? of kan me in een goede richten manoevreren?
Heel beniewd en ik waaardeer nu al jullie tomeloze inzet en voor het meedenken..

[size=xsmall]Toevoeging op 29/11/2020 16:40:22:[/size]

Een andere methode is dat ik heb geprobeerd om 2 select statements apart te definieren. Helaas geeft dat ook niet gewenste restultaat... ik draai maar rondjes en weet niet goed hoe ik dit nu moet aanpakken.



<?php

//------------------------------------------------------------------------ FUNCTIE Soll/Ist vergelijking op systeemniveau
	function soll_ist_systeem_swift_productie_cea(){
		global $connection;

			$where = NULL;
			if (isset($_GET['doelsysteem'])){
				$where = 'WHERE MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
			}
		
		$sqlUitlezenSoll = mysqli_query($connection, "Select
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU As S_OU,
			bigpicture.idm_ou.Z_ORG_DN As S_organisatie,
			Count(bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE) As soll
		From
			bigpicture.idm_autorisatie
			Left Join bigpicture.idm_act2aut On bigpicture.idm_act2aut.MSKEYVALUE_AUTORISATIE = bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE
			Left Join bigpicture.idm_activiteit On bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_act2aut.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role2act On bigpicture.idm_role2act.MSKEYVALUE_ACTIVITEIT = bigpicture.idm_activiteit.MSKEYVALUE_ACTIVITEIT
			Left Join bigpicture.idm_role On bigpicture.idm_role.MSKEYVALUE_ROL = bigpicture.idm_role2act.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person2role On bigpicture.idm_person2role.MSKEYVALUE_ROL = bigpicture.idm_role.MSKEYVALUE_ROL
			Left Join bigpicture.idm_person On bigpicture.idm_person.MSKEYVALUE_MEDEWERKER = bigpicture.idm_person2role.MSKEYVALUE_MEDEWERKER
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
			
		".$where." 
		
		Group By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
		Order By
			bigpicture.idm_autorisatie.MSKEYVALUE_DOELSYSTEEM Desc,
			S_OU
		");
		
		
		$sqlUitlezenIst = mysqli_query($connection, "Select
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU As I_OU,
			bigpicture.idm_ou.Z_ORG_DN As I_organisatie,
			Count(bigpicture.ist_aut_swift_productie_cea.Autorisatienaam) As ist
		From
			bigpicture.ist_aut_swift_productie_cea
			Left Join bigpicture.ist_user2aut_swift_productie_cea On bigpicture.ist_user2aut_swift_productie_cea.Autorisatie_naam = bigpicture.ist_aut_swift_productie_cea.Autorisatienaam
			Left Join bigpicture.ist_user_swift_productie_cea On bigpicture.ist_user_swift_productie_cea.gebruikersnaam = bigpicture.ist_user2aut_swift_productie_cea.gebruikersnaam
			Left Join bigpicture.idm_person On bigpicture.idm_person.ACHMEA_EMPLOYEENUMBER = bigpicture.ist_user_swift_productie_cea.Personeelsnummer
			Left Join bigpicture.idm_ou On bigpicture.idm_ou.MSKEYVALUE_OU = bigpicture.idm_person.ACHMEA_REF_OU
		Group By
			bigpicture.ist_aut_swift_productie_cea.Systeem,
			bigpicture.idm_ou.MSKEYVALUE_OU,
			bigpicture.idm_ou.Z_ORG_DN
			
		");
		
		$sqlAantalSoll = mysqli_num_rows($sqlUitlezenSoll);
				
		echo '<table id="idmdata">';
		echo '<tr>';
		echo '<th colspan="5">Audit: Soll/IST systeemrapport voor '.strtoupper($_GET['doelsysteem']).'</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th>Soll</th>';
		echo '<th>Ist</th>';
		echo '<th align="center">S</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th><font size="-1">OU code</th>';
		echo '<th><font size="-1">Afdeling</th>';
		echo '<th><font size="-1"></th>';
		echo '</tr>';

		if ($sqlAantalSoll > 0){
			while ($sqlDataSoll = mysqli_fetch_assoc($sqlUitlezenSoll)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataSoll['S_OU'].'</td>';
				echo '<td><font size="-2">'.$sqlDataSoll['S_organisatie'].'</td>';
				echo '<td><font size="-2">'.$sqlDataSoll['soll'].'</td>';
				echo '</tr>';
			}
			echo '</table>';
			echo '<br />';

		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
		}
		
		$sqlAantalIst = mysqli_num_rows($sqlUitlezenIst);
				
		echo '<table id="idmdata">';
		echo '<tr>';
		echo '<th colspan="5">Audit: Soll/IST systeemrapport voor '.strtoupper($_GET['doelsysteem']).'</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th>Soll</th>';
		echo '<th>Ist</th>';
		echo '<th align="center">I</th>';
		echo '</tr>';
		echo '<tr>';
		echo '<th><font size="-1">OU code</th>';
		echo '<th><font size="-1">Afdeling</th>';
		echo '<th><font size="-1"></th>';
		echo '</tr>';

		if ($sqlAantalIst > 0){
			while ($sqlDataIst = mysqli_fetch_assoc($sqlUitlezenIst)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataIst['I_OU'].'</td>';
				echo '<td><font size="-2">'.$sqlDataIst['I_organisatie'].'</td>';
				echo '<td><font size="-2">'.$sqlDataIst['ist'].'</td>';
				echo '</tr>';
			}
			echo '</table>';
			echo '<br />';	
		
		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
		}
		
		else{
			echo '<center><a href="javascript:javascript:history.go(-1)"><img src="../img/no-data.png"></a></center>';
		}
		
		
	}

?>
Wat ik van je bericht heb begrepen (en hopelijk klopt dat) is dat je query de juiste resultaten geeft, maar dat je de soll/ist-tabellen naast elkaar wil hebben en dat dat hetgene is waar je mee stoeit.

Voor ik verder iets zeg, wil ik je eerst wijzen op een foutje in je tweede stuk code: op regel 82 en 113 staat de </table> binnen het if-statement. Dat houdt in dat als de query geen resultaten oplevert, de tabel niet wordt afgesloten. De </table> zou dus buiten het if-blok geplaatst moeten worden (of de openingstag en de header-regels moeten ook binnen het if-statement; net wat voor jou logischer is).

Ook hebben beide tabellen hetzelfde id ("idmdata"). Dat mag niet; een id moet uniek zijn op je pagina.

Er zijn verschillende manieren om de tabellen naast elkaar te krijgen. Ik zal hieronder twee van die manieren schetsen, zodat je iets hebt om mee te spelen. Ongetwijfeld zullen er meer oplossingen te bedenken zijn.

1: tabel met tabellen

<table>
 <tr>
  <td>
   [plaats hier je soll-tabel]
  </td>
  <td>
   [plaats hier je ist-tabel]
  </td>
 </tr>
</table>


2: elke tabel in een div en die divs naast elkaar plaatsen

<div id="wrapper">
 <div style="display:inline-block;">
  [plaats hier je soll-tabel]
 </div>
 <div style="display:inline-block;">
  [plaats hier je ist-tabel]
 </div>
</div>


Mijn eigen voorkeur gaat uit naar de tweede manier. De eerste, met geneste tabellen, is meer iets van tien jaar geleden en zou misschien zelfs voor een wat tragere opmaak van je pagina kunnen zorgen.
Als je de gegevens vanuit het SQL-resultaat naast elkaar wilt hebben, is het handig om een FULL OUTER JOIN te doen in plaats van een UNION. Een UNION zet het resultaat van twee queries onder elkaar, en ontdubbelt rijen. Een FULL OUTER JOIN vergelijkt rijen van twee tabellen en/of subqueries.

Voor PostgreSQL, zie https://www.postgresqltutorial.com/postgresql-full-outer-join

MySQL en MariaDB ondersteunen geen FULL OUTER JOIN. Je kunt met een omweg zo'n JOIN wel 'nadoen' met een UNION.
Voorbeeld: https://stackoverflow.com/questions/4796872/how-to-do-a-full-outer-join-in-mysql

Merk op dat je de twee GROUP BY in een UNION wilt verplaatsen buiten de UNION, dus met de UNION in een subquery waarvan je GROUP BY doet op het resultaat van de UNION.
Voorbeeld: https://stackoverflow.com/questions/8572821/group-by-with-union-mysql-select-query

Wanneer de resultaten eenmaal uit de database komen zoals je ze op het scherm wilt hebben, is de vertaalslag van een SQL resultaat naar HTML een stuk simpeler voor, en sneller in PHP.

EDIT: de UNION ALL die je in jouw code hebt, ontdubbelt juist geen rijen maar laat ze allemaal door.
@ Willem vp

Dank je voor dit inzicht en de verbetering. Helemaal top. Eigenlijk is dit voorstel best eenvoudig en die zou ik ook zeker bedacht kunnen hebben wanneer er twee platte lijsten getoond moest tonen. Maar wat ik graag willen, en dat heb ik misschien dan niet goed naar voren laten komen in mijn eerdere bericht is dat de rechterlijst (Ist) vergeleken kan worden met de linkerlijst (soll) en andersom en dan bij verschillen (links of rechts) dit met een kleurtje wordt aangegeven bijv.. Hieronder heb ik de php-functie die ik nu heb in zijn totaliteit geplaats met jouw 2e optie. Dat geeft een prima weergave van de twee tabellen naast elkaar. Maar hoe dan hierbij met het if-statment gewerkt kan worden in de twee verschillende while loops weet ik voorsalnog niet te doorbreken. Misschien dat de optie van Ad Fundum daar uitkomst in bied. Daar ga ik zeker ook nog naar kijken maar daar heb ik meer tijd voor nodig om dat proberen te doorgronden. Maar we blijven stug doorproberen horen hoewel het een puzzelstuk blijf.

Hieronder dan nog de complete code wat als resultaat de twee tabellen naast elkaar op scherm te projecteren:


<?php

//------------------------------------------------------------------------ FUNCTIE Soll/Ist vergelijking op systeemniveau
	function soll_ist_systeem_swift_productie_cea(){
		global $connection;
//--------------------------------------------------------------------------------------------------------------------------------------------------------------- SOLL
		$whereSoll = NULL;
		if (isset($_GET['doelsysteem'])){
			$whereSoll = 'WHERE idm_doelsysteem.MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
		}

		$sqlUitlezenSoll = mysqli_query($connection, "Select
			bigpicture.idm_person.REF_OU AS S_OU,
			Count(bigpicture.idm_autorisatie.MSKEYVALUE_AUTORISATIE) As Soll
		From
			bigpicture.idm_doelsysteem
			Inner Join idm_autorisatie On idm_autorisatie.MSKEYVALUE_DOELSYSTEEM = idm_doelsysteem.MSKEYVALUE_DOELSYSTEEM
			Inner Join idm_act2aut On idm_act2aut.MSKEYVALUE_AUTORISATIE = idm_autorisatie.MSKEYVALUE_AUTORISATIE
			Inner Join idm_role2act On idm_role2act.MSKEYVALUE_ACTIVITEIT = idm_act2aut.MSKEYVALUE_ACTIVITEIT
			Inner Join idm_person2role On idm_person2role.MSKEYVALUE_ROL = idm_role2act.MSKEYVALUE_ROL
			Inner Join idm_person On idm_person.MSKEYVALUE_MEDEWERKER = idm_person2role.MSKEYVALUE_MEDEWERKER
		
		".$whereSoll."  
		
		Group By
			idm_doelsysteem.MSKEYVALUE_DOELSYSTEEM,
			idm_person.REF_OU
	
		");
//--------------------------------------------------------------------------------------------------------------------------------------------------------------- IST
		$whereIst = NULL;
		if (isset($_GET['doelsysteem'])){
			$whereIst = 'WHERE idm_doelsysteem.MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
		}

		$sqlUitlezenIst = mysqli_query($connection, "Select
			idm_person.REF_OU AS I_OU,
			Count(ist_user2aut_swift_productie_cea.Autorisatie_naam) As Ist
		From
			ist_user2aut_swift_productie_cea
			Inner Join idm_person On idm_person.ACCOUNTNAME = ist_user2aut_swift_productie_cea.gebruikersnaam

		Group By
			idm_person.REF_OU
		");
//---------------------------------------------------------------------------------------------------------------------------------------------------------------

			echo'<div id="wrapper">';
			echo'<div style="display:inline-block;">';
			$sqlAantalSoll = mysqli_num_rows($sqlUitlezenSoll);
			echo '<table id="idmdata" width="48%">';
			echo '<th><font size="-1">Soll</th>';
			echo '<th><font size="-1">#</th>';
			echo '</tr>';
				if ($sqlAantalSoll > 0){
				while ($sqlDataSoll = mysqli_fetch_assoc($sqlUitlezenSoll)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataSoll['S_OU'].' </td>';
				echo '<td><font size="-2">'.$sqlDataSoll['Soll'].' </td>';
				echo '</tr>';
				}
				}else{
				echo '<center>GEEN SOLL GEGEVENS GEVONDEN!</center>';
				}
			echo '</table>';
			echo'</div>';

			echo'<div style="display:inline-block;">';
			$sqlAantalIst = mysqli_num_rows($sqlUitlezenIst);
			echo '<table id="idmdata" width="48%">';
			echo '<th align="right"><font size="-1">Ist</th>';
			echo '<th><font size="-1">#</th>';
			echo '</tr>';	
				if ($sqlAantalIst > 0){
				while ($sqlDataIst = mysqli_fetch_assoc($sqlUitlezenIst)){		
				echo '<tr>';		
				echo '<td><font size="-2">'.$sqlDataIst['I_OU'].' </td>';
				echo '<td><font size="-2">'.$sqlDataIst['Ist'].' </td>';
				echo '</tr>';
				}			
				}else{
				echo '<center>GEEN IST GEGEVENS GEVONDEN!</center>';
			}		
			echo '</table>';
			echo'</div>';
			echo'</div>';

//---------------------------------------------------------------------------------------------------------------------------------------------------------------		
		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
}

?>
Gebaseerd op het OT:

SELECT
    idm_ou.MSKEYVALUE_OU,
    idm_ou.Z_ORG_DN,
    COUNT(DISTINCT idm_person2role.MSKEYVALUE_MEDEWERKER) soll,
    COUNT(DISTINCT ist_user_swift_productie_cea.Personeelsnummer) ist
FROM
    idm_person p
INNER JOIN
    idm_ou ON idm_ou.MSKEYVALUE_OU = idm_person.ACHMEA_REF_OU
LEFT JOIN
    (idm_person2role
    INNER JOIN
        (SELECT 
            DISTINCT role2act.MSKEYVALUE_ROL
        FROM
            idm_autorisatie
        INNER JOIN
            idm_act2aut ON idm_act2aut.MSKEYVALUE_AUTORISATIE = idm_autorisatie.MSKEYVALUE_AUTORISATIE
        INNER JOIN
            idm_role2act ON idm_role2act.MSKEYVALUE_ACTIVITEIT =idm_act2aut.MSKEYVALUE_ACTIVITEIT    
        WHERE
            idm_autorisatie.MSKEYVALUE_DOELSYSTEEM = 'waarde van $_GET'
        ) soll_t ON soll_t.MSKEYVALUE_ROL = idm_person2role.MSKEYVALUE_ROL
    ) ON idm_person2role.MSKEYVALUE_MEDEWERKER = idm_person.MSKEYVALUE_MEDEWERKER
LEFT JOIN
    (ist_user_swift_productie_cea
    INNER JOIN
        (SELECT
            DISTINCT ist_user2aut_swift_productie_cea.gebruikersnaam
        FROM
            ist_aut_swift_productie_cea
        INNER JOIN
            ist_user2aut_swift_productie_cea ON ist_user2aut_swift_productie_cea.Autorisatie_naam = ist_aut_swift_productie_cea.Autorisatienaam
        ) ist_t ON ist_t.gebruikersnaam = ist_user_swift_productie_cea.gebruikersnaam
    ) ON idm_person.ACHMEA_EMPLOYEENUMBER = ist_user_swift_productie_cea.Personeelsnummer
GROUP BY
    idm_ou.MSKEYVALUE_OU,
    idm_ou.Z_ORG_D


Dit telt het aantal personen dat een autorisatie heeft op soll en/of ist per afdeling
Sorry Ger,
deze code werkt niet resulteert niet in een resultaat.. komt geen melding en bij wat dingen uitproberen krijg ik afhankelijke wat ik aan het proberen ben foutmeldingen... ergens klopt er niet in... maar ga het proberen of ik het kan achterhalen waar het 'm in zit. Dit zal zeker niet voor komende zondag zijn...... Maar toch onwijs bedankt voor de reactie
Even een opmerking: Waarom die hele echo-put in een script?
Is dit niet beter leesbaar? Je ziet zo beter onderscheid tussen HTML en PHP, en je hoeft niet meer te escapen.

Verder zijn font-tags verouderd, en kan je de opmaak prima in CSS bewerkstelligen.


<div style="display:inline-block;">';
<?php
$sqlAantalSoll = mysqli_num_rows($sqlUitlezenSoll);
?>
<table id="idmdata" width="48%">
	<th><font size="-1">Soll</th>
	<th><font size="-1">#</th>
	</tr>
<?php               
if ($sqlAantalSoll > 0){
                while ($sqlDataSoll = mysqli_fetch_assoc($sqlUitlezenSoll)){        
                ?>
		<tr>       
                	<td><font size="-2"><?=$sqlDataSoll['S_OU'];?></td>
                	<td><font size="-2"><?=$sqlDataSoll['Soll'];?></td>
                </tr>
		<?php
                }
}else{
	echo '<center>GEEN SOLL GEGEVENS GEVONDEN!</center>';
}
?>
	</table>
</div>

@DHU
Op regel 7 in de SQL staat een alias p achter FROM idm_person (macht der gewoonte) dit moet je iig weghalen.

Wel vreemd dat je dan geen melding krijgt als:

Error( 1054 ) 42S22: "Unknown column 'idm_person.MSKEYVALUE_MEDEWERKER' in 'on clause'"


[size=xsmall]Toevoeging op 05/12/2020 11:12:26:[/size]

@DHU
Op regel 7 in de SQL staat een alias p achter FROM idm_person (macht der gewoonte) dit moet je iig weghalen.

Wel vreemd dat je dan geen melding krijgt als:

Error( 1054 ) 42S22: "Unknown column 'idm_person.MSKEYVALUE_MEDEWERKER' in 'on clause'"
- Ariën - op 05/12/2020 10:51:49

Even een opmerking: Waarom die hele echo-put in een script?
Is dit niet beter leesbaar? Je ziet zo beter onderscheid tussen HTML en PHP, en je hoeft niet meer te escapen.

Verder zijn font-tags verouderd, en kan je de opmaak prima in CSS bewerkstelligen.


<div style="display:inline-block;">';
<?php
$sqlAantalSoll = mysqli_num_rows($sqlUitlezenSoll);
?>
<table id="idmdata" width="48%">
	<th><font size="-1">Soll</th>
	<th><font size="-1">#</th>
	</tr>
<?php               
if ($sqlAantalSoll > 0){
                while ($sqlDataSoll = mysqli_fetch_assoc($sqlUitlezenSoll)){        
                ?>
		<tr>       
                	<td><font size="-2"><?=$sqlDataSoll['S_OU'];?></td>
                	<td><font size="-2"><?=$sqlDataSoll['Soll'];?></td>
                </tr>
		<?php
                }
}else{
	echo '<center>GEEN SOLL GEGEVENS GEVONDEN!</center>';
}
?>
	</table>
</div>







eigenlijk is dat iets wat ik aangeleerd heb.. :-)
die html-tages was probeersel... opmaak verloopt ook voor het leeuwendeel via css hoor maar soms wil ik voor de probeer even daar van afstappen maar hoort daar ook niet. klopt.

[size=xsmall]Toevoeging op 05/12/2020 16:49:57:[/size]

@Ger

Die p als alias verwijderd... en een N toegevoegd aan de laaste GROUB BY maar ben er dan nog niet mee... Nu krijg ik wel een foutmelding.

Deze luidt:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\BP\members\functies\audit\soll_ist_systeem_swift_productie_cea.php on line 53


voor de volledig hieronder nog de gehele code.

[size=xsmall]Toevoeging op 05/12/2020 16:50:45:[/size]


<?php
	function soll_ist_systeem_swift_productie_cea(){
		global $connection;

		$where = NULL;
		if (isset($_GET['doelsysteem'])){
			$where = 'WHERE idm_doelsysteem.MSKEYVALUE_DOELSYSTEEM = "'.mysqli_real_escape_string($connection, $_GET['doelsysteem']).'"';
		}

		$sqlUitlezen = mysqli_query($connection, "SELECT
			idm_ou.MSKEYVALUE_OU,
			idm_ou.Z_ORG_DN,
			COUNT(DISTINCT idm_person2role.MSKEYVALUE_MEDEWERKER) soll,
			COUNT(DISTINCT ist_user_swift_productie_cea.Personeelsnummer) ist
		FROM
			idm_person 
		INNER JOIN
			idm_ou ON idm_ou.MSKEYVALUE_OU = idm_person.ACHMEA_REF_OU
		LEFT JOIN
			(idm_person2role
			INNER JOIN
				(SELECT
					DISTINCT role2act.MSKEYVALUE_ROL
				FROM
					idm_autorisatie
				INNER JOIN
					idm_act2aut ON idm_act2aut.MSKEYVALUE_AUTORISATIE = idm_autorisatie.MSKEYVALUE_AUTORISATIE
				INNER JOIN
					idm_role2act ON idm_role2act.MSKEYVALUE_ACTIVITEIT = idm_act2aut.MSKEYVALUE_ACTIVITEIT    
				
		".$where."
				
				) soll_t ON soll_t.MSKEYVALUE_ROL = idm_person2role.MSKEYVALUE_ROL
			) ON idm_person2role.MSKEYVALUE_MEDEWERKER = idm_person.MSKEYVALUE_MEDEWERKER
		LEFT JOIN
			(ist_user_swift_productie_cea
			INNER JOIN
				(SELECT
					DISTINCT ist_user2aut_swift_productie_cea.gebruikersnaam
				FROM
					ist_aut_swift_productie_cea
				INNER JOIN
					ist_user2aut_swift_productie_cea ON ist_user2aut_swift_productie_cea.Autorisatie_naam = ist_aut_swift_productie_cea.Autorisatienaam
				) ist_t ON ist_t.gebruikersnaam = ist_user_swift_productie_cea.gebruikersnaam
			) ON idm_person.ACHMEA_EMPLOYEENUMBER = ist_user_swift_productie_cea.Personeelsnummer
		GROUP BY
			idm_ou.MSKEYVALUE_OU,
			idm_ou.Z_ORG_DN
		");


			echo'<div style="display:inline-block;">';
			$sqlAantal = mysqli_num_rows($sqlUitlezen);
			echo '<table id="idmdata" width="48%">';
			echo '<th>Afdeling</th>';
			echo '<th>S</th>';
			echo '<th>I</th>';
			echo '</tr>';
				if ($sqlAantal > 0){
				while ($sqlData = mysqli_fetch_assoc($sqlUitlezen)){		
				echo '<tr>';		
				echo '<td><font size="-1">'.$sqlData['MSKEYVALUE_OU'].' </td>';
				echo '<td><font size="-1">'.$sqlData['soll'].' </td>';
				echo '<td><font size="-1">'.$sqlData['ist'].' </td>';
				echo '</tr>';
				}
				}else{
				echo '<center>GEEN SOLL/IST GEGEVENS GEVONDEN!</center>';
				}
			echo '</table>';
			echo'</div>';
		echo '<button class="button1" style="vertical-align:middle"><span><div id="button"><a href="javascript:javascript:history.go(-1)">&nbsp;&nbsp;Vorige pagina</a></div></span></button>';	
}
?>
Wat jij aangeeft is een PHP error, dat zegt niet zo veel behalve dat er zeer waarschijnlijk ergens een fout in de query zit. Om die te achterhalen:

<?php
if (!$sqlUitlezen) {
	echo mysqli_error($connection);
}
else {
	// toon gegevens
}
?>

Ger van Steenderen op 05/12/2020 19:46:23

Wat jij aangeeft is een PHP error, dat zegt niet zo veel behalve dat er zeer waarschijnlijk ergens een fout in de query zit. Om die te achterhalen:

<?php
if (!$sqlUitlezen) {
	echo mysqli_error($connection);
}
else {
	// toon gegevens
}
?>





thnx.... zat idd een verwijzing naar een tabel die die niet bestond (oopsie).... issue herstel... de tabellen lijken gevonden maar krijg nu een andere een melding over een unknown column in field list. Dus ben weer opnieuw aan googlen naar deze melding

Reageren