PHP / Mysql условные операторы - PullRequest
0 голосов
/ 13 ноября 2010

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

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

Моя база данных - это таблица 'user' с точками и именем в

Вот что у меня есть:

<code><?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '
'; } // if (isset ($ _POST) || isset ($ _POST ['Добавить точку'])) if (isset ($ _POST)) { // Печатает, что в посте print_r_dump ($ _POST); $ str = "select * from user, где name = '"; $ str. = $ _POST ['person']; $ str. = "'"; $ link = mysql_connect ('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); mysql_select_db ('xxxxx_points', $ link); $ result = mysql_query ($ str, $ link); $ row = mysql_fetch_assoc ($ result); $ points = $ row ['points']; $ str = 'обновить пользовательские установленные точки ='. ($ очков + 1). 'где имя = \' '. $ _POST ['person']. '\' '; $ result = mysql_query ($ str, $ link); } $ link = mysql_connect ('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); mysql_select_db ('xxxxx_points', $ link); $ str = "ВЫБРАТЬ точки от пользователя, ГДЕ name = 'Person A'"; $ str = "SELECT * FROM user"; $ result = mysql_query ($ str, $ link); $ results = array (); while ($ row = mysql_fetch_assoc ($ result)) { $ results [$ row ['name']] = $ row ['points']; } ?> Количество людей A: <? Php echo $ results ['Person A']; ?>

Количество людей B: <? Php echo $ results ['Person B']; ?>
<? print_r_dump ($ results); ?>

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

Похоже, вам не обязательно нужен первый SQL-запрос. Вы можете использовать текущее значение в базе данных и обновить его, если, например, поле точек является числовым, а не строкой. Попробуйте это для основной части PHP вашего кода.

<code><?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '
'; } if (isset ($ _POST)) { // Печатает, что в посте print_r_dump ($ _POST); $ link = mysql_connect ('mysql.xxxxx.net', 'xxxxx', 'xxxxx'); mysql_select_db ('xxxxx_points', $ link); $ str = ""; if ($ _POST ['submit_button'] == 'Добавить точку') { $ str = 'обновить пользовательские заданные точки = точки + 1, где имя = \' '. $ _POST ['person']. '\' '; } иначе если ($ _POST ['submit_button'] == 'Точка вычитания') { $ str = 'обновить пользовательские установленные точки = points-1, где name = \' '. $ _POST ['person']. '\' '; } if ($ str) { $ result = mysql_query ($ str, $ link); } } $ str = "ВЫБРАТЬ точки от пользователя, ГДЕ name = 'Person A'"; $ str = "SELECT * FROM user"; $ result = mysql_query ($ str, $ link); $ results = array (); while ($ row = mysql_fetch_assoc ($ result)) { $ results [$ row ['name']] = $ row ['points']; } ?>
1 голос
/ 13 ноября 2010

Есть много ошибок:

  • Вам не нужно создавать новую ссылку каждый раз, когда вы запускаете запрос.
  • Эта строка вообще не безопасна: $ str. = $ _POST ['person'];любой может взломать ваш код.
  • Вы должны проверить, верны ли ваши результаты (возвращенные из mysql).

Я попытался немного его очистить.Там и там может быть несколько ошибок (я не проверял), но продемонстрируйте то, что я только что сказал:

<code><?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '
';} $ link = mysql_connect ('mysql.xxxxx.net', 'xxxxx', 'xxxxx');mysql_select_db ('xxxxx_points', $ link);if (isset ($ _POST)) {$ str = "select * from user, где name = '";$ str. = $ _POST ['person'];$ str. = "'";$ result = mysql_query ($ str, $ link);if ($ result) {$ row = mysql_fetch_assoc ($ result);$ points = $ row ['points'];if (условие для добавления) {// возможно if (isset ($ _ POST [submit_button_add)) $ str = 'обновить пользовательские установленные точки ='.($ очков + 1).'где имя = \' '.$ _POST ['person'].'\' ';$ result = mysql_query ($ str, $ link);} else if (условие для вычитания) {// возможно if (isset ($ _ POST [submit_button_sub)) $ str = 'обновить пользовательские заданные точки ='.($ очков-1).'где имя = \' '.$ _POST ['person'].'\' ';$ result = mysql_query ($ str, $ link);} $ str = "SELECT * FROM пользователя WHERE 1";$ result = mysql_query ($ str, $ link);if ($ result) {$ results = array ();while ($ row = mysql_fetch_assoc ($ result)) {$ results [$ row ['name']] = $ row ['points'];}}}?> Количество человек А:
Добавить точкуВычитаемая точка
Количество лиц B:
Добавить точкуВычитаемая точка
...