Posio
30.08.2011, 14:54:42
Witam. Mam do stworzenia formularz. Tyle że nie ma to być zwykły HTML'owski formularz, tylko formularz aktywny.
Chodzi mi o to, że gdy mam 2 pola. Przyładowo #1-Ilość paczek na palecie, #2-Ilość palet gdzie #1=2 i #2=4 w trzecim okienku (zablokowanym) wyskoczy mi całkowita ilość paczek czyli 2*4=8, wszystko miało by się dziać bez odświeżania strony. Wiem że jest to powiązane z AJAX'em ale nie znalazłem zadnego tutoriala, który by mi to dostatecznie wyjaśnił.
Dane z tego formularza oczywiście później mają zostać wysłane do innego pliku.
Jeśli ktoś był by wstanie mnie nakierować, z czego mam skorzystać, jakieś linki to był bym wdzięczny.
Pozdrawiam
sada
30.08.2011, 15:50:56
Żeby wyskakiwała aktualna suma bez odświeżania wystarczy JS, czy jQuery,a do wysłania to do innego skryptu też nie potrzebujesz Ajaxa chyba , że chcesz wysłać bez odświeżania.
Posio
30.08.2011, 15:58:46
chodzi o to, że właśnie nie wiem czego potrzebuje... Ogarniam juz PHP, HTML, CSS ale nic o JS czy Ajaxie nie wiem... I nigdzie nie moge znaleźć nic co by mi w tym pomogło. Twój post niewiele mi pomógł ;/
zależy mi na tym, żeby ta suma generowała się bez odświeżania....
drozdii07
30.08.2011, 16:39:20
Najprościej będzie wysłać dane przez AJAX zrobiony w jQuery

