PHP Programming Problem

I have a randomly assigned variable named $rand. I also have a set variable named $db. If $rand eqauls $db, I would like the script below to regenerate $rand up to seven times before displaying the "Stopped trying error." Why won't this code work? Attached is the code:
$rand = rand(100000, 999999);
$db = 5555555;
if ($rand != $db) { 
	echo $rand;
} else {
	for ($counter = 1; $counter < 7; $counter++) {
	$rand = rand(100000, 999999);
	if ($rand != $db) {
		echo $rand;
		} else { 
		echo "Random number could not be generated. Still trying... ";
		if ($counter == 7) {
		echo "Stopped trying."; }
	}
}

Open in new window

LVL 14
EMB01Asked:
Who is Participating?
 
glcumminsConnect With a Mentor Commented:
This is an excellent example of why the BSD/Allman style of coding should be used. Line up your brackets, and you can easily see that one was missing:
<?php
$rand = rand(100000, 999999);
$db = 5555555;
if ($rand != $db)
{ 
	echo $rand;
}
else
{
	for ($counter = 1; $counter < 7; $counter++)
	{
		$rand = rand(100000, 999999);
		if ($rand != $db)
		{
			echo $rand;
		}
		else
		{ 
			echo "Random number could not be generated. Still trying...\n ";
			if ($counter == 7)
			{
				echo "Stopped trying.\n";
			}
		}
	}
}
?>

Open in new window

0
 
EMB01Author Commented:
Thanks, didn't see that - one problem remains though - when I take control of both variables to test the for function, it seems it doesn't echo the "Stopped trying" text. Why is this?
<?php
$rand = 555555;
$db = 5555555;
if ($rand != $db)
{ 
	echo $rand;
}
else
{
	for ($counter = 1; $counter < 7; $counter++)
	{
		$rand = 555555;
		if ($rand != $db)
		{
			echo $rand;
		}
		else
		{ 
			echo "Random number could not be generated. Still trying...\n ";
			if ($counter == 7)
			{
				echo "Stopped trying.\n";
			}
		}
	}
}
?>

Open in new window

0
 
glcumminsCommented:
$counter will never equal 7 based on your for() statement. The loop only executes for $counter = 1 through $counter = 6. Less than seven will never equal seven.
0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

 
EMB01Author Commented:
Well, I thought that, too. Then I tried 6 and it didn't work either.
0
 
glcumminsCommented:
$rand and $db also have to be equal. That block will never execute if they are unequal.
0
 
glcumminsConnect With a Mentor Commented:
Look very closely at your assignments for $rand and $db. They are not the same.
0
 
idealwsConnect With a Mentor Commented:
There is a larger chance $rand and $db will never match, however this should get you pointed in the rigt direction.
$rand = rand(100000, 999999);
$db = 555555;
if ($rand == $db) { 
	echo $rand;
} else {
	for ($counter = 0; $counter <= 7; $counter++) {
		$rand = rand(100000, 999999);
		if ($rand == $db) {
			echo $rand."<br>";
		} else { 
			
			if ($counter >= 7) {
				echo "Stopped trying."; 
			}else{
				echo "Random number could not be generated. Still trying... <br>";
			}
		}
	}
}

Open in new window

0
 
idealwsConnect With a Mentor Commented:
You could also shorted your code up this way.
$rand = rand(100000, 999999);
$db = 555555;
for ($counter = 0; $counter <= 7; $counter++) {
	if ($rand == $db) {
		echo $rand."<br>";
		break;
	} else { 
		if ($counter >= 7) {
			echo "Stopped trying."; 
		}else{
			echo "Random number could not be generated. Still trying... <br>";
		}
	}
}

Open in new window

0
 
EMB01Author Commented:
Thanks for your help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.