[ROZWIĄZANE] Odświeżenie Informacji <s...
ELOS
02.07.2012
Mam zrobiony prosty formularz
Dla czego gdy zmienię wartość select nie działa funkcja
Nie wiedziałem do jakiego działu się bardziej ten temat nadaje czy do pomocy czy do pytań więc przepraszam.
<select name="test" onchange='document.form.submit.click();'> <option>0</option> <option>1</option> <option>2</option> </select>ifa na ustalanie zmiennej
if($test == 1) { $kasa=0.80; } if($test == 2) { $kasa=0.90; }oraz prosty scrypt na pokazywanie
if($test == 0 || empty($test)) { echo "Aby Zobaczyć wybierz z listy"; } else { echo "$kasa zl"; } }Do tego mam oczywiście zmienne o wartości zwracanej przez formularz.
Dla czego gdy zmienię wartość select nie działa funkcja
onchange='document.form.submit.click();'Jak mogę zrobić to w inny sposób ?
Nie wiedziałem do jakiego działu się bardziej ten temat nadaje czy do pomocy czy do pytań więc przepraszam.
Gość_21977_* 02.07.2012
nadaj formularzowi id i wykonaj na select
edit. Przykład:
A tutaj ew. wersja z onchange:
Użytkownik benio101 edytował ten post 02.07.2012 16:54
oninput="document.getElementById('idFormularza').submit()"A najlepiej pokaż więcej kodu, bo trudno jest tak gdybać w ciemno.
edit. Przykład:
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="test" method="post" id="a">
<select name="a">
<option disabled selected value="">Wybierz wartość</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input oninput="document.getElementById('a').submit()" placeholder="Wpisz cokolwiek, aby kontynuować" size="30"></input>
</form>
<?
echo "<br>Wartość: ".$_POST[a];
?>
</body>
</html>
A tutaj ew. wersja z onchange:
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="test" method="post" id="a">
<select onchange="document.getElementById('a').submit()" name="a">
<option disabled selected value="">Wybierz wartość</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
</form>
<?
echo "<br>Wartość: ".$_POST[a];
?>
</body>
</html>
Użytkownik benio101 edytował ten post 02.07.2012 16:54
ELOS
02.07.2012
Id mam nadane.
Żaden ze sposobów nie działa ponieważ przy zmianie wartości select ma odświeżyć informacje a nie wysyłać formularz.
Mój Kod.
Żaden ze sposobów nie działa ponieważ przy zmianie wartości select ma odświeżyć informacje a nie wysyłać formularz.
Mój Kod.
<?php ob_start(); session_start(); ?><p style="padding-left:10px; padding-bottom:5px; padding-top:5px; margin-left:10px; margin-top:10px; margin-right:10px; margin-bottom:10px; background-color: #1b1b1b;border-top: 1px #363636 solid;border-right: 1px #363636 solid; border-left: 1px #363636 solid;border-bottom: 1px #363636 solid; "> <?php include('db.php'); if(isset($_SESSION['login'])) { $login = $_SESSION['login']; $wynik = mysql_query("SELECT * FROM uzytkownik WHERE login='$login'") or die("Błąd w zapytaniu!"); $rek = mysql_fetch_array($wynik); $pokemon = $_POST["pokemon"]; if($pokemon == Pikachu) { $kasa=0.80; } if($pokemon == Bulbasaur) { $kasa=0.90; } if ($_POST["wyslane"]) { $nick = $_POST["nick"]; $name = $_SESSION['login']; if($rek['money'] >= $kasa) { if($pokemon == "Wybierz Pokemona") { echo "Musisz wybrać pokemona z listy"; } else if($nick) { include('funkcje.php'); include_once('include/socketclient.php'); include_once('include/hldsrcon.php'); zabierz_kase($name,$kasa); $rcon_ip = "31.186.84.46"; $rcon_port = "27113"; $rcon_password = "mojehasloj"; $cmd = 'pm_givepoke "'.$nick.'" '.$pokemon.' 1'; $rcon = new HLDSRcon($rcon_ip, $rcon_port, $rcon_password); $result = $rcon ->cmd($cmd); add_log($name, "Zakupił pokemona o id $pokemon dla nicku $nick"); add_log_money($name,"-".$kasa,"Kupno Pokemona"); echo "Kupiles Pokemona, zostal dodany do twojego plecaka, jezeli plecak byl zapelniony sprawdz w EMP.<br><br>"; } else { echo "Musisz wypelnic pole NICK!"; } } else { echo "Musisz posiadać $kasa zł"; } } $nickk = $_SESSION['login']; echo <<< KONIEC <table> <form method="post" name="form" id="form" action="?strona=kup_poka"> <input type="hidden" name="wyslane" value="TRUE" /> <br>Kup Pokemona zostanie ci on dostarczony w trybie natychmiastowym!.<br> <b>Pamiętaj aby kupując pokemona być na serwerze oraz mieć wolne miejsce w plecaku lub EMP!</b><br><br> <tr> <td>Użytkownik:</td> <td><input type="text" name="name" value="$nickk" disabled="disabled"/></td> </tr> <tr> <td>Nick:</td> <td><input type="text" name="nick" /></td> </tr> <tr> <td>Pokemon:</td> <td> <select onchange="document.getElementById('form').submit()" name="pokemon"> <option disabled selected value="">Wybierz Pokemona</option> <option>Bulbasaur</option> <option>Pikachu</option> </select></td> </tr><tr> <td> </td> <td><input type="submit" value="Wyślij formularz" /></td> </tr></form> </table> <br> KONIEC; if($pokemon == "Wybierz Pokemona" || empty($pokemon)) { echo "Aby Zobaczyć koszt pokemona, wybierz go z listy"; } else { echo "Koszt $kasa zł"; } } else { include('dostep.php'); } ?>
Gość_21977_* 02.07.2012
Nie możesz w ten sposób tego zrobić.
Zamiast PHP, użyj do generowania JavaScriptu.
Kod PHP wykonywany jest po stronie serwera przed wysłaniem do użytkownika / odwiedzającego stronę.
JS z kolei wykonywany jest po stronie użytkownika i będzie w tym wypadku najlepszą metodą dynamicznego generowania kosztu.
Zamień Twój kod ostatniej tabeli na
Zamiast PHP, użyj do generowania JavaScriptu.
Kod PHP wykonywany jest po stronie serwera przed wysłaniem do użytkownika / odwiedzającego stronę.
JS z kolei wykonywany jest po stronie użytkownika i będzie w tym wypadku najlepszą metodą dynamicznego generowania kosztu.
Zamień Twój kod ostatniej tabeli na
<script>Ponadto, w Twoim kodzie wybranie jakiegokolwiek Pokemona, wysyłałoby natychmiast formularz bez możliwości zmiany decyzji czy nawet zapoznania się z ceną Pokemona.
function zmienKoszt(Pokemon){
var koszt=" ";
switch(Pokemon){
case 'Pikachu': koszt="Koszt: 0.90 zł";
case 'Bulbasaur': koszt="Koszt: 0.80 zł";
}
document.getElementById('koszt').innerHTML=koszt;
}
</script>
<table>
<form method="post" name="form" id="form" action="?strona=kup_poka">
<input type="hidden" name="wyslane" value="TRUE" />
<br>Kup Pokemona zostanie ci on dostarczony w trybie natychmiastowym!.<br>
<b>Pamiętaj aby kupując pokemona być na serwerze oraz mieć wolne miejsce w plecaku lub EMP!</b><br><br>
<tr>
<td>Użytkownik:</td>
<td><input type="text" name="name" value="$nickk" disabled="disabled"/></td>
</tr>
<tr>
<td>Nick:</td>
<td><input type="text" name="nick" /></td>
</tr>
<tr>
<td>Pokemon:</td>
<td>
<select onchange="zmienKoszt(this.value)" name="pokemon">
<option disabled selected value="">Wybierz Pokemona</option>
<option value="Bulbasaur">Bulbasaur</option>
<option value="Pikachu">Pikachu</option>
</select></td>
</tr><tr>
<td id="koszt"> </td>
<td><input type="submit" value="Wyślij formularz" /></td>
</tr></form>
</table>
ELOS
02.07.2012
+ dla ciebie ale czemu to działa tylko przy 1 wyborze ? jeżeli wybrałem już Bulbasaura i potem zmieniam na Pikachu to już nie zmienia ceny.
Gość_21977_* 03.07.2012
No tak, bo zapomniałem dodać break; po case.
<script>
function zmienKoszt(Pokemon){
var koszt=" ";
switch(Pokemon){
case 'Pikachu': koszt="Koszt: 0.80 zł"; break;
case 'Bulbasaur': koszt="Koszt: 0.90 zł"; break;
}
document.getElementById('koszt').innerHTML=koszt;
}
</script>
<table>
<form method="post" name="form" id="form" action="?strona=kup_poka">
<input type="hidden" name="wyslane" value="TRUE" />
<br>Kup Pokemona zostanie ci on dostarczony w trybie natychmiastowym!.<br>
<b>Pamiętaj aby kupując pokemona być na serwerze oraz mieć wolne miejsce w plecaku lub EMP!</b><br><br>
<tr>
<td>Użytkownik:</td>
<td><input type="text" name="name" value="$nickk" disabled="disabled"/></td>
</tr>
<tr>
<td>Nick:</td>
<td><input type="text" name="nick" /></td>
</tr>
<tr>
<td>Pokemon:</td>
<td>
<select onchange="zmienKoszt(this.value)" name="pokemon">
<option disabled selected value="">Wybierz Pokemona</option>
<option value="Bulbasaur">Bulbasaur</option>
<option value="Pikachu">Pikachu</option>
</select></td>
</tr><tr>
<td id="koszt"> </td>
<td><input type="submit" value="Wyślij formularz" /></td>
</tr></form>
</table>
G[o]Q
03.07.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL