Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/MySQL] Dodawanie rekordu
shado
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 14.05.2014

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


Mam taki skrypt:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. if($send=='Wyslij') {
  7.  
  8. mysql_connect ("localhost","root","");
  9. mysql_select_db (praca);
  10. $zapytanie = "INSERT INTO pracownicy SET zarobek='$zarobek'";
  11. $wykonaj = mysql_query ($zapytanie);
  12. echo "<BR>Dane dodane prawidłowo";
  13.  
  14. }
  15. ?>
  16. <form method="get" action="add.php">
  17. <div align="center">
  18. <center>
  19. <table border="1" width="50%" bordercolorlight="#000000" cellspacing="0" cellpadding="0">
  20. <tr>
  21. <td width="50%"><font size="2" face="Verdana">Ilość:</font></td>
  22. <td width="50%" align="center"><input type="text" name="zarobek" size="20"></font></td>
  23. </table>
  24. <p align="center"><font size="2" face="Verdana"><input type="submit" value="Wyslij" name="send"><input type="reset" value="Kasuj" name="B2"></font></td>
  25. </center>
  26. </div>
  27. </form>
  28. </body>
  29. </html>


Jednakpo wpisaniu liczby w polu i zatwierdzenia nie wyskakuje żaden błąd ani nic ale w bazie też nie dodaje się ta liczba, co jest źle ? ;d
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kartin
post
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Pewnie to co jest w if nie jest w ogóle wykonywane.

Dyrektywa register_globals od PHP w wersji 4.2 jest domyślnie ustawiona na off a od wersji 5.4 została usunięta.

Zamiast $send użyj $_GET['send'], to samo ze zmienną $zarobek.

  1. $zapytanie = "INSERT INTO pracownicy SET zarobek='$zarobek'";
  2. $wykonaj = mysql_query ($zapytanie);
  3. echo "<BR>Dane dodane prawidłowo";


Skoro praca jest ciągiem znaków a nie stałą to powinno się ją ująć w apostrofy lub cudzysłowy.
Wygląda, że w zapytaniu brakuje WHERE i odpowiedniego warunku. Obecne zapytanie ustawi zarobek dla wszystkich wierszy w tabeli.

Zobacz co się stanie jeśli na stronie w polu zarobek ktoś wpisze: 1000' , *inna_kolumna* = 'abc tylko zamiast *inna_kolumna* wstaw nazwę innej kolumny z tabeli pracownicy. Poczytaj sobie np. o funkcji mysql_real_escape_string()

Komunikat "Dane dodane prawidłowo" wyświetli się nawet gdy wykonanie zapytania nie powiedzie się. Zrób:
  1. if ($wykonaj !== FALSE) {
  2. //tu wyświetlenie komunikatu
  3. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 30.12.2025 - 05:56