Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][MySQL][PHP] Sprawdzenie formularza przed wysłaniem
zaworek
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

Ostrzeżenie: (0%)
-----


Witam, nie mogę poradzić sobie z funkcją sprawdzającą czy przed wysłaniem do bazy wszystkie pola formularza zostały poprawnie dodane. Działający kod bez opcji sprawdzania poniżej:

  1. <html>
  2. <head>
  3. <title>Dodawanie</title>
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. if($send=='Wyslij') {
  9. mysql_connect ("10.134.1.27","quiz","12345");
  10. $zapytanie = "INSERT INTO tools SET nazwa='$nazwa', model='$model', sn='$sn'";
  11. $wykonaj = mysql_query ($zapytanie);
  12. echo "Dane dodane prawidłowo";
  13. } else {
  14. echo '<form method="get" action="dodaj.php" name="formularz">
  15. <td><font size="2" face="Verdana">nazwa</font></td>
  16. <td align="center"><font size="2" face="Verdana"><input type="text" name="nazwa" size="20"></font></td>
  17. <td><font size="2" face="Verdana">model</font></td>
  18. <td align="center"><font size="2" face="Verdana"><input type="text" name="model" size="20"></font></td>
  19. <td><font size="2" face="Verdana">SN</font></td>
  20. <td align="center"><font size="2" face="Verdana"><input type="text" name="sn" size="20"></font></td>
  21. <td colspan="2">
  22. <p align="center"><font size="2" face="Verdana"><input type="submit" value="Wyslij" name="send"><input type="reset" value="Kasuj" name="B2"></font></td>
  23. </form>'
  24. ;
  25. }
  26. ?>
  27. </body>
  28. </html>


Kombinowałem tak, że najpierw dodam funkcję check:

  1. <input type="submit" value="Wyslij" name="send" onClick="check()">


a potem do wszystkiego wstawię poniższy kod ale coś mi to nie wychodzi sadsmiley02.gif

  1. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  2. function check() {
  3. var wartosc = document.formularz.nazwa.value;
  4. var numer = document.formularz.model.value;
  5. var opis = document.formularz.sn.value;
  6. if (nazwa = '')
  7. alert('Nie wypełniłeś pola nazwa');
  8. else
  9. if (model == '')
  10. alert('Nie wypełniłeś model');
  11. else
  12. if (sn== '')
  13. alert('Nie wypełniłeś sn');
  14. else
  15. document.formularz.submit();
  16. }
  17. </script>
Go to the top of the page
+Quote Post
blade-mrn
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


Kod przejrzałem tylko pobieżnie ale przypuszczam że formularz wysyła się bez sprawdzania bo typ przycisku masz submit co jest niepotrzebna bo formularz wysyłasz za pomocą tej sprawdzającej funkcji. Zmień typ przycisku na button i przy sprawdzaniu czy pole nazwa jest puste masz nieprawidłowy operator, brakuje też klamerek przy instrukcjach warunkowych. Radzę też unikać odstępów między operatorami a zmiennymi i do pobierania wartości z pół formularza używać getElementById().
I czemu wstawiasz skrypt JS w znaczniki PHP?

Ten post edytował blade-mrn 4.12.2010, 11:29:39


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
zaworek
post
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

Ostrzeżenie: (0%)
-----


Wprowadziłem poprawki, są już komunikaty, że nie wypełniono poszczególnych pól formularza ale pojawił się inny kłopot - po poprawnym wypełnieniu nic nie dodaje do bazy :/ Gdzie tym razem popełniłem błąd?
Strona zwraca komunikat :

Wiadomość: Obiekt nie obsługuje tej właściwości lub metody.
Wiersz: 20
Znak: 7
Kod: 0

a ten wiersz to właśnie document.formularz.button();

  1. <html>
  2. <head>
  3. <title>Dodaj sprzęt</title>
  4. </head>
  5. <body>
  6. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  7. function check() {
  8. var nazwa = document.formularz.nazwa.value;
  9. var model = document.formularz.model.value;
  10. var sn = document.formularz.sn.value;
  11. if (nazwa == ''){
  12. alert('Nie wypełniłeś pola nazwa');}
  13. else
  14. if (model == ''){
  15. alert('Nie wypełniłeś model');}
  16. else
  17. if (sn== ''){
  18. alert('Nie wypełniłeś sn');}
  19. else
  20. document.formularz.button();
  21. }
  22. </script>
  23. <?php
  24. if($send=='Wyslij') {
  25. mysql_connect ("10.134.1.27","quiz","12345");
  26. $zapytanie = "INSERT INTO tools SET nazwa='$nazwa', model='$model', sn='$sn'";
  27. $wykonaj = mysql_query ($zapytanie);
  28. echo "Dane dodane prawidłowo";
  29. } else {
  30. echo '<form method="get" action="dodaj.php" name="formularz">
  31. <td><font size="2" face="Verdana">nazwa</font></td>
  32. <td align="center"><font size="2" face="Verdana"><input type="text" name="nazwa" size="20"></font></td>
  33. <td><font size="2" face="Verdana">model</font></td>
  34. <td align="center"><font size="2" face="Verdana"><input type="text" name="model" size="20"></font></td>
  35. <td><font size="2" face="Verdana">SN</font></td>
  36. <td align="center"><font size="2" face="Verdana"><input type="text" name="sn" size="20"></font></td>
  37. <td colspan="2">
  38. <p align="center"><font size="2" face="Verdana"><input type="button" value="Wyslij" name="send" onClick="check()"><input type="reset" value="Kasuj" name="B2"></font></td>
  39. </form>'
  40. ;
  41. }
  42. ?>
  43. </body>
  44. </html>


