2015-05-13 4 views
1

У меня есть база данных mysqli со столом для маркеров и таблицей для людей.Получение следующей доступной даты с использованием mysqli и php

На веб-странице, я отображения списка записей людей с этого года:

SELECT * FROM markers m, people p WHERE m.MarkerID = p.MarkerID and p.Publish=1 and year(m.date) like '2015' 

При нажатии на лицо из списка, вы получаете новую веб-страницу, которая отображает, что персональные данные, используя этот запрос в php:

$name = $_POST['name']; 
$newname = str_replace("_", " ", $name); 
$q = "SELECT * FROM people p, markers m where p.MarkerID = m.MarkerID and p.Name = '" . $newname . "'"; 

В нижней части страницы указаны стрелки, которые вы можете щелкнуть для следующей записи и последней записи.

Как бы получить следующую или последнюю запись, пожалуйста? Следующая запись будет следующей, следующей по дате первого запроса; предыдущей записью будет та, которая предшествует дате первого запроса.

+0

взгляда в использовании пагинации. –

+0

@Fred -ii- но на странице человека у меня нет этого первого запроса. У меня просто есть запрос, который подтягивает данные человека. – LauraNMS

+0

@ Маркс Б: Я добавлю. Но сейчас я сосредоточен на этой другой проблеме. – LauraNMS

ответ

1

В настоящее время это не проверено.

Дайте мне знать, что вы думаете, задаете любые вопросы.

$recs = 20; // number of records per page 

$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM markers m, people p WHERE m.MarkerID = p.MarkerID and p.Publish=1 and year(m.date) like '2015'"; 

$next = intval($_POST['next']); 
$last = intval($_POST['last']); 
if($last > 0){ 
    $limit1 = $last - $recs; 
    $limit2 = $last + 1; 
} 
else{ 
    $limit1 = $next; 
    $limit2 = $limit1 + $recs; 
} 

$query = "$sql LIMIT $limit1 $limit2"; 
$results = mysqli_query($link,$sql); 

    // do your existing page 

$rows = mysql_num_rows($results); 
if($rows == $recs) 
    $result = mysqli_query($link,"SELECT FOUND_ROWS()"); 
    $more = mysqli_fetch_array($result , MYSQL_NUM); 
} 
$remaining = intval($more[0]); 
$total = $remaining + $limit2; 
$remaining -= ($limit1 + $recs); 
$next += $recs + 1; 
if($remaining > 0) 
    echo <<<EOF 

<form action="#' method="post"> 
<input type="hidden" name="next" value="$next"/> 
<button type="submit">Next</button> 
</form> 
<form action="#' method="post"> 
<input type="hidden" name="last" value="$total"/> 
<button type="submit">Last</button> 
</form> 

EOF; 
} 
1

Я думаю, что это будет делать это для предварительной записи:

$q = "select * from people v, markers m 
where v.Publish = 1 
and m.MarkerID = v.MarkerID 
and m.date = (select max(m.date) 
from markers m, victims v where m.MarkerID = v.MarkerID 
and v.Publish = 1 
and m.date < '" . $this_date . "')" 
+0

Вы показываете только одну запись за раз? Или просто прокрутка одной записи, а не страницы записей? – Misunderstood

+0

одна запись, а не страница – LauraNMS

Смежные вопросы