2010-11-09 2 views
0

Я ищу любое направление на действительно быстрой и грязной веб-странице. У меня будет два статических элемента, скажем, человек A и человек B. Я бы хотел нажать кнопку (+) или (-) рядом с каждой из них, которая затем увеличивает или уменьшает целое число, отображаемое относительно каждого человека.Очень быстрая, легкая, веб-страница с приращением/уменьшением

Любой, кто имеет быструю игру или что-нибудь полезное.

Кроме того, как трудно было бы вести журнал просмотра каждый раз, когда значение было изменено либо увеличенным, либо уменьшенным, было бы легко добавить к нему дату/время?

Редактировать

Хорошо, относительно MySQL. У меня есть db, уже настроенный из предыдущей установки wordpress. Я собираюсь создать новые таблицы с именем «points», если у этого есть 2 поля? Один для человека A и один для человека B?

+0

Следует ли сохранять клики/значения на стороне сервера? –

+0

Это действительно может быть плоский html-файл, это действительно будет голым и не слишком важным. Но если использовать mysql для чего-то проще, у меня есть ресурсы для этого. –

+0

В зависимости от вашего опыта MySQL может быть или не быть проще. Для обновления таблицы MySQL и четырех строк кода для чтения таблицы MySQL требуется 3 строки кода (подключение, выбор базы данных, запуск запроса, результат чтения). Обновление файла также включает в себя 3 строки (открыть файл, записать, закрыть файл). Затем, если вы обновляете статическую HTML-страницу, вам нужно будет определить, что нужно изменить. Если вы обновляете третий файл, который содержит только значения, вам нужно будет 3 строки для чтения этого файла (открыть, прочитать, закрыть). Так что это аналогичная сложность. Тем не менее, базы данных выглядят лучше. – stevendesu

ответ

3

Поскольку вы хотите, чтобы он запоминал значение между сеансами (т. Е. Если бы я увеличил счетчик, оставил веб-сайт и вернулся, я ожидаю, что он все равно будет увеличен) вам нужно сохранить значение на стороне сервера. Базы данных - лучшая рекомендация для этого.

Если вы планируете использовать PHP (который я предполагаю из тегов), то MySQL является одной из самых простых баз данных для реализации. Если у вас уже есть база данных MySQL, настроенная на вашем хосте, то это будет легко. Если нет, то как настроить базу данных MySQL будет еще один вопрос, который вам нужно задать.

Поскольку вы хотите быстро и грязно, лучшим методом будет форма. Или POST или GET (желательно GET, если вы хотите, чтобы люди отправляли ссылку «проголосовать за это изображение», предпочтительно POST, если вы не хотите, чтобы такие ссылки были возможны). Это легко, но также требует перезагрузки страницы, поэтому современные системы голосования используют вызовы AJAX (javascript).

Ваш HTML форма будет выглядеть примерно так:

<!-- Person A goes here --> 
This person has a score of <!-- We'll do this soon -->. 

<form method="get" <!-- or post --> action="vote.php"> 
<input type="submit" name="submit_button" value="Vote Up!" /> 
<input type="submit" name="submit_button" value="Vote Down =(" /> 
<input type="hidden" name="person" value="A" /> 
</form> 

<!-- Similar for person B --> 

Обратите внимание, что <!-- --> синтаксис для HTML комментария (они будут удалены в конечном сайте)

В vote.php вы бы нужно сначала увидеть, была ли форма отправлена, а затем нажать кнопку WHICH submit (проголосовать вверх или вниз), а затем посмотреть, к какому лицу она относится. Затем мы делаем запись в базе данных.

<?php 
    if(isset($_GET['submit_button'])){ 
     // They submit the form 

     $add = ($_GET['submit_button'] == 'Vote Up!') ? 1 : -1; 

     $person = $_GET['person']; 

     $link = mysql_connect('localhost', 'user', 'password'); 
     mysql_select_db('database', $link); 
     mysql_query("UPDATE table SET value=value+$add WHERE person=$person"); 
    } else { 
     die("You didn't submit the form =("); 
    } 
