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

Статус
В этой теме нельзя размещать новые ответы.

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'] . "'");
 
Ну во-первых можно сделать чтобы по нажатию кнопка сабмитилась в скрипт, который выполняет запрос.
Второй вариант — продвинутый, по нажатию яваскриптом запрос в скрипт, который возвращает {status:1} и тот же яваскрипт выводит «выполнено»
 
а пример можно показать?
 
а пример можно показать?
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'] . "'");
}
 
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
 
приведенная ами форма в предыдущей теме работает нормально. несколько замечаний:
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']) {
 
а как сделать чтобы проверял на наличие поля 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';
?>
 
1. где вы хотите проверить поле gold
2. добавьте в самой первой строкой файла header.php вызов функции error_reporting(E_ALL); и посмотрите как будет работать ваш скрипт.
3. если вы хотите проверять наличие элемента 'vip5' в массиве используйте функцию isset($_POST['vip5']).

в вашем случае при первом открытие страницы появляется предпреждение, что переменная $_POST['vip5'] не определена, после сабмита формы вы переменная инициализируется, но она пустая и поэтому результат проверки false.
 
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
Лучше вот как:
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 дней");
    }
}  
?>
Исключает недоразумения
 
Сколько много информации перевариваю но до сих пор немогу понять почему ничего непроисходит при назжатии на кнопку выполнил последний вариант как посоветовал Albert. Видимо я совсем недоразвитый. Как говорится вот хоть убей но скрипт неработает. Можно ли как то реализовать это по другому этот запрос к базе не кнопкой а например нажимая на ссылку?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху