[PHP] Button - onClick

0
<html>

<head>
  <title></title>
</head>

<body>

<?
 $suma = $zm1 + $zm2;
   print '<input name="Name1" type="text" value="'.$zm1.'">';  //edit1
    print '<BR>';
     print '<input name="Name2" type="text" value="'.$zm2.'">';  //edit2
     print '<BR>';
    print '<input name="Name3" type="text" value="'.$suma.'">'; //edit3 okno z sumą
   print '<BR>';
  print '<input type="button" value="Suma" onClick = "value='.$suma.'">'; //przycisk
?>

</body>

</html>

Witam.
Od dziś ucze się PHP, co cholernie mnie wciągnęło i zacząłem robić prosta operację dodania dwóch liczb do siebie i przedstawienie sumy w Edit. Pierwsze dwa edity służą jako składowe do zsumowania. Sumę chcę przedstawić za kliknięciem na Button no i tu mam problem.

PYTANIE
Jak za pomocą buttona zsumować liczby z dwóch pierwszych editów za pomocą wzoru $suma = $zm1 + $zm2; i sumę przedstawić w tym trzecim edicie?

Tamto co napisałem:

  print '<input type="button" value="Suma" onClick = "value='.$suma.'">'; //przycisk

jest oczywiście źle bo jak klikne to mi pokazuje zero jako value buttona. Dzięki za pomoc. ;]

0
<?php
$suma="";
if (isset($_POST['liczba1']) && isset($_POST['liczba2'])) {
$suma = $_POST['liczba1'] + $_POST['liczba2'];
}
?>

<form action="" method="POST">
liczba 1:<input size="30" type="text" name="liczba1">
Liczba2<input size="30" type="text" name="liczba2">
Wynik:<input size="30" type="text" name="stronwa" value="<?php echo $suma; ?>" >
<input type="submit" value="OK" />
</form>

. Najlepiej to zrobic w js. Od razu masz wynik bez odświeżania stronki. I tez mozesz sprawdzic czy zmienna ma liczbe czy text

0

Kolega Bordeux już podał jedną z możliwości. Niestety mylisz jeszcze JavaScript (interpretowany po stronie klienta - przez Twoją przeglądarkę), oraz PHP (interpretowany po stronie serwera).

Zdarzenie onClick jest zdarzenie JS i nie ma nic do PHP, bo uruchamia kod JS nie wysyłając danych do serwera, natomiast jeśli to PHP ma obsługiwać, to tak jak napisał mój przedmówca, należy wysłać dane formularza na serwer używając przycisku SUBMIT. Dla porządku przedstawiam rozwiązanie działające w JS (onClick), działa, można by czytelniej, ale tak jest chyba najbardziej prawidłowo. ;-P

<html>
  <body>
    <form name="test">
      <input name="var1" value="0"><br/>
      <input name="var2" value="0"><br/>
      <input type="button" value="dodaj"
       onclick=            "document.getElementsByName('wynik')[0].value=
                parseFloat (document.getElementsByName('var1')[0].value) +
                parseFloat (document.getElementsByName('var2')[0].value) "><br/>
    </form>
    wynik: <input name="wynik" value="0">
  </body>
</html>
0

No własnie coś takiego chciałem uzyskać. :-)
Tylko denerwujące jest to że aby podać wynik to musi się odświezyć strona i tak jak piszesz, przydałoby się to zrobić w JS, którego też się będe uczył.
Teraz muszę znaleźć sobie jakieś serwer z obsługą PHP i swobodnie sobie odpalać pliki PHP z niego i żeby one mi się parsowały a nie że przegladarka mi pokazuje źródło :/

A do pisania skryptów używam PHP Expert Editor - super ;)
Musze się jeszcze dowiedzieć co to te metody POST są itd.

0

onclick, nie onClick - wielkosc liter ma znaczenie

0

onclick, nie onClick - wielkosc liter ma znaczenie

Przyzwyczajenie z Delphi. :>

0

@Beginnerz - osobiście polecam zainstalować sobie na własnym komputerze lokalny serwer HTTP z PHP (ja wolę postawić wszystko osobno, bo dobieram sobie konfigurację jak chcę, ale do zastosowań edukacyjnych na początek polecam jakiś komplet typu Krasnal czy coś takiego).

Jeśli chodzi o naukę JS i ogólnie zrozumienie jak działa komunikacja klient-serwer - polecam przejrzenie http://www.w3schools.com - jest tam bardzo jasno i na przykładach opisana większość technologii, jakie stosuje się przy tworzeniu stron internetowych od początku do końca.

Co do wielkości liter w atrybutach - mają znaczenie, jeśli używa się XHTMLa, jako że jest to dialekt XMLa, który wielkość liter rozróżnia. "Stary" HTML nie robi tutaj różnicy (onClick, onclick, ONCLICK, nawet oNCliCK - to wszystko zadziała). Mimo wszystko polecam przyzwyczajanie się do pisania wszystkich elementów małymi literami, bo kiedyś tak czy siak będziesz musiał (zakładając, że będziesz kontynuował pisanie stron internetowych) przesiąść się na XHTML i wówczas będzie prościej.

0

Adam.Pilorz masz absolutną rację.
Ogólnie przyjąłem sobie taki model że chcę nauczyć się PHP i od razu MySQL (JS kiedys tam), aby tworzyć sobie strony w których będe zapisywał sobie dane do bazy z formularza na tej stronie. Bazę tą chciałbym od razu sobie odpalać w programie którgoe napisze w Delphi.

Czyli:

HTML&PHP + MySQL i aplikacje w Delphi.

Ogólnie SQL i Delphi umiem.

