aidoDel Posted November 24, 2009 Share Posted November 24, 2009 I have a html form where user enters birthday (day + month) and it is sent to be processed by php to calculate their star sign. Everything works fine but I'm unsure how to treat the data once sent. PHP <?php $Capricorn = array("Capricorn", "The sign Capricorn is one of the most stable and (mostly) serious of the zodiacal types."); $Aquarius = array("Aquarius"); $Pisces = array("Pisces"); $Aries = array("Aries"); $Taurus = array("Taurus"); $Gemini = array("Gemini"); $Cancer = array("Cancer"); $Leo = array("Leo"); $Virgo = array("Virgo"); $Libra = array("Libra"); $Scorpio = array("Scorpio"); $Sagittarius = array("Sagittarius"); ?> <?php $user_month = $_POST['user_month']; $user_day = $_POST['user_day']; echo "Your birthday is {$user_day} of {$user_month} that makes your star sign "; ?> <?php // .........JAN = CAPRICORN or AQUARIUS........ if ( $user_month == "January" ) { if ($user_day <= "19"){ echo "{$Capricorn;[0]}"; } else{ echo "{$Aquarius[0]}"; } } Rather than echo $Capricorn, I want to set this value to be $Capricorn so I can call it later. I have no clue how to go about doing this. Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/ Share on other sites More sharing options...
flyhoney Posted November 24, 2009 Share Posted November 24, 2009 <?php $month = 12; $year = 1985; function star_sign($month, $year) { $time = mktime(0, 0, 0, $month, 0, $year); $day_of_year = date("z", $time); if (date("L", $time) && ($day_of_year > 59)) $day_of_year -= 1; switch ($day_of_year) { case $day_of_year > 356: return "Capricorn"; case $day_of_year > 326: return "Sagittarius"; case $day_of_year > 296: return "Scorpio"; case $day_of_year > 266: return "Libra"; case $day_of_year > 235: return "Virgo"; case $day_of_year > 203: return "Leo"; case $day_of_year > 172: return "Cancer"; case $day_of_year > 140: return "Gemini"; case $day_of_year > 111: return "Taurus"; case $day_of_year > 78: return "Aries"; case $day_of_year > 51: return "Pisces"; case $day_of_year > 20: return "Aquarius"; default: return "Capricorn"; } } die(star_sign(12, 1985)); Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964861 Share on other sites More sharing options...
mraza Posted November 24, 2009 Share Posted November 24, 2009 i see you are giving all variables an array which is pointless you need to have something like this if you wants to store only one value; $star = arrary('Capricorn','Aquarius','Pisces','Aries','Taurus','Gemini','Cancer','Leo','Virgo','Libra','Scorpio','Sagittarius'); and then you can call like this: $capricorn = $star[0]; $Aquarius = $star[1]; and so on Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964862 Share on other sites More sharing options...
aidoDel Posted November 24, 2009 Author Share Posted November 24, 2009 i see you are giving all variables an array which is pointless you need to have something like this if you wants to store only one value; $star = arrary('Capricorn','Aquarius','Pisces','Aries','Taurus','Gemini','Cancer','Leo','Virgo','Libra','Scorpio','Sagittarius'); and then you can call like this: $capricorn = $star[0]; $Aquarius = $star[1]; and so on Each star sign will hold several pockets of information when I have completed it. $Capricorn = array("<h1>Star NAME", "<p>Star Description " <img>Releated picture") I need to generate a new page on the user's star sign so if someone is Capricorn will have a heading, description and image all relating to Capricorn. That is why I have created an array for each star sign. Is there a better way of doing this? Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964875 Share on other sites More sharing options...
aidoDel Posted November 24, 2009 Author Share Posted November 24, 2009 <?php $month = 12; $year = 1985; function star_sign($month, $year) { $time = mktime(0, 0, 0, $month, 0, $year); $day_of_year = date("z", $time); if (date("L", $time) && ($day_of_year > 59)) $day_of_year -= 1; switch ($day_of_year) { case $day_of_year > 356: return "Capricorn"; case $day_of_year > 326: return "Sagittarius"; case $day_of_year > 296: return "Scorpio"; case $day_of_year > 266: return "Libra"; case $day_of_year > 235: return "Virgo"; case $day_of_year > 203: return "Leo"; case $day_of_year > 172: return "Cancer"; case $day_of_year > 140: return "Gemini"; case $day_of_year > 111: return "Taurus"; case $day_of_year > 78: return "Aries"; case $day_of_year > 51: return "Pisces"; case $day_of_year > 20: return "Aquarius"; default: return "Capricorn"; } } die(star_sign(12, 1985)); This is so much more logically than my approach flyhoney but I don't understand how to related it back to my form, and WHY I need the year 1985? Is it possible to explain what is happening? I'm a complete PHP novice..... this is the first thing I have ever tried. Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964877 Share on other sites More sharing options...
flyhoney Posted November 24, 2009 Share Posted November 24, 2009 12-1985 are just test numbers I used to demonstrate: <?php // include the function I showed you somewhere echo "Your star sign is " . star_sign($_POST['user_month'], $_POST['user_day']); Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964912 Share on other sites More sharing options...
flyhoney Posted November 24, 2009 Share Posted November 24, 2009 Oops! Sorry, I just wasn't paying attention, you really need the month, day AND year. So, a comprehensive example: <?php function star_sign($month, $day, $year) { $time = mktime(0, 0, 0, $month, $day, $year); $day_of_year = date("z", $time); if (date("L", $time) && ($day_of_year > 59)) $day_of_year -= 1; switch ($day_of_year) { case $day_of_year > 356: return "Capricorn"; case $day_of_year > 326: return "Sagittarius"; case $day_of_year > 296: return "Scorpio"; case $day_of_year > 266: return "Libra"; case $day_of_year > 235: return "Virgo"; case $day_of_year > 203: return "Leo"; case $day_of_year > 172: return "Cancer"; case $day_of_year > 140: return "Gemini"; case $day_of_year > 111: return "Taurus"; case $day_of_year > 78: return "Aries"; case $day_of_year > 51: return "Pisces"; case $day_of_year > 20: return "Aquarius"; default: return "Capricorn"; } } $month = $_POST['user_month']; $day = $_POST['user_day']; $year = $_POST['user_year']; echo "Your star sign is " . star_sign($month, $day, $year); Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-964918 Share on other sites More sharing options...
aidoDel Posted November 25, 2009 Author Share Posted November 25, 2009 I have tried this code and also tried to change somethings but it only ever returns "Capricorn" no matter what date I enter. My HTML is: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>Smart Forms JS</title> <script type="text/javascript" src="js/smartform.js"</script> <link rel="stylesheet" href="css/style.css" /> </head> <body> <h2 align="center">What your future holds</h2> <div id="form-area"> <!--<form action="users_details.php" method="post">--> <form action="new.php" method="post"> <fieldset> <legend>Your Personal Details</legend> <p> Please enter your date of birth: <br /> <label for="user_day">Day:<input name="user_day" id="user_day" type="text" size="2" class="reqd" maxlength="2" onkeypress="return isNumberKey(event)"></label> <label for="user_month">Month: <select name="user_month" id="user_month" class="reqd"> <option value="" selected="selected">Choose a month</option> <option value="January">January</option> <option value="February">February</option> <option value="March">March</option> <option value="April">April</option> <option value="May">May</option> <option value="June">June</option> <option value="July">July</option> <option value="August">August</option> <option value="September">September</option> <option value="October">October</option> <option value="November">November</option> <option value="December">December</option> </select> </label> <label for="user_year">Year:<input name="user_year" id="user_year" type="text" size="4" class="reqd" maxlength="4" onkeypress="return isNumberKey(event)" ></label> </p> <p> <input name="submit" type="submit" /> <input name="reset" type="reset" /> </p> </fieldset> </form> </div> </body> </html> and my php is now: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>Processed Form</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div id="wrapper"> <h2>Processed Form from Birthday Page</h2> <?php //$Capricorn = array("Capricorn", "And so say all of us"); //$Aquarius = array("Aquarius"); //$Pisces = array("Pisces"); //$Aries = array("Aries"); //$Taurus = array("Taurus"); //$Gemini = array("Gemini"); //$Cancer = array("Cancer"); //$Leo = array("Leo"); //$Virgo = array("Virgo"); //$Libra = array("Libra"); //$Scorpio = array("Scorpio"); //$Sagittarius = array("Sagittarius"); //Change variables to multidimentional array: $starsign[0] = array('name'=>'Capricorn', 'description' =>'description of capricorn people'); $starsign[1] = array('name'=>'Aquarius', 'description' =>'description of aquarius people'); $starsign[2] = array('name'=>'Pisces', 'description' =>'description of Pisces people'); $starsign[3] = array('name'=>'Aries', 'description' =>'description of aries people'); $starsign[4] = array('name'=>'Taurus', 'description' =>'description of Taurus people'); $starsign[5] = array('name'=>'Gemini', 'description' =>'description of Gemini people'); $starsign[6] = array('name'=>'Cancer', 'description' =>'description of Cancer people'); $starsign[7] = array('name'=>'Leo', 'description' =>'description of Leo people'); $starsign[8] = array('name'=>'Virgo', 'description' =>'description of Virgo people'); $starsign[9] = array('name'=>'Libra', 'description' =>'description of Libra people'); $starsign[10] = array('name'=>'Scorpio', 'description' =>'description of Scorpio people'); $starsign[11] = array('name'=>'Sagittarius', 'description' =>'description of Sagittarius people'); $month = $_POST['user_month']; $day = $_POST['user_day']; $year = $_POST['user_year']; ?> <?php function star_sign($month, $day, $year) { $time = mktime(0, 0, 0, $month, $day, $year); //return the Unix timestamp $day_of_year = date("z", $time); // "z" is equal to the day of the year 0 to 365 if (date("L", $time) && ($day_of_year > 59)) // for leap years "L" is LEAP YEAR $day_of_year -= 1; // if it is FEB 29 (59) Subtract 1 from the day of year switch ($day_of_year) { case $day_of_year > 356: // above 22nd Dec = Capricorn return "Capricorn"; case $day_of_year > 326: return "Sagittarius"; case $day_of_year > 296: return "Scorpio"; case $day_of_year > 266: return "Libra"; case $day_of_year > 235: return "Virgo"; case $day_of_year > 203: return "Leo"; case $day_of_year > 172: return "Cancer"; case $day_of_year > 140: return "Gemini"; case $day_of_year > 111: return "Taurus"; case $day_of_year > 78: return "Aries"; case $day_of_year > 51: return "Pisces"; case $day_of_year > 20: return "Aquarius"; default: return "Capricorn"; } } echo "Your star sign is " . star_sign($month, $day, $year); ?> I assume that it is only returning the default value in the switch statement? How do I rectify this? Quote Link to comment https://forums.phpfreaks.com/topic/182808-basic-php-variable-problem/#findComment-965302 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.