'Why foreach not working with date changer?
I want to change my database dates from jalali to gregorian. but when I run the code, foreach not working and not getting all of my datas from database. This is my code in my php file:
$sqlslct = "SELECT * FROM numberslist1";
$resslct = $connect->query($sqlslct);
foreach($resslct as $rsslct) {
$datee = $rsslct['datee'];
$dateeex = explode("-", $datee);
function div($a,$b) {
return (int) ($a / $b);
}
function jalali_to_gregorian($j_y, $j_m, $j_d,$str) {
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$jy = (int)($j_y)-979;
$jm = (int)($j_m)-1;
$jd = (int)($j_d)-1;
$j_day_no = 365*$jy + div($jy, 33)*8 + div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$j_day_no += $j_days_in_month[$i];
$j_day_no += $jd;
$g_day_no = $j_day_no+79;
$gy = 1600 + 400*div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
$g_day_no = $g_day_no % 146097;
$leap = true;
if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
$g_day_no--;
$gy += 100*div($g_day_no, 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
$g_day_no = $g_day_no % 36524;
if ($g_day_no >= 365)
$g_day_no++;
else
$leap = false;
}
$gy += 4*div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$g_day_no %= 1461;
if ($g_day_no >= 366) {
$leap = false;
$g_day_no--;
$gy += div($g_day_no, 365);
$g_day_no = $g_day_no % 365;
}
for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
$g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
$gm = $i+1;
$gd = $g_day_no+1;
if($str) return $gy.'/'.$gm.'/'.$gd ;
return array($gy, $gm, $gd);
}
$str = true;
$datee2 = jalali_to_gregorian($dateeex[0], $dateeex[1], $dateeex[2],$str);
$datee1 = explode("/", $datee2);
$datee4 = jalali_to_gregorian($dateeex[0], $dateeex[1], $dateeex[2],$str);
$datee3 = str_replace("/", "-", $datee4);
$month = $datee1[1];
$year = $datee1[0];
echo $datee3." / ".$month." / ".$year."<br>";
}
This code should print a tall result of dates from my database in the page, like this example:
2022-2-9 / 2 / 2022
2022-2-10 / 2 / 2022
2022-2-11 / 2 / 2022
2022-2-12 / 2 / 2022
2022-2-13 / 2 / 2022
2022-2-14 / 2 / 2022
And more...
But it will show just one date in the page. why is this happen? is there any problem with date changer? because I tested the code without jalali_to_gregorian()
function and the result was correct.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|