Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Require i $_GET
Osth
post 5.04.2016, 17:32:17
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


Witam, mam poniższy problem z funkcją require.

Plik 1 - admin.php
  1. if(($_GET['action']) <> '')
  2. {
  3. try
  4. {
  5. $file = 'Class/Admin/'.$_GET['action'].'.php';
  6. // if(!file_exists($file)) { throw new Exception('File not found'); }
  7. require_once $file;
  8. }
  9. catch (Exception $e)
  10. {
  11. echo 'Error: '. $e -> getMessage();
  12. }
  13. }


Plik 2 - Categories.php

  1. if(isset($_GET['cmd']))
  2. {
  3. if($_GET['cmd'] == 'add')
  4. {
  5. #code
  6. }
  7.  
  8. if($_GET['cmd'] == 'changeVisibility' && isset($_GET['id']))
  9. {
  10. $validation = $categories -> isVisible($_GET['id']);
  11. if($validation == 'Tak') { $change == 'Nie'; }
  12. if($validation == 'Nie') { $change == 'Tak'; }
  13. $categories -> setData('visibility', $change, $_GET['id']);
  14. // header('Location: admin.php?action=Categories');
  15. }
  16.  
  17. if($_GET['cmd'] == 'delete')
  18. {
  19. #code
  20. }
  21. }


Po kliknięciu w link, czyli wywołaniu adresu admin.php?action=Categories&cmd=changeVisibility&id=1 dostaję błąd:
  1. Warning: require_once(Class/Admin/Categories?cmd=changeVisibility?id=1.php): failed to open stream: No such file or directory



Jak ten problem najlepiej rozwiązać? Spośród rozwiązań z sieci nie znalazłem nic pomocnego..

Ten post edytował Osth 5.04.2016, 17:34:40
Go to the top of the page
+Quote Post
nospor
post 5.04.2016, 17:47:13
Post #2





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




kolejne parametry dodaje sie prze & a nie przez ?

czyli nie
strona.pl?cos=1?cos2=2?co3=2
tylko
strona.pl?cos=1&cos2=2&cos3=2



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Osth
post 5.04.2016, 17:59:26
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


O matko, chyba bardziej idiotycznego błędu nie mogłem zrobić..
Nic dziwnego, że nie znalazłem wcześ niej rozwiązania..

Dzięki za pomoc wink.gif


EDIT - kolejny problem:

Nie wykonuje mi się zapytanie UPDATE, dlaczego?

Plik 1 - frangment klasy
  1. public function set($data, $value, $id)
  2. {
  3. try
  4. {
  5. $db = new Database;
  6. $db -> query('UPDATE categories SET `'.$data.'` = `'.$value.'` WHERE id = :id');
  7. $db -> bind(':id', $id);
  8. $db -> execute();
  9. }
  10. catch (Exception $e)
  11. {
  12. echo 'Error: '. $e -> getMessage();
  13. }
  14. }


Plik 2 - wywołanie metody
  1. if($_GET['cmd'] == 'changeVisibility' && isset($_GET['id']))
  2. {
  3. $validation = $categories -> isVisible($_GET['id']);
  4. if($validation == '1') { $categories -> set('visibility', '0', $_GET['id']); }
  5. if($validation == '0') { $categories -> set('visibility', '1', $_GET['id']); }
  6.  
  7. header('Location: admin?action=Categories');
  8. }


Ten post edytował Osth 5.04.2016, 18:14:36
Go to the top of the page
+Quote Post
nospor
post 5.04.2016, 20:41:43
Post #4





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




W `krzywe ciapki` to sie bierze nazwy kolumn i tabel a nie wartosc. Wartosci to co sie najwyzej bierze w 'ciapki'
A na przyszlosc wyswietlaj blad zapytania to bedziesz widzial o co pluje sie baza.

przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Osth
post 5.04.2016, 23:55:12
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


Niezależnie od "ciapek", wciąż nie działa.
Go to the top of the page
+Quote Post
nospor
post 6.04.2016, 09:05:47
Post #6





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Jak juz mowilem, sprawdz czy nie zwraca bledu, sprawdz czy przekazyjesz poprawne ID. No wszystko trzeba powtarzac kilkukrotnie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Osth
post 6.04.2016, 09:59:27
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


  1. Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''name' = 'Nowa' WHERE id = 1' at line 1


Kod:
  1. $category = new Categories;
  2. $category -> set('name', 'Nowa', 1);


Klasa:
  1. public function set($data, $value, $id)
  2. {
  3. try
  4. {
  5. $db = new Database;
  6. $db -> query('UPDATE categories SET :data = :value WHERE id = :id');
  7. $db -> bind(':data', $data);
  8. $db -> bind(':value', $value);
  9. $db -> bind(':id', $id);
  10. $db -> execute();
  11. }
  12. catch (Exception $e)
  13. {
  14. echo 'Error: '. $e -> getMessage();
  15. }
  16. }
Go to the top of the page
+Quote Post
nospor
post 6.04.2016, 10:23:37
Post #8





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Nazw kolumn sie nie binduje.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Osth
post 6.04.2016, 18:45:13
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


Kod klasy:
  1. public function set($data, $value, $email)
  2. {
  3. try
  4. {
  5. $db = new Database;
  6. $db -> query('UPDATE users SET '.$data.' = '.$value.' WHERE email = :email');
  7. $db -> bind(':email', $email);
  8. $db -> execute();
  9. }
  10. catch (Exception $e)
  11. {
  12. echo 'Error: '. $e -> getMessage();
  13. }
  14. }


Wywołanie kodu #1
  1. $category = new Categories;
  2. $category -> set('name', 'Nowa', 1);


Dostawałem wtedy błąd:
  1. Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Nowa' in 'field list'


Wywołanie kody #2
  1. $category = new Categories;
  2. $category -> set('name', 'name', 1);


Teraz nie dostaję żadnego błędu, a mimo to wartość w bazie się nie zmienia.
Go to the top of the page
+Quote Post
com
post 7.04.2016, 08:28:19
Post #10





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

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


a ta twoja klasa Database wgl działa, sprawdź
Go to the top of the page
+Quote Post
Turson
post 7.04.2016, 08:41:58
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat(Osth @ 6.04.2016, 19:45:13 ) *
Wywołanie kodu #1
  1. $category = new Categories;
  2. $category -> set('name', 'Nowa', 1);


Dostawałem wtedy błąd:
  1. Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Nowa' in 'field list'


Wywołanie kody #2
  1. $category = new Categories;
  2. $category -> set('name', 'name', 1);


Teraz nie dostaję żadnego błędu, a mimo to wartość w bazie się nie zmienia.

#1
Masz
  1. '.$data.' = '.$value.'

czyli wstawiasz name = Nowa
Nowa musi być bindowane tak jak email

#2
Bo nie zmieniasz wartosci a ustawiasz na taka samą co jest, błąd spowodowany jak w #1
Go to the top of the page
+Quote Post
Osth
post 7.04.2016, 22:39:32
Post #12





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2012

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


Problem rozwiązany, bardzo dziękuję smile.gif
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 06:27