[ПОМОЩЬ]Реализация функции через кнопку

Тема в разделе "PHP", создана пользователем Squoll2, 1 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    Добрый день чё то я совсем запутался вот есть например у меня кнопка <form action='' method='post'><input type='submit' name='buy_function' value='функция'>
    как мне сделать так, чтобы при назжатии на эту кнопку выполнялся следущий MySQL запрос. mysql_query("UPDATE `grpgusers` SET `gold` = '" . ($user_class->gold - 15) . "', 'rmdays'='" . ($user_class->rmdays + 5) . "' WHERE `id`='" . $_SESSION['id'] . "'");
     
  2. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Ну во-первых можно сделать чтобы по нажатию кнопка сабмитилась в скрипт, который выполняет запрос.
    Второй вариант — продвинутый, по нажатию яваскриптом запрос в скрипт, который возвращает {status:1} и тот же яваскрипт выводит «выполнено»
     
  3. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    а пример можно показать?
     
  4. Onu

    Onu Постоялец

    Регистр.:
    4 июн 2008
    Сообщения:
    80
    Симпатии:
    16
    PHP:
    if ($_POST('nameofbutton') {
    mysql_query (bla la la);
    }
    На форму с кнопкой повесть form action=$ SERVER['PHP SELF']

    И все )

    Добавлено через 2 минуты
    <form action='$ SERVER['PHP SELF']' method='post'><input type='submit' name='buy_function' value='функция'>

    PHP:
    if ($_POST('buy_function') { 
    mysql_query("UPDATE `grpgusers` SET `gold` = '" . ($user_class->gold 15) . "', 'rmdays'='" . ($user_class->rmdays 5) . "' WHERE `id`='" .$_SESSION['id'] . "'");
     
    Squoll2 нравится это.
  5. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    PHP:
    <?
    if (
    $_POST('vip5') {
    mysql_query("UPDATE `grpgusers` SET `gold` = '" . ($user_class->gold 15) . "', 'rmdays'='" . ($user_class->rmdays 5) . "' WHERE `id`='" .$_SESSION['id'] . "'");
    echo (
    "Вы купили 5 VIP дней");
    }  
    ?>
    а он мне ругается на Parse error: syntax error, unexpected '{' in /home3/gangsta/public_html/rmstore.php on line 62
     
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    приведенная ами форма в предыдущей теме работает нормально. несколько замечаний:
    1. функция check_valid_code возвращает значение только в результате положительного ответа от сервера, как вариант:
    PHP:
    function check_valid_code($code){
        global 
    $config;
        
        
    $result false;
        foreach(
    $config['prices'] as $i => $val){

            
    $content join(''file("http://sms.solarf.lv/confirm.php?id=".$config['id']."&price=".$val."&code=$code"));
            if(
    $content=='key_ok'){
                
    $result$val;
                break;
            }
        }
        return 
    $result;
    }
    2. функции file, file_get_contents могут вызвать исключительную ситуацию, когда не могут за отведенное время получить контент требуемой страницы( что, как мне кажется, и происходит в вашем случае) испльзуйте конструкцию
    PHP:
    try
    {
        
    //ваш код получения страницы
    }
    catch(
    Exception $ex)
    {
        echo 
    $ex;
    }
    3. учитесь сами проверять ваш код по частям, ставя прерывания выполнения скрипта в разлчиных местах с выводом значений каких-либо переменных. лично я использую
    PHP:
    var_dump(__FILE__ " (" __LINE__ ")");echo "\r\n<br>";exit;
    имхо

    PS:
    PHP:
    if ($_POST('vip5') {
    1. пропущена закрывающая скобка для оператора if
    2. $_POST является массивом и для доступа к значением массива используются квадратные скобки
    PHP:
    if ($_POST['vip5']) {
     
    Squoll2 нравится это.
  7. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    а как сделать чтобы проверял на наличие поля gold а именно что присуствует значение минимум 15

    Добавлено через 4 минуты
    и теперь при нажатии на кнопку ничего непроисходит
    PHP:
    <?php
    include 'header.php';
    include 
    'antisql.php';
    ?>

    <tr><td class="contenthead">Покупка VIP дней</td></tr>
    <tr><td class="contentcontent">
      <?
    if ($_POST['vip5']) {
    mysql_query("UPDATE `grpgusers` SET `gold` = '" . ($user_class->gold - 15) . "', 'rmdays'='" . ($user_class->rmdays + 5) . "' WHERE `id`='" .$_SESSION['id'] . "'");
    echo ("Вы купили 5 VIP дней");
    }  
    ?>
    <form action="" method="post">
        <input type="hidden" name="vip5">
         <input type="submit" value="Купить 5 VIP дней">
      </form>
    </td>
    </tr>   
    <?php
    include 'footer.php';
    ?>  
     
  8. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    1. где вы хотите проверить поле gold
    2. добавьте в самой первой строкой файла header.php вызов функции error_reporting(E_ALL); и посмотрите как будет работать ваш скрипт.
    3. если вы хотите проверять наличие элемента 'vip5' в массиве используйте функцию isset($_POST['vip5']).

    в вашем случае при первом открытие страницы появляется предпреждение, что переменная $_POST['vip5'] не определена, после сабмита формы вы переменная инициализируется, но она пустая и поэтому результат проверки false.
     
  9. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Лучше вот как:
    PHP:
    <?
    if (isset(
    $_POST['vip5'])) {
        if(
    mysql_query("UPDATE `grpgusers` SET `gold` = '" . ($user_class->gold 15) . "', 'rmdays'='" . ($user_class->rmdays 5) . "' WHERE `id`='" .$_SESSION['id'] . "'")) {
            echo (
    "Вы купили 5 VIP дней");
        }
    }  
    ?>
    Исключает недоразумения
     
  10. Squoll2

    Squoll2 Постоялец

    Регистр.:
    2 июн 2009
    Сообщения:
    80
    Симпатии:
    15
    Сколько много информации перевариваю но до сих пор немогу понять почему ничего непроисходит при назжатии на кнопку выполнил последний вариант как посоветовал Albert. Видимо я совсем недоразвитый. Как говорится вот хоть убей но скрипт неработает. Можно ли как то реализовать это по другому этот запрос к базе не кнопкой а например нажимая на ссылку?
     
Статус темы:
Закрыта.