Hallo,

Ik ben zelf nog zeer onervaren met PHP. En zit met een klein probleem met een script.
Het probleem komt voor op de pagina van mijn website.
http://www.hgwow.nl/guilds/guild-overzicht

Bij het laden van een pagina krijg ik bovenaan de melding:
Warning: Invalid argument supplied for foreach() in /home/user/domains/hgwow.nl/public_html/plugins/raidplanner/wow/wow.php on line 66

Het betreft het ophalen van de data "races".

Hieronder staat het volledige script. Hopelijk is er iemand die me zou kunnen helpen bij het opsporen van de fout.

<?php
/*------------------------------------------------------------------------
# WoW Armory Sync Plugin
# com_raidplanner - RaidPlanner Component
# ------------------------------------------------------------------------
# author Taracque
# copyright Copyright (C) 2011 Taracque. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Website: http://www.taracque.hu/raidplanner
-------------------------------------------------------------------------*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

class PlgRaidplannerWow extends JPlugin
{
private $guild_id = 0;
private $rp_params = array();
private $guild_name = '';

public function onRPInitGuild( $guildId, $params )
{
$db = JFactory::getDBO();
$query = "SELECT guild_name,guild_id FROM #__raidplanner_guild WHERE guild_id=" . intval($guildId);
$db->setQuery($query);
if ( $data = $db->loadObject() )
{
$this->guild_name = $data->guild_name;
$this->guild_id = $data->guild_id;
$this->rp_params = $params;
} else {
$this->guild_id = 0;
}
}

public function onRPBeforeSync()
{
return true;
}

public function onRPSyncGuild( $showOkStatus = false, $syncInterval = 4, $forceSync = false )
{
$db = JFactory::getDBO();

$query = "SELECT IF(lastSync IS NULL,-1,DATE_ADD(lastSync, INTERVAL " . intval( $syncInterval ) . " HOUR)-NOW()) AS needSync,guild_name FROM #__raidplanner_guild WHERE guild_id=" . intval($this->guild_id);
$db->setQuery($query);
if ( (!$forceSync) && ( !($needsync = $db->loadResult()) || ( $needsync>=0 ) ) )
{
/* Sync not needed, exit */
return false;
}

JLoader::register('RaidPlannerHelper', JPATH_ADMINISTRATOR . '/components/com_raidplanner/helper.php' );

$region = $this->rp_params['guild_region'];
$realm = $this->rp_params['guild_realm'];

/* load database ids race array */
$races = array();
$query = "SELECT race_id, race_name FROM #__raidplanner_race";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'race_name' );

$url = "http://" . $region . ".battle.net/api/wow/data/character/races";
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );

foreach ($tmp['races'] as $race) {
$races[ $race['id'] ] = $tmp1[ $race['name'] ]['race_id'];
}

/* load database ids race array */
$classes = array();
$query = "SELECT class_id, class_name FROM #__raidplanner_class";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'class_name' );

$url = "http://" . $region . ".battle.net/api/wow/data/character/classes";
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );

foreach ($tmp['classes'] as $class) {
$classes[ $class['id'] ] = $tmp1[ $class['name'] ]['class_id'];
}

$url = "http://" . $region . ".battle.net/api/wow/guild/";
$url .= rawurlencode( $realm ) . "/";
$url .= rawurlencode( $this->guild_name );
$url = $url . "?fields=members";

$data = json_decode( RaidPlannerHelper::downloadData( $url ) );
if (function_exists('json_last_error')) {
if (json_last_error() != JSON_ERROR_NONE)
{
JError::raiseWarning('100','ArmorySync data decoding error');
return null;
}
}
if (isset($data->status) && ($data->status=="nok"))
{
JError::raiseWarning('100','ArmorySync failed');
return null;
}

if (($this->guild_name == @$data->name) && ($data->name!=''))
{
$params = array(
'achievementPoints' => $data->achievementPoints,
'side' => ($data->side==0)?"Alliance":"Horde",
'emblem' => get_object_vars( $data->emblem ),
'link' => "http://" . $region . ".battle.net/wow/guild/" . rawurlencode($realm) . "/" . rawurlencode($data->name) ."/",
'char_link' => "http://" . $region . ".battle.net/wow/character/%s/%s/advanced",
'guild_realm' => $data->realm,
'guild_region' => $region,
'guild_level' => $data->level
);

$this->rp_params = array_merge( $this->rp_params, $params );

$query = "UPDATE #__raidplanner_guild SET
guild_name=".$db->Quote($data->name).",
params=".$db->Quote(json_encode($params)).",
lastSync=NOW()
WHERE guild_id=".intval($this->guild_id);
$db->setQuery($query);
$db->query();

/* if we atleast one member in listed */
if ( (is_array($data->members)) && (count($data->members) > 0) ) {
/* detach characters from guild */
$query = "UPDATE #__raidplanner_character SET guild_id=0 WHERE guild_id=".intval($this->guild_id)."";
$db->setQuery($query);
$db->query();

foreach($data->members as $member)
{
// check if character exists
$query = "SELECT character_id FROM #__raidplanner_character WHERE char_name LIKE BINARY ".$db->Quote($member->character->name)."";
$db->setQuery($query);
$char_id = $db->loadResult();
// not found insert it
if (!$char_id) {
$query="INSERT INTO #__raidplanner_character SET char_name=".$db->Quote($member->character->name)."";
$db->setQuery($query);
$db->query();
$char_id=$db->insertid();
}
$query = "UPDATE #__raidplanner_character SET class_id='" . $classes[ intval($member->character->class) ] . "'
,race_id='" . $races[ intval($member->character->race) ] . "'
,gender_id='" . (intval($member->character->gender) + 1) . "'
,char_level='" . intval($member->character->level) . "'
,rank='" . intval($member->rank) . "'
,guild_id='" . intval($this->guild_id) . "'
WHERE character_id=" . $char_id;
$db->setQuery($query);
$db->query();
}

/* delete all guildless characters */
$query = "DELETE FROM #__raidplanner_character WHERE guild_id=0";
$db->setQuery($query);
$db->query();
}

if ($showOkStatus)
{
JError::raiseNotice('0', 'ArmorySync successed');
}
} else {
JError::raiseWarning('100', 'ArmorySync data doesn\'t match');
}
}

public function onRPGetCharacterLink( $char_name )
{
return sprintf($this->rp_params['char_link'], rawurlencode($this->rp_params['guild_realm']), rawurlencode($char_name) ) . '" target="_blank';
}

public function onRPGetGuildHeader()
{
$document = JFactory::getDocument();
$document->addScript('media/com_raidplanner/wow_tabards/guild-tabard.js');

$header = array();
$header[] = '<canvas id="rp_guild_tabard" width="120" height="120" style="float:right;"></canvas>';
$header[] = '<script type="text/javascript">';
$header[] = ' window.addEvent("domready",function(){';
$header[] = ' var tabard = new GuildTabard("rp_guild_tabard", {';
$header[] = ' "ring": "' . $this->rp_params['side'] . '",';
$header[] = ' "bg": [ 0, "' . $this->rp_params['emblem']['backgroundColor'] . '" ], ';
$header[] = ' "border": [ "' . $this->rp_params['emblem']['border'] . '", "' . $this->rp_params['emblem']['borderColor'] . '" ], ';
$header[] = ' "emblem": [ "' . $this->rp_params['emblem']['icon'] . '", "' . $this->rp_params['emblem']['iconColor'] . '" ], ';
$header[] = ' }, "' . JURI::base() . 'media/com_raidplanner/wow_tabards/");';
$header[] = ' });';
$header[] = '</script>';
$header[] = '<h2><a href="' . $this->rp_params['link'] . '" target="_blank">' . $this->guild_name . '</a></h2>';
$header[] = '<strong>' . JText::_('COM_RAIDPLANNER_LEVEL') . " " . $this->rp_params['guild_level'] . " " . $this->rp_params['side'] . " " . JText::_('COM_RAIDPLANNER_GUILD') . '<br />';
$header[] = $this->rp_params['guild_realm'] . " - " . strtoupper($this->rp_params['guild_region']) . '</strong>';

return implode("\n", $header);
}