?> 

Имейте в виду, что это действительно грязный метод (нет разбора запроса и никаких проверок сделаны. Это очень восприимчив к инъекции SQL. Не используйте это в базе данных с важной информацией. На самом деле - возможно, вообще не используйте это без каких-либо изменений =))

Теперь это в основном принимает таблицу table, находит запись, в которой person равно любому выбранному лицу (выбранным по тому, какую форму использовали для отправки) , затем добавляет +1 или -1 к value. Вы можете изменить любое из этих имен переменных в своей таблице. Следующий шаг: чтение значения, отображаемого на предыдущей странице. Помните, что до того, как я только что получил комментарий <!-- we'll do this soon -->. Мы доберемся до этого.

В начале первой страницы вы хотите прочитать базу данных. Это означает, что ваша первая страница также должна быть PHP.

<?php 
    $link = mysql_connect('localhost', 'user', 'password'); 
    mysql_select_db('database', $link); 
    $result = mysql_query("SELECT value FROM table WHERE person=A"); 
    ... 

Теперь у вас есть ресурс MySQL, но вам нужно его значение.

... 
    $row = mysql_fetch_row($result); 
    ... 

И теперь мы показываем его с информацией.

<!-- Person A goes here --> 
This person has a score of <?php echo $row[0]; ?>. 

<form method="get" <!-- or post --> action="vote.php"> 
<input type="submit" name="submit_button" value="Vote Up!" /> 
<input type="submit" name="submit_button" value="Vote Down =(" /> 
<input type="hidden" name="person" value="A" /> 
</form> 

Затем вы повторяете для человека B. Это действительно самый грязный метод, поскольку он включает в себя один вызов базы данных на человека. В идеале вы бы захватили все значения, которые вы хотите в одном вызове, а затем перебираете возвращаемый ресурс и определяете, кто есть кто. Или, если вы действительно хотели быть фантазией, вы уже могли бы знать, кто есть кто, используя SORT ASC =)

Как я уже сказал, это самый быстрый, простой и грязный способ делать то, что вы хотите, используя PHP и MySQL.

+0

Рок на. Не нужно беспокоиться о безопасности, попытках инъекций и т. Д. Ссылка/сайт будут известны очень немногим и не будут публично публиковаться в Интернете. Позвольте мне сделать это быстро и вернуться сюда. Еще раз спасибо. –

+0

Можете ли вы подробнее рассказать о том, как вы настраиваете свои таблицы? Итак, выберите значение из таблицы где person = a. Есть ли одна таблица, два поля для каждого человека, и она имеет целочисленное значение? –

+0

Это правильно. Я установил его, полагая, что существует одна таблица с двумя столбцами, «значение» и «человек». Есть две записи. Первая запись имеет значение «A» в столбце person, вторая запись имеет значение «B» в столбце «человек». Имейте в виду, это потому, что в вашем примере вы использовали «Person A» и «Person B». Вы также можете легко заменить A и B цифрами, а затем заменить слово «человек» на «id» – stevendesu

0

В любом случае, я бы пошел на хранение базы данных человека и увеличение по id. Это поток для него: Создать базу данных mysql или mysqli «человек», создать таблицу «rate» id - автоинкремент ставка будет целочисленной.

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

$rate = $row['rate']; 

function incvar(){ 
    global $rate; 
    if(isset($rate) || $rate>0){ 
    return $rate++; 
    } 
} 

function decvar(){ 
    global $rate; 
    if(isset($rate) || $rate>0){ 
    return $rate--; 
    } 
} 

Теперь создайте запрос обновления существующих полей с результатами этих функций. Идеально создать ajax-запрос onclick для этого файла, чтобы увеличить и уменьшить целое число. Для быстрого выполнения используйте jquery.

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