pierwsze_pole = $("#pierwsze_pole").val();
drugie pole = $("drugie_pole").val();
$.ajax({
type: 'POST',
url: 'plik.php',
data: {pierwsze_pole: pierwsze_pole, drugie_pole: drugie_pole}
success: function(msg){
$("#wynikowydiv").html(msg);
}
Pisane z pamięci mogą być błędy. Podstaw sobie wszystkie potrzebne dane pod to

W pliku PHP robisz dodawanie, czy co tam chcesz, i echujesz te dane.
A dane z AJAX'a odbierasz tak:
$_POST['pierwsze_pole'] // I tak dalej..
EDIT: Mała poprawka w kodzie..
Posio
30.08.2011, 16:44:01
a mogl bys mi wytłumaczyc na jakiej zasadzie to działa? żbym troche nauczył się tego JS
drozdii07
30.08.2011, 16:48:29
pierwsze_pole = $("#pierwsze_pole").val();
drugie pole = $("drugie_pole").val();
Pobiera dane które są aktualnie wpisane do formularza..
$.ajax to wysyłanie danych do pliku podanego w url a reszta dzieje się w pliku PHP. Jeśli wszystko się uda czyli skrypt PHP zwroci odpowiedz to wykona się success:
$("#wynikowydiv").html(msg)
Zmienia wartośc DIV'a wynikowydiv na to co wrócił skrypt PHP
Posio
30.08.2011, 16:54:25
Ok czyli tak.
Do strony dodałem core JQUERY.
ten kod co mi dałeś wrzucic w jakieś <script></> ?
i w jaki sposób mam zwrócić ten wynik w moim pliku php ?
drozdii07
30.08.2011, 16:57:29
Polecam wrzucić JS w osobny plik

Mniejszy bałagan, tylko pozmieniaj sobie nazwy DIV'ow itp. a w PHP robisz tak:
$pierwsze = $_POST['pierwsze_pole'];
$drugie = $_POST['drugie_pole'];
$wynik = ($pierwsze + $drugie);
Posio
30.08.2011, 17:09:38
Jednak coś chyba robie cały czas nie tak.
Pliki wyglądaja tak
index
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="js/jquery-1.6.2.js"></script>
<script>
pierwsze_pole = $("#cena").val();
drugie_pole = $("#vat").val();
$.ajax({
type: 'POST',
url: 'plik.php',
data: {cena: cena, vat: vat}
success: function(msg) {
$("#wynik").html(msg); }
</script>
</head>
<body>
<form>
<input type="number" name="cena" />
<input type="number" name="vat" />
<input type="number" name="wynik" value="
<? echo $wynik; ?>" />
</form>
<body>
</body>
</html>
edytor wywala mi syntax tutaj:
success: function(msg) {
plik
<?
$cena = $_POST['cena'];
$vat = $_POST['vat'];
$wynik = ($cena * $vat);
?>
chyba coś robię źle ;/
drozdii07
30.08.2011, 17:12:22
No tak zapomniałem zamknąć AJAX'a

dopisz po klamrze konczącej success takie cos: })
Posio
30.08.2011, 17:17:40
doszedłem do tego błędu,
kompletnie nie wiem jak wyświetlić wynik ....
drozdii07
30.08.2011, 18:18:44
No jak nie wiesz ? Ale w PHP czy jak ?
Posio
30.08.2011, 18:30:25
no żeby mi się w tym formularzu wyświetliło...
drozdii07
30.08.2011, 18:32:29
$("#IDFormularza").attr("value", msg);
Daj to w success: w AJAX'ie
Posio
30.08.2011, 18:42:50
zrobiłem tak:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="js/jquery-1.6.2.js"></script>
<script type="text/javascript">
pierwsze_pole = $("#cena").val();
drugie_pole = $("#vat").val();
$.ajax({
type: 'POST',
url: 'plik.php',
data: {cena: cena, vat: vat},
success: function(msg){
$("#1").attr("value", msg);
}
});
</script>
</head>
<body>
<form action="plik.php">
<input type="number" name="cena" />
<input type="number" name="vat" />
<input type="number" name="wynik" id="1" />
<body>
</body>
</html>
i nic mi nie wyświetla...
przemo191
30.08.2011, 20:46:23
1. Czemu masz kilka znaczników body?
2. Nie wiem czy to ma znaczenie, ale nie zamknąłeś <form>.
Co do samego skryptu, to jestem zielony w js i ajax. Więc Ci nie pomogę.
markonix
31.08.2011, 08:08:23
pierwsze_pole = $("#cena").val();
drugie_pole = $("#vat").val();
...
data: {cena: cena, vat: vat},
To nie ma prawa działać. Poza tym przyjmując, że nazwy zmiennych są prawidłowych to i tak te wartości nie pobierają danych bo #cena to element o ID cena, a takiego nie widzę. To jest analogia do CSS - pisałeś, że znasz więc to popraw odpowiednio i debuguj problem. No i ostatnia sprawa cały skrypt warto by podpiąć pod jakiś event bo teraz wykonuje się raz - przy załadowaniu strony.
piotrek_ma_problem
31.08.2011, 10:01:26
<script type="text/javascript">
function oblicz(){
var a = document.nazwa_form.zm_a1.value;
var b = document.nazwa_form.zm_a2.value;
var d= Math.floor(a * B);
document.nazwa_form.text_name1.value = d;
return true;
}
<FORM METHOD=POST name="nazwa_form" autocomplete=off>
<input type="radio" name="lvalue" value="<?echo $lvalue_1;?>">
<input type="text" disabled="disabled" id="text_name1" name="text_name1"onkeydown="return isNumberKey(event);" Value="<?echo $lvalue_1;?>">
<br><br> <INPUT TYPE="text" NAME="zm_a1" VALUE="" id="txtChar" onkeydown=" oblicz();" onkeyup="oblicz();" onblur="check_zm_a();">
<INPUT TYPE="text" NAME="zm_a2" VALUE="" id="txtChar" onkeydown=" oblicz();" onkeyup="oblicz();" onblur="check_zm_a();"
może coś takiego ci pomoże ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.