Ten post edytował zaworek 4.12.2010, 20:26:14
Go to the top of the page
+Quote Post
blade-mrn
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


Po pierwsze to po co zmieniłeś document.formularz.submit(); na document.formularz.button(); mi chodziło o to żebyś zmienił typ przycisku w formularzu a nie skrypcie JS. Jeśli w formularzu będziesz miał button to po jego naciśnięciu zostanie wywołana funkcja przypisania do zdarzenia onClick() i w tedy jeśli wszystko będzie się zgadzać ten fragment "document.formularz.submit();" wyśle formularz. W obecnej sytuacji formularz nie jest w ogóle wysyłany.

Po drugie czemu przekazujesz dane z formularza za pomocą GET? POST jest praktyczniejsze i bezpieczniejsze.

Po trzecie gdzie nadajesz tym zmiennym $nazwa $model $sn wartość w skrypcie PHP? Jeśli zmienisz metodę w formularzu na POST będzie to wyglądać tak:
$nazwa = $_POST['nazwa']; i analogicznie dla pozostałych. Natomiast jeśli uprzesz się przy GET to wyglądać to będzie w ten sposób: $nazwa = $_GET['nazwa'];


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
zaworek
post
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

Ostrzeżenie: (0%)
-----


Zastosowałem się do uwag, sprawdzenie formularza działa ale po kliknięciu WYŚLIJ nadal brak rekordów w bazie (brak komunikatu potwierdzającego przesłanie danych z formularza). Co tym razem jest nie tak?

  1. <html>
  2. <head>
  3. <title>Dodaj sprzęt</title>
  4. </head>
  5. <body>
  6. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  7. function check() {
  8. var nazwa = document.formularz.nazwa.value;
  9. var model = document.formularz.model.value;
  10. var sn = document.formularz.sn.value;
  11. if (nazwa == ''){
  12. alert('Nie wypełniłeś pola nazwa');}
  13. else
  14. if (model == ''){
  15. alert('Nie wypełniłeś model');}
  16. else
  17. if (sn == ''){
  18. alert('Nie wpisałes S/N');}
  19. else
  20. document.formularz.submit();
  21. }
  22. </script>
  23. <?php
  24. $nazwa = $_POST['nazwa']; //odbieram dane z formularza
  25. $model = $_POST['model'];
  26. $sn = $_POST['sn'];
  27. if($send=='Wyslij') {
  28. mysql_connect ("10.134.1.27","quiz","12345");
  29. $zapytanie = "INSERT INTO tools SET nazwa='$nazwa', model='$model', sn='$sn'";
  30. $wykonaj = mysql_query ($zapytanie);
  31. echo "Dane dodane prawidłowo";
  32. } else {
  33. echo '<form method="post" action="dodaj.php" name="formularz">
  34. <td><font size="2" face="Verdana">nazwa</font></td>
  35. <td align="center"><font size="2" face="Verdana"><input type="text" name="nazwa" size="20"></font></td>
  36. <td><font size="2" face="Verdana">model</font></td>
  37. <td align="center"><font size="2" face="Verdana"><input type="text" name="model" size="20"></font></td>
  38. <td><font size="2" face="Verdana">SN</font></td>
  39. <td align="center"><font size="2" face="Verdana"><input type="text" name="sn" size="20"></font></td>
  40. <td colspan="2">
  41. <p align="center"><font size="2" face="Verdana"><input type="button" value="Wyslij" name="send" onClick="check()"><input type="reset" value="Kasuj" name="B2"></font></td>
  42. </form>'
  43. ;
  44. }
  45. ?>
  46. </body>
  47. </html>


