Hallo,
pas een nieuwe versie online geplaatst en ik stuit op een raar probleem.
Wanneer ik de pagina's bekijk toont hij slechts het stuk tot aan de div met id container.
Ook in mijn broncode lijkt daar alles te stoppen.
Wanneer ik het bestand echter open in mijn editor zie ik alle code staan.
Heeft iemand enig idee?
Deze pagina's zijn eerst gemaakt op mijn wampserver en daar lijkt alles correct te werken.
Alvast bedankt!

<doctype="html">
<!--key AIzaSyDqW0f8UQmlrPinFnhTvNeIOK4GFam65FM -->
<!--lat 50.967599 lng 3.529872 -->
<?php
include('connectie.php');
include('funkennisbank.php');
include('funtabbladen.php');
$ipageid=4;
?>
<head>
<title>Route - Schaakclub Karpov Deinze</title>
<link rel="stylesheet" media="(max-width: 640px)" href="./css/smalheader.css">
<link rel="stylesheet" media="(min-width: 640px)" href="./css/basisheader.css">
<link rel="stylesheet" media="(max-width: 640px)" href="./css/smal.css">
<link rel="stylesheet" media="(min-width: 640px)" href="./css/basis.css">
<link rel="stylesheet" type="text/css" href="./css/tabbladen.css">
</head>
<body>
	<?php
	include('header.php');
	?>
	<div id="container">
		<?php
		echo tabbladen($conn,$ipageid);
		?>
		<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2512.626251858516!2d3.5276835161138718!3d50.96761405784568!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47c36b57d9022beb%3A0x86ca9263f37b287f!2sBerkenlaan+52%2C+9800+Deinze!5e0!3m2!1snl!2sbe!4v1458138511430"
			width="800" height="600" frameborder="0" style="border:0" allowfullscreen>
		</iframe>
		<br><br>
	<!--sluiten container-->		
	</div>
<?php
include('footer.php');
?>
</body>
</html>
Daar kun je uit afleiden dat er in ieder geval een connectie met je database is.

Gaan we verder kijken.

Dump $resulttabbladen eens:
<?php
var_dump($resulttabbladen);
?>

Indien dit false retourneert is er iets mis met je query. Bijvoorbeeld de vorm (syntax) is verkeerd of kolomnamen zijn verkeerd gespeld.
Heb met de functie get_defined_vars() al mijn variabelen uitgeprint. Dit geeft volgende resultaat:

Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [host] => mijn host [user] => mijn user [password] => mijn paswoord [database_karpovdeinze] => mijn database [conn] => mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 0 [host_info] => karpovdeinze.be.mysql via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.5.47-MariaDB-1~wheezy [server_version] => 50547 [stat] => Uptime: 2830400 Threads: 8 Questions: 978592298 Slow queries: 11446 Opens: 15120761 Flush tables: 2 Open tables: 8192 Queries per second avg: 345.743 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 17317333 [warning_count] => 0 ) [ipageid] => 4 )

Nu vraag ik me af waar mijn andere variabelen zijn gebleven?
Welke andere variabelen? En maakt dit uit voor het huidige vraagstuk? Bij debuggen is het zaak dat je enkel relevante zaken bekijkt en niet *alles*, want dan zie je vaak door de bomen het bos niet meer. Volg gewoon het eerder besproken kruimelpad en zie eerst eens waar dat je brengt.
Dit heb ik gedaan. De variabele $resulttabbladen gaf NULL en dan ben ik de andere gaan onderzoeken en deze gaven ook null. Vandaar dat ik bovenstaande deed.
Maar nu snap ik wel niet waar dit op wijst.
De variabele $resulttabbladen bestaat enkel binnen de functie tabbladen.

Als je deze variabele wilt inspecteren zul je dat dus ook binnen die functie moeten doen, daarbuiten bestaat deze niet.
Heb beide result variabelen nagezien en beide geven null.
Vermoedelijk iets mis met de query of ben ik fout?
Dus pas je foutafhandeling toe op je query. Nogmaals: je laat nu gewoon de applicatie altijd doorlopen, dat wil je niet.
Kortom:
<?php
if (!$conn->query(....)) {
// haal hier je foutmelding uit $conn->error
}
?>
De problemen duiken vooral op bij een query die geen records als resultaat geeft.
Wat denken jullie hiervvan?
<?php
if (false === $query)
{
echo $conn -> error();
}
else
{
//correcte query
if (NULL === $result)
{
//code om uit te voeren indien er geen records zijn
}
}
?>
Of geeft die lege resultaatset altjd false en hoe vang je dit dan p?
Uit de documentatie van de query() methode:
or successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.

Ook als er geen resultaten zijn.

Ik zou foutafhandeling apart, en eenmalig, programmeren en niet rechtstreeks in je applicatie-code zetten, en foutmeldingen ergens (anders) opvangen. Anders bestaat een groot deel van je code uit extra if-constructies en het dumpen van foutmeldingen waar (eind)gebruikers toch niets aan hebben. Plus je doet elke keer hetzelfde, indien iets false of NULL of whatever is staak je het programma. Dit kun je elders, en eenmalig, oplossen. Bijvoorbeeld door het schrijven van een of enkele wrapper classes. Deze kunnen je veel werk besparen (noot: deze wrappers zijn ondertussen weer wat veranderd, maar de versie die daar staat werkt volgens mij ook prima en kan sowieso dienen als inspiratie).

Wat je moet doen als er geen resultaten zijn ($result->num_rows == 0) is applicatie-specifiek. Dit zou je wel rechtsreeks in je code kunnen regelen omdat je daar ook moet besluiten wat er dan moet gebeuren.

Reageren