Hallo allemaal,

Ik ben bezig met het volgende:

Bepaalde links weergeven wanneer een gebruiker is ingelogd en weer andere links weergeven als er niemand is ingelogd. Echter, ik krijg een vreemde syntax foutmelding.

Foutmelding: Parse error: syntax error, unexpected '{' in includes/header.php on line 16

Verder heb ik andere vragen mbt header.php:
Moet ik de HTML-specialchars in het menu encoden?
Aangezien het bestand header.php in de map includes zit moet ik een niveau hoger wil komen bij andere bestanden en moet ik in dit geval php path gebruiken?

Alvast bedankt voor het meedenken.

Code header.php

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 'On');
?>
<!DOCTYPE html>
<html>
<head>
<title>Hawar Co - Pharmacy Control Management</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
    <div id="wrapper">
        <div id="header"></div>
        <div id="navigation">
            <div id="nav">
				<?php (isset($_SESSION['user_id'])) {
					echo "<ul>
					  <li><a href='../index.php'>Home</a></li>
					  <li><a href='../medicines.php'>Medicines &raquo;</a>
						<ul>
						  <li><a href='../medicines.php'>Medicines</a>
							<ul>
							  <li><a href='../med_insert.php'>Insert Medicines</a></li>
							</ul>
						  </li>
						  <li><a href='../medicinescompanies.php'>Medicines companies</a>
							<ul>
							  <li><a href='../medcom_insert.php'>Insert medicines company</a></li>
							</ul>
						  </li>
						  <li><a href='../medicinescountries.php'>Medicines countries</a>
							<ul>
							  <li><a href='../medcoun_insert.php'>Insert medicines countries</a></li>
							</ul>
						  </li>
						 </ul>
					  </li>
					<li><a href='../patients.php'>Patients</a>
						<ul>
						  <li><a href='../insert_patient.php'>Insert patient</a></li>
						</ul>
					</li>
					<li><a href='../medicinesfinance.php'>Finance</a></li>
					<li><a href='../medicinesreports.php'>Reports</a></li>";
					} else { echo "<li><a href='../contact.php'>Contact</a></li></ul>"; }?>
			  </div>
			  <div id="profile"><p></p></div>
        </div>
        <div id="contentliquid"><div id="content">
Dan kan je om die <div id="header"></div> toch ook gewoon een dergelijk PHP-blok heen plaatsen?
- Ariën - op 30/01/2017 15:16:55

Dan kan je om die <div id="header"></div> toch ook gewoon een dergelijk PHP-blok heen plaatsen?

Wat voor PHP-code zou ik daar moeten plaatsen, denk je? Eentje zoals
if (isset) { echo } 


echo hoeft niet eens, als je het goed leesbaar wilt houden.
het is gewoon hetzelfde principe als je daaronder doet.
Misschien is het nuttig als je eerst eens uitstippelt wat je wilt bereiken, en dan gaat begrijpen waarom de code die je al hebt doet wat het doet. Dan kun je misschien zelf ook bedenken hoe je dingen kunt aanpakken.
- Ariën - op 30/01/2017 19:18:14

echo hoeft niet eens, als je het goed leesbaar wilt houden.
het is gewoon hetzelfde principe als je daaronder doet.

Inmiddels ben ik aan de slag gegaan, helaas zonder resultaat:

<?php if (isset (?><div id="header"></div><?php )){} ?>

<?php if (isset(?><div id="header"></div><?php )){?><div id="header"></div><?php } ?>

<?php if (isset(?><div id="header"></div><?php )){ echo " ?><div id="header"></div><?php } ?>


Ik weet dat je dat je aangaf geen echo te gebruiken, maar heb het toch geprobeerd en helaas zonder resultaat.

Via: http://phpcodechecker.com/ krijg ik telkens een syntax error
Er klopt niks van. Verdiep je eens, zoals Ben zegt, in de werking van de functies. En met name wat [php]isset[/php] doet.

Jij wilt dus het zelfde bereiken als die andere code? In dat geval staat het antwoord al op je beeld :-)
Er is een reden dat ik zeg wat ik zeg, namelijk dat je dezelfde fout keer op keer maakt, en je wordt keer op keer op exact hetzelfde gewezen. Een if heeft een bepaalde structuur in PHP, en die kun je uiteraard niet zomaar halverwege stoppen om met HTML verder te gaan.
- Ariën - op 30/01/2017 20:26:35

Er klopt niks van. Verdiep je eens, zoals Ben zegt, in de werking van de functies. En met name wat [php]isset[/php] doet.

Jij wilt dus het zelfde bereiken als die andere code? In dat geval staat het antwoord al op je beeld :-)

Hallo - Ariën -,

Je hebt helemaal gelijk. Het antwoord lag voor me neus, alleen ik dacht veel te moeilijk. Overigens, ik ben nog een beginner op het gebied van PHP, maar over het gebruik van isset heb ik veel gelezen en oefeningen op gedaan hoor...;-)

Het probleem heb ik nu opgelost door de volgende code:


<?php if (isset($_SESSION['user_id'])){ ?><div id="header"></div><?php } else {?><div id="header"></div><?php } ?>

Dus, hoe dan ook de bovenstaande code is altijd waar.
Het probleem waar ik nu tegen aan loop is dat de header foto/achtergrond niet wordt weergegeven op login pagina, enkel het menu voor niet ingelogde gebruiker.
Ik ga dit eerst zelf verder onderzoeken of dit probleem bijv bij andere pagina's ook voorkomt en hopelijk kom ik snel met een update ;-)

[size=xsmall]Toevoeging op 31/01/2017 09:24:43:[/size]

Ben van Velzen op 30/01/2017 20:31:14

Er is een reden dat ik zeg wat ik zeg, namelijk dat je dezelfde fout keer op keer maakt, en je wordt keer op keer op exact hetzelfde gewezen. Een if heeft een bepaalde structuur in PHP, en die kun je uiteraard niet zomaar halverwege stoppen om met HTML verder te gaan.

Hallo Ben,

Je hebt helemaal gelijk wat betreft je feedback. Het concept begrijpen is uiteraard het belangrijkste in programmering.
Zoals ik eerder aangaf, ben ik een beginner op het gebied van PHP door een aantal video tutorial te volgen en online tutorial. En, blijkbaar wordt het concept niet helemaal duidelijk toegelicht.
Welk boek of een tutorial zou je aanraden om het concept beter te begrijpen?

Alvast bedankt.

Reageren