PHP: отслеживание элементов массива из поискового запроса - PullRequest
0 голосов
/ 19 октября 2011

Я построил простую базу данных, где на странице отображается случайный выбор цитат, которые отображаются в неупорядоченном списке.Js-скрипт циклически просматривает каждый элемент списка, показывая их по одному.

Это цикл запроса:

while ($row = mysql_fetch_assoc($query)) {
    echo "<li><span id='id'>";
    // print the quote number
printf ("%s", $row['id']);
    echo "</span>&nbsp;<span id='quote'>";
    // print the quote
printf ("%s", $row['strategy']);
    echo "</span>&nbsp;<span id='author'>";
    // print the quote author
    printf ("by %s", $row['author']);
    echo "</span></li>";

}

Пока все хорошо.Моя проблема в том, как показать количество лайков и антипатий и заставить пользователей «голосовать» за них.Я не могу понять, как я могу сохранить данные массива активными, когда они распечатаны вот так.Могу ли я использовать счетчик для отслеживания элементов строки в PHP, чтобы потом узнать, по какой цитате голосует пользователь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Ваш код было трудно читать, поэтому я переписал его. Вы хотите использовать идентификационный номер котировки для доступа к другим данным о котировках. Пример Друва был хорошим способом использовать идентификатор элемента и получить данные с помощью javascript. Но для некоторых вещей вы можете захотеть обработать больше на сервере.

// assume the numbers I'm using are valid quote ids
$like_array=array(12=>'15 likes', 14=>'2 likes', 18=>'6 likes');

$output ='';

while ($row = mysql_fetch_assoc($query)) {
    $output .= "<li><span id='id'>{$row['id']}</span>&nbsp;";                     // quote number
    $output .= "<span id='quote'>{$row['strategy']}</span>&nbsp;";                // print the quote
    $output .= "<span id='author'>by {$row['author']}</span></li>";               // print the quote author
    $output .= '<a href="http://somelink.com/page.php?like='.$row['id'].'"></a>'; // like link
    $output .= '<span>Number of likes: '.$like_array[$row['id'].'</span>';        // like link
 }

 echo $output;

Вы можете видеть, что подобная ссылка - это просто ссылка, которая передает идентификатор цитаты в виде переменной $ _GET. Для части количества лайков предположим, что у нас уже есть эта информация, и она уже находится в массиве, где индексные ключи являются идентификаторами кавычек. (Это $ like_array)

Это просто основная идея, но она должна направить вас в правильном направлении.

0 голосов
/ 19 октября 2011

Вы можете повторить первичный ключ базы данных или индексный номер как идентификатор в строке.Затем javascript может легко определить, за какой элемент проголосовали.

Пример:

while ($row = mysql_fetch_assoc($query)) {
    echo "<li><span id='id'>";
    // print the quote number
printf ("%s", $row['id']);
    echo "</span>&nbsp;<span id='quote'>";
    // print the quote
printf ("%s", $row['strategy']);
    echo "</span>&nbsp;<span id='author'>";
    // print the quote author
    printf ("by %s", $row['author']);
    echo "</span>";
    echo "<a id='votelink_'".$row['id']."href='javascript:void(0);' onclick='checkVote(this.id);' > VOTE HERE   </a>";    
  echo "</li>";

}

Javascript:

function checkVote(theId)
{
   alert("Element with id = " + theId + " was voted" );
}
...