Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] Sprawdzenie formularza przed wysłaniem
Forum PHP.pl > Forum > Przedszkole
zaworek
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>
blade-mrn
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?
zaworek
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>
blade-mrn
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'];
zaworek
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?
Prezi2907

  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...
8_pasarzer_NOSTROMO
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.