public function onRPLoadCSS()
{
$document = JFactory::getDocument();
$document->addStyleSheet( 'media/com_raidplanner/css/raidplanner_wow.css' );

return true;
}

}
Wat doet: var_dump($tmp); na lijn 64?
- Aar - op 25/12/2014 21:30:06

Wat doet: var_dump($tmp); na lijn 64?


De warning is verdwenen. Maar de races worden nog niet weergegeven (althans bij 1 van de twee guilds).
http://www.hgwow.nl/guilds/guild-overzicht

Ik heb een vergelijking gemaakt met de code eronder, die van classes, en ze lijken identiek, behalve dan uiteraard de verschillende data zoektermen. Die van Classes werkt namelijk wel volledig foutloos. Ook de link naar de verschillende races werkt prima. https://eu.battle.net/api/wow/data/character/races

Is er iets waar ik overheen kijk of mis?

EDIT:

Hij geefr nu een volgende foutmelding, namelijk:

NULL
Warning: Invalid argument supplied for foreach() in /home/user/domains/hgwow.nl/public_html/plugins/raidplanner/wow/wow.php on line 67



Hier nogmaals het script, maar dan aangepast met de tip van Aar.

<?php
/*------------------------------------------------------------------------
# WoW Armory Sync Plugin
# com_raidplanner - RaidPlanner Component
# ------------------------------------------------------------------------
# author Taracque
# copyright Copyright (C) 2011 Taracque. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Website: http://www.taracque.hu/raidplanner
-------------------------------------------------------------------------*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

class PlgRaidplannerWow extends JPlugin
{
private $guild_id = 0;
private $rp_params = array();
private $guild_name = '';

public function onRPInitGuild( $guildId, $params )
{
$db = JFactory::getDBO();
$query = "SELECT guild_name,guild_id FROM #__raidplanner_guild WHERE guild_id=" . intval($guildId);
$db->setQuery($query);
if ( $data = $db->loadObject() )
{
$this->guild_name = $data->guild_name;
$this->guild_id = $data->guild_id;
$this->rp_params = $params;
} else {
$this->guild_id = 0;
}
}

public function onRPBeforeSync()
{
return true;
}

public function onRPSyncGuild( $showOkStatus = false, $syncInterval = 4, $forceSync = false )
{
$db = JFactory::getDBO();

$query = "SELECT IF(lastSync IS NULL,-1,DATE_ADD(lastSync, INTERVAL " . intval( $syncInterval ) . " HOUR)-NOW()) AS needSync,guild_name FROM #__raidplanner_guild WHERE guild_id=" . intval($this->guild_id);
$db->setQuery($query);
if ( (!$forceSync) && ( !($needsync = $db->loadResult()) || ( $needsync>=0 ) ) )
{
/* Sync not needed, exit */
return false;
}

JLoader::register('RaidPlannerHelper', JPATH_ADMINISTRATOR . '/components/com_raidplanner/helper.php' );

$region = $this->rp_params['guild_region'];
$realm = $this->rp_params['guild_realm'];

/* load database ids race array */
$races = array();
$query = "SELECT race_id, race_name FROM #__raidplanner_race";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'race_name' );

$url = "http://" . $region . ".battle.net/api/wow/data/character/races";
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );
var_dump($tmp);

foreach ($tmp['races'] as $race) {
$races[ $race['id'] ] = $tmp1[ $race['name'] ]['race_id'];
}

/* load database ids race array */
$classes = array();
$query = "SELECT class_id, class_name FROM #__raidplanner_class";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'class_name' );

$url = "http://" . $region . ".battle.net/api/wow/data/character/classes";
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );

foreach ($tmp['classes'] as $class) {
$classes[ $class['id'] ] = $tmp1[ $class['name'] ]['class_id'];
}

$url = "http://" . $region . ".battle.net/api/wow/guild/";
$url .= rawurlencode( $realm ) . "/";
$url .= rawurlencode( $this->guild_name );
$url = $url . "?fields=members";

