У меня есть веб-страница, на которой перечислены детали футбольных игроков клуба, их дата рождения и даты, когда они дебютировали в клубе, а также с их возрастом на дебют.Как рассчитать разницу между датами; лимит и сортировка результатов?
Отображаются результаты here.
То, что я хочу сделать, однако и без успеха до сих пор, в конечном счете сортирует эту информацию по дебютным возрастам, а затем ограничивает их, например, тремя младшими дебютантами.
Моя главная проблема не в том, чтобы знать, где даже начать эту попытку.
Данные поступают из нескольких таблиц, поэтому запрос MySQL был настроен таким образом:
$result = mysql_query("SELECT dateofbirth, firstname, lastname, id FROM playerengine WHERE dateofbirth!='0000-00-00'") or die(mysql_error());
$totalRows = mysql_num_rows($result);
if ($totalRows == 0)
{
echo "";
}
else
{
$todaysDate = date("Y-m-d");
while ($row = mysql_fetch_array($result))
{
$playerId = $row['3'];
echo "<tr>";
echo "<td width='20%'>";
echo "".$row['1']."";
echo "</td>";
echo "<td width='20%'>";
echo "".$row['2']."";
echo "</td>";
echo "<td width='20%'>";
echo "".$row['0']."";
echo "</td>";
$debutDate = mysql_query("SELECT re.date,re.venue,re.comp,re.opponent,re.score,re.ID,ce.ID,ce.name,re.season, mt.ID as matchId FROM resultengine re INNER JOIN matchteam mt ON mt.ID=re.ID INNER JOIN clubengine ce ON re.opponent=ce.ID WHERE (mt.ID1 = '".$playerId."' or mt.ID2 = '".$playerId."' or mt.ID3 = '".$playerId."' or mt.ID4 = '".$playerId."' or mt.ID5 = '".$playerId."' or mt.ID6 = '".$playerId."' or mt.ID7 = '".$playerId."' or mt.ID8 = '".$playerId."' or mt.ID9 = '".$playerId."' or mt.ID10 = '".$playerId."' or mt.ID11 = '".$playerId."' or (ID12='".$playerId."' AND SI12 != 0) or (ID13='".$playerId."' AND SI13 != 0) or (ID14='".$playerId."' AND SI14 != 0) or (ID15='".$playerId."' AND SI15 != 0) or (ID16='".$playerId."' AND SI16 != 0) or (ID17='".$playerId."' AND SI17 != 0) or (ID18='".$playerId."' AND SI18 != 0) AND (mt.ID!='1624') AND (mt.ID!='1638') AND (mt.ID!='225') AND (mt.ID!='248')) GROUP BY re.season ORDER BY re.season ASC LIMIT 1") or die(mysql_error());
$totalRows = mysql_num_rows($debutDate);
while ($debutRow = mysql_fetch_array($debutDate))
{
echo "<td width='20%'>";
echo "Debut Date: ".$debutRow['0']."<br />vs.".$debutRow['7'];
echo "</td>";
echo "<td width='20%'>";
$date1 = new DateTime($row['0']);
$date2 = new DateTime($debutRow['0']);
$interval = $date1->diff($date2);
$years = $interval->format('%Y');
$days = $interval->format('%a') - (int)$years*365;
echo "aged ".$years ." years and ". $days." days";
echo "</td>";
}
echo "</tr>";
}
}
Я знаю, что mysql_ * функции были амортизируется в PHP и будет меняющийся это mysqli_ *, прежде чем все в доработан/put live - но любые указатели, насколько это было в этом возрасте, были бы потрясающими.
Каков ваш ожидаемый выход? показать некоторые образцы. –
Вы пытаетесь определить различия даты в php, было бы проще сделать это в mysql, что-то вроде select * from the players order by debut DESC limit 3, который даст вам набор результатов ты ищешь – Coz