Czy podpowie ktoś co tym razem jest nie tak?
Go to the top of the page
+Quote Post
Prezi2907
post
Post #6





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----



  1. <html>
  2. <head>
  3. <title>Dodaj sprzęt</title>
  4. </head>
  5. <body>
  6. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  7. function check() {
  8. var nazwa = document.formularz.nazwa.value;
  9. var model = document.formularz.model.value;
  10. var sn = document.formularz.sn.value;
  11. if (nazwa == ''){
  12. alert('Nie wypełniłeś pola nazwa');}
  13. else
  14. if (model == ''){
  15. alert('Nie wypełniłeś model');}
  16. else
  17. if (sn == ''){
  18. alert('Nie wpisałes S/N');}
  19. else
  20. document.formularz.submit();
  21. }
  22. </script>
  23. <?php
  24. $nazwa = $_POST['nazwa']; //odbieram dane z formularza
  25. $model = $_POST['model'];
  26. $sn = $_POST['sn'];
  27. if($send=='Wyslij') {
  28. mysql_connect ("10.134.1.27","quiz","12345");
  29. $zapytanie = "INSERT INTO tools SET nazwa='$nazwa', model='$model', sn='$sn'";
  30. $wykonaj = mysql_query ($zapytanie);
  31. echo "Dane dodane prawidłowo";
  32. } else {
  33. echo '<form method="post" action="dodaj.php" name="formularz">
  34. <td><font size="2" face="Verdana">nazwa</font></td>
  35. <td align="center"><font size="2" face="Verdana"><input type="text" name="nazwa" size="20"></font></td>
  36. <td><font size="2" face="Verdana">model</font></td>
  37. <td align="center"><font size="2" face="Verdana"><input type="text" name="model" size="20"></font></td>
  38. <td><font size="2" face="Verdana">SN</font></td>
  39. <td align="center"><font size="2" face="Verdana"><input type="text" name="sn" size="20"></font></td>
  40. <td colspan="2">
  41. <p align="center"><font size="2" face="Verdana"><input type="button" value="Wyslij" name="send" onClick="check()"><input type="reset" value="Kasuj" name="B2"></font></td>
  42. </form>'
  43. ;
  44. }
  45. ?>
  46. </body>
  47. </html>

2 pytania:

1. Wróciłeś dla testu do opcji
  1. <p align="center"><font size="2" face="Verdana"><input type="submit" value="Wyslij" name="send" onClick="check()"><input type="reset" value="Kasuj" name="B2"></font></td>
  2. </form>'

Po poprawce tych nawiasów itd ?
Jeśli tak to narzuca się drugie pytanie.
2. Może dodaj w kodzie:(daje w XML bo nie ma JS)
  1. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  2. function check() {
  3. var nazwa = document.formularz.nazwa.value;
  4. var model = document.formularz.model.value;
  5. var sn = document.formularz.sn.value;
  6. var send = document.formularz.send.value;
  7. if (nazwa == ''){
  8. alert('Nie wypełniłeś pola nazwa');}
  9. else
  10. if (model == ''){
  11. alert('Nie wypełniłeś model');}
  12. else
  13. if (sn == ''){
  14. alert('Nie wpisałes S/N');}
  15. else {
  16. return [nazwa, model, sn, send];
  17. document.formularz.submit();}
  18. }
  19. </script>

Bo coś chyba ci nie pobiera tego Submita i może to pomoże...
smile.gif
Gdybyś rozwiązał problem to napisz co było nie tak bo uczę się komunikacji PHP JS MySQL...
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post
Post #7





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

Ostrzeżenie: (0%)
-----


Dopisuje do kotleta bo szkoda nowego zakładać.

Krótki formularz i prośba o pomoc

  1. <script type="text/javascript">
  2. function check()
  3. {
  4. chb = document.getElementsByName("wyniki[]");
  5. ile = 0;
  6. for (i=chb.length-1; i>=0; i--)
  7. if (chb[i].value=="") ile++;
  8. if (!ile)
  9. {alert("Wybierz cos");
  10. return false;
  11. }
  12. }



  1. print"<form action='janusz.php' name='fo3' method='GET' onsubmit=\"return check();\">";
  2. print"Wynik 1<select name='wyniki[]' style='width: 45px; size='1'>";
  3. print"<option value='' selected></option>";
  4. print"<option value='1'>1</option>";
  5. print"<option value='2'>2</option>";
  6. print"<option value='3'>3</option>";
  7. echo"</select>";
  8.  
  9. print"Wynik 2<select name='wyniki[]' style='width: 45px; size='1'>";
  10. print"<option value='' selected></option>";
  11. print"<option value='1'>1</option>";
  12. print"<option value='2'>2</option>";
  13. print"<option value='3'>3</option>";
  14. echo"</select>";
  15.  
  16. print"Wynik 3<select name='wyniki[]' style='width: 45px; size='1'>";
  17. print"<option value='' selected></option>";
  18. print"<option value='1'>1</option>";
  19. print"<option value='2'>2</option>";
  20. print"<option value='3'>3</option>";
  21. echo"</select>";
  22.  
  23. echo"inne wyniki : <input type='text' name='tekst' value='' size='100'>";
  24. echo"<input type='submit' name='status' value='Wyslij'></form>";


Jak zrobić by wymusić wybranie czegokolwiek z select lub uzupełnienie pola tekst.
Czyli albo cokolwiek w tablicy [wyniki] albo wypełnione pole tekst. Lub oba na raz tez dopuszcza dalej.


Up
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:39