select option в ролята на submit бутон

kikity_94

Registered
Доста тъпо заглавие а? :D Еми не можах да измисля по-умно поне сега..както и да е

Въпроса ми е как може от едно селект меню когато изберем дадена опция и да се изпълнява някакъв код. В случея аз искам при избирането на опция да правя ъпдейт на дадена таблица. Т.е. все едно съм натиснал събмит бутон.
 
в <option onclick="windows.location..................> така само че провери как беше точно event onclick и как точно се редиректваше с js : )
 
kikity_94 каза:
Да но съм виждал и вариянти с php saмо, а за такова нещо и jquery да ползвам... :D

Ами автоматичен събмит на форма не можеш да направиш посредством PHP само. Не за друго е създаден JavaScript, все пак той ти прави динамиката по сайта.

@Jorko, onClick няма да му върши работа, onChange му трябва. Иначе се ползва window.location.href='...'. Но и това не е много хубав вариант. Аз бих пробвал следното:


HTML:
<form name="myform" action="..." method="post">
<select onChange="document.myform.submit()">
...
</select>
</form>
 
Използвай AJAX в комбинация с PHP
http://www.w3schools.com/php/php_ajax_database.asp
http://stackoverflow.com/questions/12032049/automatically-change-php-variable-based-on-select-option-ajax
 
TryMe каза:
kikity_94 каза:
Да но съм виждал и вариянти с php saмо, а за такова нещо и jquery да ползвам... :D

Ами автоматичен събмит на форма не можеш да направиш посредством PHP само. Не за друго е създаден JavaScript, все пак той ти прави динамиката по сайта.

@Jorko, onClick няма да му върши работа, onChange му трябва. Иначе се ползва window.location.href='...'. Но и това не е много хубав вариант. Аз бих пробвал следното:


HTML:
<form name="myform" action="..." method="post">
<select onChange="document.myform.submit()">
...
</select>
</form>

Явно не съм се изказал правилно. :D Имах предвид, че в самият <option> таг си спомням, че се пишеше нещо и то директно събмитва формата и след това нз как да взема стойността както примерно при събмит бутон
PHP:
if(isset($_POST['submit']))
 
Е, то не се слага на option тага, а може да се направи функция след събмит да взимаш value стойността от option тага и да пращаш чрез аякс данните.

Така наизуст не мога да ти кажа какво ще се случи като направиш "това и това" на JavaScript, понеже не съм от най-на ти с него. По-късно, ако не са ти дали решение ще преразгледам темата, да разбера какво точно имаш предвид и ще спретна нещо ;)
 
Въпроса е, че не не знам как да събмитна тази форма тъй като нямам никакъв бутон. Фофрмата ми представлява това
PHP:
$showRangs = mysql_query("SELECT * FROM users_rang ORDER BY rang_id DESC") or die(mysql_error());
echo "<form method='POST' action=''>
<select name='ChangeRang'>
<option>   Смени ранга   </option>";
while($rang = mysql_fetch_assoc($showRangs)) {
echo "<option value='$rang[rang_id]'>$rang[user_rang_text]</option>";
}
echo "</select></form>";

И искам когато от падащото меню се избере дадена опция и директно да правя дадена заявка.
А относно JS халхабер си нямам от него.
 
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Тест.</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function save() {
var menuIndex = document.formMenu.ChangeRang.selectedIndex; 
location = '?act=save&option='+document.formMenu.ChangeRang.options[menuIndex].value;
}
</script>
</head>
<body>
<?php
$act = $_GET['act'];
mysql_connect("localhost","root","password") or die(mysql_error());
mysql_select_db("database");
switch ($act)
{
default:
$showRangs = mysql_query("SELECT * FROM `users_rang` ORDER BY `rang_id` DESC") or die(mysql_error());
?>
<form method="POST" name="formMenu">
<select name="ChangeRang" onChange="save()">
<option selected>   Смени ранга   </option>
<?php
while($rang = mysql_fetch_assoc($showRangs))
{
$id = htmlspecialchars($rang['rang_id']);
$user_rang_text = htmlspecialchars($rang['user_rang_text']);
?>
<option value="<?php echo $id; ?>"><?php echo $user_rang_text; ?></option>
<?php
}
?>
</select>
</form>
<?php
break;
case 'save':
$option = htmlspecialchars($_GET['option']);
echo $option; //това е резултатът от избраният option от selecta , така че в базата данни ще записваш $option.
// mysql_query("UPDATE заявка..") or die(mysql_error());
break;
}
?>
</body>
</html>
 
@ proba защо ми е този огромен код не мога да разбера. Аз успях да си намеря решение точно с 1-2 реда :)

Благодаря на всички които се опитаха да помогнат :)
 
<script type="text/javascript">
function save() {
var menuIndex = document.formMenu.ChangeRang.selectedIndex;
location = '?act=save&option='+document.formMenu.ChangeRang.options[menuIndex].value;
}
</script>

Кое му е огромното ?
+ част за update
И на всичкото отгоре не си казал максимална дължина на кода ;)

Би ли споделил решението на проблема, тъй като на някой би могло да му потрябва, а и на мен ще ми е интересно да го видя.
 
Etо ми го целият код

PHP:
<?php
$showRangs = mysql_query("SELECT * FROM users_rang ORDER BY rang_id DESC") or die(mysql_error());
echo "<form method='POST' action=''>
<select name='users_rang' onchange='this.form.submit()'>";
	while($rang = mysql_fetch_assoc($showRangs)) {
		if($user['user_rang'] == $rang['rang_id']) {
			echo "<option value='$rang[rang_id]' selected='selected'>$rang[user_rang_text]</option>";
		} else {
			echo "<option value='$rang[rang_id]'>$rang[user_rang_text]</option>";
		}
	}
echo "</select></form>";
if(isset($_POST['users_rang'])) {
	$users_rang = $_POST['users_rang'];
	mysql_query("UPDATE users SET user_rang = '$users_rang' WHERE user_id = '$user_id'") or die(mysql_error());
}
?>

Извеждам чрез селект всички рангове и като избера нещо от селект менюто презарежда страницата и директно ъпдейтва таблицата с новата стойност избрана в селекта
Без никакви JS-та и тем подобни :)
 
TryMe каза:
onchange='this.form.submit()'


? Нали и аз това ти дадох, ти викаш - не е това :D

o_O чесно казано май не съм му обърнал тогава голямо внимание за което се извинявам. Получаваш ти точката :)

Radko каза:
То тва ако не е js не знам какво му викаш хаха

еми то може да е js но е точно 3 думички :D както и да е неска съм много отнесен нещо :D
 

Горе