Counter Problem

Hey,

i am a beginner to php and cannot seem to find out why my counter keeps resetting to 0

Below is my code:
please note this code works, the first window.alert gives me 0, the loop runs twice, but everytime it comes back to window.alert it gives me 0…

i have tried to put the window.alert after the $count++; in the php tags and it gives me 1, meaning the counter does add 1…but again when it loops the second time, the $count shows as 0 ??

so frustrating :frowning: any ideas???

Code Below:

<script language="JavaScript" type="text/javascript">
		function LoadSchedule()
		{
			<?php
				session_start();
				$visitorE = Array();
				$visitorE = $_SESSION['visitorSchedule'];
				$count = 0;
			?>
			
			var eventCount = '<?php  echo count($visitorE);?>';
			
			var scheduleDiv = document.getElementById("schedule-layout");
			for(var intCount=0;intCount<eventCount;intCount++)
			{
				window.alert('<?php echo $count;?>');
				<?php
				$schedule = Array();
				$schedule = $visitorE[$count];
				?>
				scheduleDiv.innerText += "<?php echo 'Event: ' . $schedule[0]; echo ' | Date: ' . $schedule[1]; echo ' | Time: ' . $schedule[2]; echo ' | Venue: ' . $schedule[3]; echo ' | Location: ' . $schedule[4];?>";
				<?php $count++;?>
				
			}
			
			
		}
	</script>

The reason why your above code isn’t working properly is because you’re telling the PHP variable $count to increment by one which will never actually do anything apart from maybe outputting 0 in the page source as the life cycle of the JavaScript comes after the server side execution, what needs to happen is your above variables should all be declared as client side variables so that the browser has access to them or you need to use a snippet of PHP to generate all the JavaScript so that the array data is publicly visible. See the below:

Using PHP code that hides all the server side variables but generates the JavaScript you need.

<?php

session_start();

?>
<script type="text/javascript">
    var scheduleDiv = document.getElementById('schedule-layout');

    <?php

    // Attempt to get the visitor schedule
    $visitorE = isset($_SESSION['visitorSchedule']) ? $_SESSION['visitorSchedule'] : false;
    $count    = 0;

    if ($visitorE && count($visitorE) > 0) {
        foreach ($visitorE as $visitor) {
            echo 'alert("' . $count . '")';
            echo 'scheduleDiv.innerText += "Event: ' . $visitor[0] . ' | Date: ' . $visitor[1] . ' | Time: ' . $visitor[2] . ' | Venue: ' . $visitor[3] . ' | Location: ' . $visitor[4] .'<br>"';

            $count++;
        }
    }

    ?>
</script>

Using JavaScript that exposes the array data to the browser:

var count       = 0,
    scheduleDiv = document.getElementById('schedule-layout'),
    visitorE    = <?php echo isset($_SESSION['visitorSchedule']) ? json_encode($_SESSION['visitorSchedule']) : 'false' ?>;


if (visitorE && visitorE.length > 0) {
    for (var i = 0, m = visitorE.length; i < m; i++) {
        // Store the current visitor data
        var schedule = visitorE[i];
        
        alert(count);
        scheduleDiv.innerText += 'Event: ' + schedule[0] + ' | Date: ' + schedule[1] + ' | Time: ' + schedule[2] + ' | Venue: ' + schedule[3] + ' | Location: ' + schedule[4] + '<br>';
        
        count++;
    }
}

Personally I would choose the PHP code because it doesn’t expose the data but the choice is up to you in the end.

thank you will try it out now now and let you know how it goes…Thank you very much for your reply!

do i not need to include the function name? otherwise how will i call the script?

Its now working 100% thank you for your time and knowledge!!