Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][MySQL] Funkcje - gdzie zrobilem blad ? bo niewiem =/
dawhol
post
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


A wiec tak jest juz to moja trzecia funkcja jaka napisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe moze bylo ich nei wiele ale z pierwszymi dwoma nie mialem problemu natomiast z ta mam niewielkie.

Jest to plik akcja.php z mojej ksiegi gosci (panelu admina)
1) jezeli w adresie dam akcja.php?gbook=edit&id=1 to bede mógł edytowac 1 wpis
2) jezeli w adresie dam akcja.php?gbook=del&id=1 to będę mógł usunac wpis o numerze 1
3 jezeli w adresie dam akcja.php?gbook=save&id=1 to bede mógł zapisac wpis 1 po edycji.

No i problem jest taki ze jezeli robie edytujk to on mi najpierw usuwa ;/ wpis a pozniej chce go edytowac mimo ze ma funkcje warunkowo w której usunac moze tylko wtedy gdy $gbook jest równa del ;/

Prosze o pomoc w znalezieniu błedu bo szukam juz od prawie godziny =/

  1. <?php
  2. $gbook = $_GET['gbook'];
  3.  
  4.  
  5. function gbook () 
  6. { $id = $_GET['id'];
  7.  
  8. if ($gbook = 'del' OR $gbook = 'edit' OR $gbook = 'save')
  9. {
  10. if ($gbook = 'del') 
  11. {
  12. $zapytanie = "DELETE FROM cms_gbook WHERE id=".$id."";
  13. $wykonaj = mysql_query($zapytanie);
  14.  
  15. if ($wykonaj) 
  16. {
  17. echo ('Dane zostały skasowane');
  18. };
  19. };
  20.  
  21. if ($gbook = 'edit')
  22. {
  23. $zapytanie2 = "SELECT * FROM cms_gbook WHERE id=".$id."";
  24. $wykonaj2 = mysql_query($zapytanie2);
  25. $dane = mysql_fetch_array($wykonaj2);
  26.  
  27. echo ('<form action="akcja.php?gbook=save&id='.$id.'" method="post"><br/><br/>');
  28. echo ('<textarea rows="30" cols="40" name="wpis">'.$dane['wpis'].'</textarea>');
  29. echo ('<input type="submit" name="send" value="Zapisz"></form>'); 
  30.  
  31. };
  32.  
  33. if ($gbook = 'save')
  34. {
  35. $zapytanie3 = "UPDATE cms_gbook SET wpis=".$wpis." WHERE id=".$id."";
  36. $wykonaj3 = mysql_query($zapytanie3);
  37.  
  38. if ($wykonaj3) 
  39. {
  40. echo ('Dane zostały zapisane');
  41. };
  42. };
  43. }
  44. else echo mysql_error();
  45. }
  46.  
  47.  
  48. if (isset($gbook)) gbook();
  49. ?>


