PDA

Zobacz pełną wersję : przekazanie zmiennych z formularza i odświeżenie strony zwykłym HTML + PHP



coolbob
14-06-2013, 13:34
Witam!

Od jakiegoś czasu buduję serwis internetowy przy wykorzystaniu joomli 2.5 (takie było życzenie klienta). Ponieważ dla mnie joomla była nowością serwis tworzyłem w oparciu o własny panel administracyjny i powiązanie artykułów ze skryptami poprzez jumi.
Obecnie mam za zadanie stworzyć moduł zamówień i natknąłem się na problem przesłania formularza z odświeżeniem strony. Strona z formularzem wylicza automatycznie kwoty, VAT itp, więc użycie standardowych rozszerzeń joomli do wysyłania formularzy nie wystarcza.

Użycie jakiegokolwiek adresu lub pozostawienie pustego parametru action w formularzu wywołuje komunikat 404(Page not found).

Czy jest jakikolwiek sposób na przesłanie formularza z danymi i odświeżenie strony bez konieczności tworzenia/użycia modułu czy komponentu ale wykorzystując jedynie czysty PHP/HTML + ew. zmienne systemowe?

pozdrawiam
Robert

coolbob
15-06-2013, 17:53
ok, temat nieaktualny - do usunięcia.

okazało się, że to mój błąd, bo przesyłałem zmienną id metodą post a jednocześnie był wysyłany id artykułu metodą get. Po zmianie nazwy zmiennej wysyłanej postem wszystko działa :)
Swoją drogą dziwne, że joomla nie widzi różnicy w zmiennych przesyłanych metodami post i get :blink:

KES
16-06-2013, 10:11
Strona z formularzem wylicza automatycznie kwoty, VAT itp, więc użycie standardowych rozszerzeń joomli do wysyłania formularzy nie wystarcza.

Swoją drogą dziwne, że joomla nie widzi różnicy w zmiennych przesyłanych metodami post i get

W oby tych przypadkach może twoja wiedza na temat Frameworku Joomla nie jest wystarczająca aby poradzić sobie z tym problemem :)
Joomla potrafi rozróżnić get od posta - nie ma z tym problemu tylko może nie umiesz wyciągnąć tych danych :)

coolbob
16-06-2013, 11:37
W oby tych przypadkach może twoja wiedza na temat Frameworku Joomla nie jest wystarczająca aby poradzić sobie z tym problemem
Joomla potrafi rozróżnić get od posta - nie ma z tym problemu tylko może nie umiesz wyciągnąć tych danych
Pewnie masz rację i nie wstydzę się tego przyznać. Wciąż jestem totalnie zielony w Joomla api. Przymierzam się do nauki ale niestety wciąż brak mi na to czasu... :(

delilaah
20-06-2013, 21:30
Chyba podobny przypadek. Po wrzuceniu kodu do jumi (używam komponentu), po naciśnięciu OBLICZ wyskakuje błąd 404. Co może być nie tak?


<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Formularz</title>

</head>

<body>

<form action="./obliczenia.php?id=send" method="post">

<div>
<select name="input">
<option value="ETRF89">ETRF89</option>
<option value="ETRF2000">ETRF2000</option>
</select>
UKLAD WEJSCIOWY

<select name="output">
<option value="ETRF89">ETRF89</option>
<option value="ETRF2000">ETRF2000</option>
</select>
UKLAD WYJSCIOWY <br />
<br />
<select name="parametry">
<option value="6">6</option>
<option value="7">7</option>
</select>
Ilosc parametrow <br />
<br />

Podaj wspolrzedne: <input name="wspolrzedne" value="" /><br /><br />


<?php
if($_GET['id']=='send')
{

$wybor1 = $_POST['input'];
if ($wybor1 == "ETRF2000")
$a = 1;
else
$a = -1;

$tp7 = [-0.075363702832755*$a,
-0.327912750510101*$a,
0.478988127122265*$a,
6.65087484122395*pow(10,-8)*$a,
-4.92351600188263*pow(10,-8)*$a,
-7.42616035417211*pow(10,-9)*$a,
0.999999947939167*$a];

$tp6 = [-0.267746544578277*$a,
-0.395623284572547*$a,
0.218097917583842*$a,
6.65087480030247*pow(10,-8)*$a,
-4.92351597446133*pow(10,-8)*$a,
-7.42616013752914*pow(10,-9)*$a,
1];

$wybor2 = $_POST['parametry'];
if ($wybor2 == 6)
$tp = $tp6;
else
$tp = $tp7;

$wspol = $_POST['wspolrzedne'];
$tab = explode(",", $wspol);

$out[0]=$tp[0]+$tp[6]*((cos($tp[4])*cos($tp[5]))*$tab[0]+(sin($tp[3])*sin($tp[4])*cos($tp[5])+cos($tp[3])*sin($tp[5]))*$tab[1]+(-cos($tp[3])*sin($tp[4])*cos($tp[5])+sin($tp[3])*sin($tp[5]))*$tab[2]);

$out[1]=$tp[1]+$tp[6]*((-cos($tp[4])*sin($tp[5]))*$tab[0]+(-sin($tp[3])*sin($tp[4])*sin($tp[5])+cos($tp[3])*cos($tp[5]))*$tab[1]+(cos($tp[3])*sin($tp[4])*sin($tp[5])+sin($tp[3])*cos($tp[5]))*$tab[2]);

$out[2]=$tp[2]+$tp[6]*((sin($tp[4]))*$tab[0]+(-sin($tp[3])*cos($tp[4]))*$tab[2]+(cos($tp[3])*cos($tp[4]))*$tab[2]);


echo $out[0]."<br>";
echo $out[1]."<br>";
echo $out[2]."<br>";
}
?>

<input type="submit" value="OBLICZ" name="submit" id="send"/>


</div>

</form>

</body>

</html>

coolbob
20-06-2013, 23:20
./obliczenia.php?id=send
Możesz powiedzieć dokąd ma prowadzić ta ścieżka atrybucie action formularza? Jeśli do pliku obliczenia.php znajdującego się poziom wyżej to powinno być:
../obliczenia.php?id=send Zgubiłeś jedną kropkę...

delilaah
21-06-2013, 00:10
Przepraszam. Są to pozostałości po interwencji w skrypcie kolegi, który sprawdzał czy poza Joomla skrypt działa (działa:)). Tak więc nalezy by to zamienić na:

<form action="" method="post">
i później


<input type="submit" value="OBLICZ" name="submit" >

zgadza się? Mimo tych zmian, błąd pozostaje

KES
21-06-2013, 09:02
@delilaah proponuję poczytać o strukturze Joomla, o jej możliwościach, bibliotekach itp. Zainteresuj się też klasą JFactory::getApplication();