Zainstalowałem wczoraj Krasnala i tam mam PHPMyAdmin. Tam niby tworzę bazę, ale nie wiem gdzie ten plik z bazą się zapisuje na dysku i czy w ogóle sie gdzieś zapisuje. :/ Tak jak np. robię to w Firebird (baza.fdb) itd. Utworzoną bazę chciałem obsłużyć w Delphi. Mam dużo nauki ale to w przyszłości zaprocentuje.

Najgorsze jest to że nie mogę odpalić pliku PHP na jakimś serwerze bo co znajde jakiś to PHP płatne. :/
A jak gdzieś już coś umieszczę to zamiast parsowania pliku, wyświetla mi całe jego źródło. :/

0

tak jest Panie kolego Tomkiewicz. onclicki basta. Małe litery wprowadzono bodaj od implementacji DOM Level 3 (2004 r). W kodzie mam dobrze, żeby nie było.

Beginnerz:
Jeśli chodzi o PHP na serwerach, to wpisz w google: free php hosting - i już
możesz zacząć też od strony: http://www.0php.com/free_PHP_hosting.php

Choć jeśli traktujesz sprawę poważniej, to lepiej zainstaluj sobie coś lokalnie (WAMP, XAMPP, czy osobno).

0

popelniasz podstawowy blad przy ogolnej nauce webmasteringu.
zacznijmy od tego, ze nie mozesz tak po prostu laczyc ze soba HTML i PHP, jakby to mialy byc uzupelniajace sie jezyki. Nauka dwoch jednoczesnie jest zlym pomyslem. Juz samo twoje pytanie pokazuje, ze nie masz pojecia czym jest PHP.
podpowiem ci, jak powinienes sie uczyc. to jest naprawde najlepszy sposob:
dzilanie protokolu HTTP. nie musisz znacz dokladnie wszystkich szczegolow, ale powinienes wiedziec co to w ogole jest.

HTML - wydaje mi sie, ze cos tam sie orientujesz. dlatego powiem od razu. HTML jest jakby obecnie nieelegancki. lepiej zapoznaj sie z XHTML
przeczytaj kilka kursow.
od razu zapoznaj sie z CSS
i analogicznie przeczytaj jakeis kursy

jezeli bedziesz juz pewny, ze umiesz zrobic statyczna strone, ktora bedzie sensownie wygladala, nie bedzie zawierac bledow skladnie - patrz walidator, to wtedy mozesz zajac sie server-side, np uczac sie PHP. kurss takze mozna znalezc na google. http://php.net to podstawa. znajdziesz tam wszystko.
dobrze, zebys nie kojarzyl PHP jako jezyka, ktorego wynik dzialania to strona w HTML'u - to jest bardzo zle rozumowanie.

jezeli jednak pojdziesz swoja droga, to powiedzmy szczerze: dupa, a nie webmaster z ciebie bedzie. najwazniejsze zeby rozumiec, co sie robi. jezeli nie wiesz czegos, pytaj na forum w dziale Newbie - pamietaj przeczytac regulamin tego dzialu!

0

jezeli jednak pojdziesz swoja droga, to powiedzmy szczerze: dupa, a nie webmaster z ciebie bedzie. najwazniejsze zeby rozumiec, co sie robi. jezeli nie wiesz czegos, pytaj na forum w dziale Newbie - pamietaj przeczytac regulamin tego dzialu!

Na codzień siedzę w Delphi i to jest moja główna działka - programowanie.
Webmastering mnie mniej interesuje, ale chciałem też to poznać. Więc mogę być dupa nie webmaster. :P

A o PHP nie mam pojęcia bo uczę się go dopiero kilka godzin. [rotfl]
Ale pierwsze małe skrypty już piszę.

0

zeby bylo bez przeladowania strony mozesz uzyc biblioteki advAJAX, potrzebne beda dwa pliki na serwerze:

policz.php
<?php echo $_GET['zm1'] + $_GET['zm2']; ?>

index.html

<script src="http://advajax.anakin.us/advajax.js"></script>
<script>
function policz(frm) {
  advAJAX.get( {
    url: 'policz.php',
    parameters : {
      'zm1' : frm.zm1.value,
      'zm2' : frm.zm2.value
    },
    onSuccess : function(obj) { 
      alert(obj.responseText); 
    }
  } );
}
</script>
<form onsubmit="policz(this); return false">
  <input type="text" name="zm1" />
  <input type="text" name="zm2" />
  <input type="submit" />
</form>
0

@Beginnerz: Z tym, że PHP jest językiem programowania. Jeśli piszesz skrypt w PHP, to programujesz. A jeśli ograniczasz znajomość programowania do znajomości konkretnego języka (Delphi), to, parafrazując, będziesz dupa a nie programista. Żeby stworzyć jakikolwiek program/skrypt trzeba najpierw zrozumieć problem i określić, co się chce osiągnąć. Następnie dobiera się do tego odpowiednie narzędzie/język programowania (i tutaj - do dodawania dwóch liczb z inputów na stronie - PHP nie jest najlepszym wyborem). Jak już dobierze się narzędzie, to dopiero zabiera się za tworzenie programu.

Tak, jak Karolaq napisał - bez nauczenia się jak funkcjonuje HTTP i jak tworzyć stronę w XHTML (ostatecznie HTML) nie ma sensu zabierać się za PHP w kontekście języka siedzącego jako back-end stron internetowych.

Co do Delphi+MySQL. Od strony programisty Delphi nie interesuje Cię, gdzie siedzą pliki MySQL. Ty łączysz się z serwerem bazy danych, aplikacją MySQLd i jemu wydajesz polecenia (SQL), na które on odpowiada. Serwer może być na tej samej maszynie, co klient, a może stać po drugiej stronie Globu. Ciebie to nie interesuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1