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 (1 - 14)
johny_s
post
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


nie ma zdefiniowanej zmiennej $send więc pewnie nawet nie wchodzi do warunku
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


$send na $_POST['send']
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton, ale patrzymy czym jest wysylany form.... nie $_POST a $_GET
Zaś ty shado albo zapozoznaj się z manualem, albo zmien ksiązke na ciut nowszą.
Go to the top of the page
+Quote Post
shado
post
Post #5





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

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


dalej to samo
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ps: przenosze na przedszkole. Tam tez zakladaj swoje ewentualne kolejne tematy

Bo ma być $_GET a nie jak pisal pyton $_POST
Go to the top of the page
+Quote Post
kartin
post
Post #7





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
shado
post
Post #8





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

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


Prawie działa tylko że zamiast panu Kowalskiemu który ma 100zł dodać np. 10, to tworzy nowy rekord
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo robisz INSERT... INSERT dodaje rekordy. Do akutalizacji rekordow uzywa się UPDATE
Go to the top of the page
+Quote Post
shado
post
Post #10





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

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


Teraz zamiast dodać to wyzerowało

Ten post edytował shado 14.05.2014, 16:52:32
Go to the top of the page
+Quote Post
kartin
post
Post #11





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

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


Po $zapytanie = "UPDATE ... dopisz sobie gdzieś w nowej linii
  1. echo $zapytanie;
to zobaczysz jakie zapytanie jest wykonywane.
W zapytaniu UPDATE masz $zarobek czy $_GET['zarobek']?
Go to the top of the page
+Quote Post
shado
post
Post #12





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

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


Tak to wygląda:
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. if($_GET['send']=='wyslij') {
  7.  
  8. mysql_connect ("localhost","root","");
  9. mysql_select_db (praca);
  10. $zapytanie = "UPDATE INTO pracownicy SET zarobek=$_GET['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>


jednak jak mam:

  1. $_GET['zarobek']

To wywala mi błąd:
  1. Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

Jak usunę ' ' czyli:
  1. $_GET[zarobek]

to nie mam błedu jednak nic nie dodaje

Ten post edytował shado 14.05.2014, 17:16:38
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo zeby dodac, to trzeba dodac, a nie przypisac.....

nie: zarobek=$_GET[zarobek]
a: zarobek=zarobek + $_GET[zarobek]

No i poza tym musi byc WHERE, gdzie okreslisz jakiemu rekordowi chcesz dodac. Bez WHERE doda do wszystkich rekordow
Go to the top of the page
+Quote Post
shado
post
Post #14





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

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


Wielkie dzięki, działa (IMG:style_emoticons/default/biggrin.gif)

ps. tak ma dodawać do wszystkich rekordów (IMG:style_emoticons/default/wink.gif)

Ten post edytował shado 14.05.2014, 18:44:26
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ps. tak ma dodawać do wszystkich rekordów
Normalnie full wypas (IMG:style_emoticons/default/wink.gif) A na przyszlosc staraj sie sam odrozniac dodawanie od przypisywania (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 22:51