$data = json_decode( RaidPlannerHelper::downloadData( $url ) );
if (function_exists('json_last_error')) {
if (json_last_error() != JSON_ERROR_NONE)
{
JError::raiseWarning('100','ArmorySync data decoding error');
return null;
}
}
if (isset($data->status) && ($data->status=="nok"))
{
JError::raiseWarning('100','ArmorySync failed');
return null;
}

if (($this->guild_name == @$data->name) && ($data->name!=''))
{
$params = array(
'achievementPoints' => $data->achievementPoints,
'side' => ($data->side==0)?"Alliance":"Horde",
'emblem' => get_object_vars( $data->emblem ),
'link' => "http://" . $region . ".battle.net/wow/guild/" . rawurlencode($realm) . "/" . rawurlencode($data->name) ."/",
'char_link' => "http://" . $region . ".battle.net/wow/character/%s/%s/advanced",
'guild_realm' => $data->realm,
'guild_region' => $region,
'guild_level' => $data->level
);

$this->rp_params = array_merge( $this->rp_params, $params );

$query = "UPDATE #__raidplanner_guild SET
guild_name=".$db->Quote($data->name).",
params=".$db->Quote(json_encode($params)).",
lastSync=NOW()
WHERE guild_id=".intval($this->guild_id);
$db->setQuery($query);
$db->query();

/* if we atleast one member in listed */
if ( (is_array($data->members)) && (count($data->members) > 0) ) {
/* detach characters from guild */
$query = "UPDATE #__raidplanner_character SET guild_id=0 WHERE guild_id=".intval($this->guild_id)."";
$db->setQuery($query);
$db->query();

foreach($data->members as $member)
{
// check if character exists
$query = "SELECT character_id FROM #__raidplanner_character WHERE char_name LIKE BINARY ".$db->Quote($member->character->name)."";
$db->setQuery($query);
$char_id = $db->loadResult();
// not found insert it
if (!$char_id) {
$query="INSERT INTO #__raidplanner_character SET char_name=".$db->Quote($member->character->name)."";
$db->setQuery($query);
$db->query();
$char_id=$db->insertid();
}
$query = "UPDATE #__raidplanner_character SET class_id='" . $classes[ intval($member->character->class) ] . "'
,race_id='" . $races[ intval($member->character->race) ] . "'
,gender_id='" . (intval($member->character->gender) + 1) . "'
,char_level='" . intval($member->character->level) . "'
,rank='" . intval($member->rank) . "'
,guild_id='" . intval($this->guild_id) . "'
WHERE character_id=" . $char_id;
$db->setQuery($query);
$db->query();
}

/* delete all guildless characters */
$query = "DELETE FROM #__raidplanner_character WHERE guild_id=0";
$db->setQuery($query);
$db->query();
}

if ($showOkStatus)
{
JError::raiseNotice('0', 'ArmorySync successed');
}
} else {
JError::raiseWarning('100', 'ArmorySync data doesn\'t match');
}
}

public function onRPGetCharacterLink( $char_name )
{
return sprintf($this->rp_params['char_link'], rawurlencode($this->rp_params['guild_realm']), rawurlencode($char_name) ) . '" target="_blank';
}

public function onRPGetGuildHeader()
{
$document = JFactory::getDocument();
$document->addScript('media/com_raidplanner/wow_tabards/guild-tabard.js');

$header = array();
$header[] = '<canvas id="rp_guild_tabard" width="120" height="120" style="float:right;"></canvas>';
$header[] = '<script type="text/javascript">';
$header[] = ' window.addEvent("domready",function(){';
$header[] = ' var tabard = new GuildTabard("rp_guild_tabard", {';
$header[] = ' "ring": "' . $this->rp_params['side'] . '",';
$header[] = ' "bg": [ 0, "' . $this->rp_params['emblem']['backgroundColor'] . '" ], ';
$header[] = ' "border": [ "' . $this->rp_params['emblem']['border'] . '", "' . $this->rp_params['emblem']['borderColor'] . '" ], ';
$header[] = ' "emblem": [ "' . $this->rp_params['emblem']['icon'] . '", "' . $this->rp_params['emblem']['iconColor'] . '" ], ';
$header[] = ' }, "' . JURI::base() . 'media/com_raidplanner/wow_tabards/");';
$header[] = ' });';
$header[] = '</script>';
$header[] = '<h2><a href="' . $this->rp_params['link'] . '" target="_blank">' . $this->guild_name . '</a></h2>';
$header[] = '<strong>' . JText::_('COM_RAIDPLANNER_LEVEL') . " " . $this->rp_params['guild_level'] . " " . $this->rp_params['side'] . " " . JText::_('COM_RAIDPLANNER_GUILD') . '<br />';
$header[] = $this->rp_params['guild_realm'] . " - " . strtoupper($this->rp_params['guild_region']) . '</strong>';

return implode("\n", $header);
}