PS. Skrypt jest prototypem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) dlatego nie zabezpieczyłem go jescze przed atakami SQL (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ale zrobie to jak rozwiarze wpierw ten problem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) co mam (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) .
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Znasz może różnice pomiędzy operatorem przypisania, a operatorem porównania?
Może jak poznasz, to poprawisz skrypt i będzie działał (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #3





Goście







Cytat(dawhol @ 8.08.2006, 17:26 ) *
  1. <?php
  2. if ($gbook = 'del') 
  3. { };
  4. php?>


Tutaj robisz if'a z warunkiem przypisania $gbook wartości del. (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

Poprawny kod:

  1. <?php
  2. if ($gbook == 'del') 
  3. { };
  4. php?>


Ten post edytował Wieviór 8.08.2006, 16:43:22
Go to the top of the page
+Quote Post
dawhol
post
Post #4





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


mialem z dwoma == i mi tez nie działało ;/

tzn jak mam dwa to nic sie nie dzieje ani nie wyswietla.

Ten post edytował dawhol 8.08.2006, 16:52:09
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




A wszędzie dajesz == ? Bo poza tym, to kod wygląda normalnie (powinien działać). Może czegoś brakuje? Jakiejś zmiennej? Sprawdzas, czy istnieje $id ?
Go to the top of the page
+Quote Post
dawhol
post
Post #6





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


wszedzie a id istnieje wpis w bazie jest ;/ naprawde sam sie zastanawiam przez godzine prawie szukalem bledu i zadnego nie znalazłem i jak mowie próbowałem z == i z = (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo i nic ;/ jak nie znajde bl;edu to szkoda napisze jescze raz ale juz troche inaczej bo mam nawet pomysł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jak, choc wolał bym jak by mi ktos wskazał ten bład (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) by bylo mniej pracy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

EDIT:

dobra jeden problem naprawilem ale pojawi lsie drugi (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

problem mialem poniewaz zmienna $gbook = $_GET['gbook']; byla poza fukncja musiałem ja tez tam wlozyc i prawie wszystko zadziałało oprócz zapisu (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ale jescze sie z nim pobawie moze znajde swój bład (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował dawhol 8.08.2006, 17:10:36
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #7





Goście







Cytat(dawhol @ 8.08.2006, 17:26 ) *
  1. <?php
  2. $zapytanie3 = "UPDATE cms_gbook SET wpis=".$wpis." WHERE id=".$id."";
  3. $wykonaj3 = mysql_query($zapytanie3);
  4. ?>


Zmień ten kod na:

  1. <?php
  2. $zapytanie3 = "UPDATE cms_gbook SET wpis=".$wpis." WHERE id=".$id."";
  3. mysql_query($zapytanie3);
  4. ?>
Go to the top of the page
+Quote Post
dawhol
post
Post #8





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


~Wieviór
Co do tego co kazałes zmienic nic to nie da i nie dalo bo sprawdzałem jedyne co siezmieni to w razie wykonania nie zostane poinformowany o tym ze wpis został zmieniony,
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #9





Goście







To może daj jescze or mysql error, żeby pokazał jaki jest błąd
Go to the top of the page
+Quote Post
dawhol
post
Post #10





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


dalem ale zapomnialem o tym napisac bo z lekka sie dzisiaj zle czuje o to odpowiedz::

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id=1' at line 1

niby cos z zapytaniem sql ale zastanawia mnie co ;/
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Wyprintuj sobie to zapytanie,to zabaczysz dlaczego jest blad (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #12





Goście







  1. <?php
  2. $zapytanie3 = "UPDATE cms_gbook SET wpis='".$wpis."' WHERE id=$id";
  3. mysql_query($zapytanie3);
  4. ?>


Po prostu kwestia cudzysłów itp. itd. Zobacz tak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
dawhol
post
Post #13





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


działa kurde zapomnialem o glupich cudzysłowiach ;/

ale tylko teoretycznie ;/ bo do bazy danych zapisuje puste pole ;/
Go to the top of the page
+Quote Post
Kicok
post
Post #14





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


No a co ma zapisywać jak nie puste pole? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Przypisałeś gdziekolwiek w tym kodzie, który podałeś u góry jakąkolwiek wartość do zmiennej $wpis?
Go to the top of the page
+Quote Post
dawhol
post
Post #15





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


tak jezeli wcisnie sie zapisz to jescze raz zostanie przeladowana strona i z pola textarea name=wpis zostanie wyciagnieta zmienna poniewaz mam register globals on ale pozniej to poprawie ale to nie o to chodzi bo ani tak ani tak nie aktualizuje pola tylko je czysci ;/
Go to the top of the page
+Quote Post
Kicok
post
Post #16





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Nawet jeśli masz register_globals = On, to ta zmienna $wpis ci sam do wnętrza funkcji nie wlezie. Jak już tak chcesz to zapisać, to dodaj na początku swojej funkcji:
  1. <?php
  2. global $wpis;
  3. ?>
Go to the top of the page
+Quote Post
dawhol
post
Post #17





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


Dzięki teraz wszystko pięknie działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mój bład ale wkoncu kazdy sie nia nich uczy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) myslałem ze on mi ja tam wciagnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Wielkie dzieki (IMG:http://forum.php.pl/style_emoticons/default/smile.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: 5.10.2025 - 12:53