public function onRPLoadCSS()
{
$document = JFactory::getDocument();
$document->addStyleSheet( 'media/com_raidplanner/css/raidplanner_wow.css' );

return true;
}

}



Dit is geen oplossing, maar een stapje verder om tot de oplossing te komen (debugging).

Je zou nu minstens een echo moeten zien waarin vermeld staat wat er daadwerkelijk in $tmp bevindt. Die moet een array zijn.

Probeer anders eens $tmp['races'] in je var_dump()

Ik stel verder voor dat we het bij relevante code van 20 max. regels houden om het leesbaarder te houden. Weinig mensen voelen zich ervoor om 400 regels door te gaan spitten, terwijl de error al aangeeft waar de fout zich bevindt.
- Aar - op 26/12/2014 09:09:40

Dit is geen oplossing, maar een stapje verder om tot de oplossing te komen (debugging).

Je zou nu minstens een echo moeten zien waarin vermeld staat wat er daadwerkelijk in $tmp bevindt. Die moet een array zijn.

Probeer anders eens $tmp['races'] in je var_dump()

Ik stel verder voor dat we het bij relevante code van 20 max. regels houden om het leesbaarder te houden. Weinig mensen voelen zich ervoor om 400 regels door te gaan spitten, terwijl de error al aangeeft waar de fout zich bevindt.




Hey Aar,

Oke perfect. Stond er niet bij stil en ik snap het uiteraard. Mijn excuses.

-

Ik heb twee fouten op het moment en heb er screenshots van gemaakt. Want het gebeurt niet altijd.





Hierbij ook het stukje code. Lijn 67 is waar "foreach ($tmp['races'] as $race)" staat.


/* load database ids race array */
$races = array();
$query = "SELECT race_id, race_name FROM #__raidplanner_race";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'race_name' );

$url = "http://" . $region . ".battle.net/api/wow/data/character/races";
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );
var_dump($tmp['races']);

foreach ($tmp['races'] as $race) {
$races[ $race['id'] ] = $tmp1[ $race['name'] ]['race_id'];
}

/* load database ids race array */
Zet onder $tmp1 = eens:

<?php
var_dump($tmp1);
?>

Zet onder $url =
<?php
var_dump($url);
?>

Zet onder $tmp =
<?php
var_dump($tmp);
?>

Wat komt er dan te staan?
Waarschijnlijk zit er in één van die drie een fout en geeft het niet wat je hoopte te krijgen.
Eddy E op 27/12/2014 06:48:21

Zet onder $tmp1 = eens:

<?php
var_dump($tmp1);
?>

Zet onder $url =
<?php
var_dump($url);
?>

Zet onder $tmp =
<?php
var_dump($tmp);
?>

Wat komt er dan te staan?
Waarschijnlijk zit er in één van die drie een fout en geeft het niet wat je hoopte te krijgen.





Hey Eddy,

Alvast bedankt voor je reactie. Ik heb de door u vermelde suggesties toegevoegd en krijg de volgende reactie om de zoveel laad beurten.




Kan het zijn dat als het script niet in staat is om de "races" data op te halen, dat hij dan deze fout weergeeft? Indien dat het geval is, hoe kan ik dan eventueel voorkomen dat er een foutmelding wordt gegeven en er gewoon geen "races" worden weergegeven?

Of indien mogelijk, automatisch een refresh van de pagina wordt gedaan.
Met is_array($tmp['races']) voor je foreach controleren of deze array bestaat.
- Aar - op 27/12/2014 22:56:28

Met is_array($tmp['races']) voor je foreach controleren of deze array bestaat.


Ik krijg hierop de volgende error.

Een blanco pagina met bovenaan de boodschap:
Parse error: syntax error, unexpected T_FOREACH in /home/user/domains/hgwow.nl/public_html/plugins/raidplanner/wow/wow.php on line 69


Het script is:

$races = array();
$query = "SELECT race_id, race_name FROM #__raidplanner_race";
$db->setQuery( $query );
$tmp1 = $db->loadAssocList( 'race_name' );
var_dump($tmp1);

$url = "http://" . $region . ".battle.net/api/wow/data/character/races";
var_dump($url);
$tmp = json_decode( RaidPlannerHelper::downloadData( $url ) ,true );
var_dump($tmp);

is_array($tmp['races'])foreach ($tmp['races'] as $race) {
$races[ $race['id'] ] = $tmp1[ $race['name'] ]['race_id'];
}




EDIT:

Na het weghalen van is_array($tmp['races']), kreeg ik de volgende boodschap op de pagina:


array(13) { ["Human"]=> array(2) { ["race_id"]=> string(1) "1" ["race_name"]=> string(5) "Human" } ["Orc"]=> array(2) { ["race_id"]=> string(1) "2" ["race_name"]=> string(3) "Orc" } ["Dwarf"]=> array(2) { ["race_id"]=> string(1) "3" ["race_name"]=> string(5) "Dwarf" } ["Night Elf"]=> array(2) { ["race_id"]=> string(1) "4" ["race_name"]=> string(9) "Night Elf" } ["Undead"]=> array(2) { ["race_id"]=> string(1) "5" ["race_name"]=> string(6) "Undead" } ["Tauren"]=> array(2) { ["race_id"]=> string(1) "6" ["race_name"]=> string(6) "Tauren" } ["Gnome"]=> array(2) { ["race_id"]=> string(1) "7" ["race_name"]=> string(5) "Gnome" } ["Troll"]=> array(2) { ["race_id"]=> string(1) "8" ["race_name"]=> string(5) "Troll" } ["Goblin"]=> array(2) { ["race_id"]=> string(1) "9" ["race_name"]=> string(6) "Goblin" } ["Blood Elf"]=> array(2) { ["race_id"]=> string(2) "10" ["race_name"]=> string(9) "Blood Elf" } ["Draenei"]=> array(2) { ["race_id"]=> string(2) "11" ["race_name"]=> string(7) "Draenei" } ["Worgen"]=> array(2) { ["race_id"]=> string(2) "12" ["race_name"]=> string(6) "Worgen" } ["Pandaren"]=> array(2) { ["race_id"]=> string(2) "13" ["race_name"]=> string(8) "Pandaren" } } string(49) "http://eu.battle.net/api/wow/data/character/races" NULL
Warning: Invalid argument supplied for foreach() in /home/user/domains/hgwow.nl/public_html/plugins/raidplanner/wow/wow.php on line 69

Het valt me op dat hij nu NULL achter de link van de data zet. Betekend dat hij de data hiervan niet kan ophalen?
"http://eu.battle.net/api/wow/data/character/races" NULL

Er is me tevens ook opgevallen dat hij regelmatig de "races" data van onze guild te Shattered Hand niet kan weergeven, maar die van Wildhammer wel.
<?php
if(is_array(....)) {
// een array
} else {
// geen array
}
?>

[size=xsmall]Toevoeging op 28/12/2014 12:16:29:[/size]

<?php
if(is_array(....)) {
// een array
} else {
// geen array
}
?>
Ik moest er even het chinese woordenboek bij pakken. Maar denk dat ik snap wat er staat.

if(is_array(....)) {
Als het een lijst is die kan worden weergegeven, voer dan uit ...

} else {
Anders, ...

Juist?

Ik het volgende gedaan:

if(is_array($tmp['races']))foreach ($tmp['races'] as $race) {
$races[ $race['id'] ] = $tmp1[ $race['name'] ]['race_id'];
} else {
}

Wat zijn eventuele opties voor } else {?

Reageren