Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]klasa do obsługi mysql
Mlodycompany
post 9.11.2010, 19:36:06
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Zacząłem pisać sobie klasę do obsługi mysql'a i napotkałem problem logiczny.
  1. #$table = string, $cols = null / array('name_cols'), $where = null / array('name_cols' => 'value'), $order = null / array('name_cols', 'mode'), $limit = null / array(integer, integer)
  2. public function select($table, $cols = array(), $where = array(), $order = array(), $limit = array()){
  3. if(count($cols) == 0){
  4. $cols = '*';
  5. }
  6. else{
  7. $cols = implode(', ', $cols);
  8. $cols = '`'.$cols.'`';
  9. }
  10. $sql = "SELECT ".$cols." FROM `".$table."`";
  11. if(count($where) != 0){
  12. $sql .= ' WHERE ';
  13. $c = 0;
  14. foreach($where as $name_cols => $value){
  15. $c++;
  16. $sql .= '`'.$name_cols.'` = \''.$value.'\'';
  17. if($c < count($where)){
  18. $sql .= ' AND ';
  19. }
  20. }
  21. }
  22. if(count($order) != 0){
  23. $sql .= ' ORDER BY `'.$order[0].'` '.$order[1].'';
  24. }
  25. if(count($limit) != 0){
  26. $sql .= ' LIMIT '.$limit[0].', '.$limit[1].'';
  27. }
  28. echo $sql;
  29. }

Takto działa fajnie, nie mam zastrzeżeń, ale nie pomyślałem że przy filtrowaniu(?, chodzi o WHERE) wyników zamiast AND może być też OR. Kompletnie nie mam pomysłu jak zrobić wybór tego aby definiować czy ma być AND czy OR. Jeszcze jest zagadka bo cała ta formułka może wyglądać następująco
Kod
...WHERE (`kol1` = '1' OR `kol1` = '2') AND `kol2` = 'abc'

Proszę o jakieś naprowadzenie na rozwiązanie owego problemu. Z góry dzięĸi.
Go to the top of the page
+Quote Post
Mephistofeles
post 9.11.2010, 19:44:49
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Niepotrzebnie wynajdujesz koło od nowa.
Jest wiele takich generatorów SQLa, jak choćby DQL z Doctrine.
Poza tym używaj zapytań podpinanych (PDO, bind).
Go to the top of the page
+Quote Post
Mlodycompany
post 9.11.2010, 19:51:02
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ale jedna koło kołu nie równe. Nie lubie korzystać ze skryptów, których autorem nie jest moja osoba smile.gif
Go to the top of the page
+Quote Post
Spawnm
post 9.11.2010, 19:55:06
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Skoro jest to klasa to rozbij na mniejsze metody aby było select()->where('id', $id, 'OR')->order('id desc')->limit($offset, $limit)->fetchAll();
Go to the top of the page
+Quote Post
Mlodycompany
post 9.11.2010, 20:04:23
Post #5





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No dobra. Przemyśle jak to ostatecznie rozwiązać i podziele się efektem mojego rozwiązania
Go to the top of the page
+Quote Post
Crozin
post 9.11.2010, 20:16:47
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Nie lubie korzystać ze skryptów, których autorem nie jest moja osoba
To teraz zobaczmy jak bardzo nie lubisz korzystać z cudzej pracy:
1. Standardowy zestaw funkcji i klas w PHP nie jest Twojego autorstwa. Wypadałoby przepisać te wszystkie strlen(), PDO, fopen() - swoją drogą: zrobiłbyś duży użytek dla społ. prog. PHP.
2. Lubisz pisać w jakimś śmieciowym języku napisanym byle jak, działającym byle jak? Olej PHP - napisz swój własny język na potrzeby stron www.
3. Serwer HTTP. Apache (czy jakiś inny) to w końcu nie Twoja robota. W sumie to język który stworzysz w pkt. 1-szym może posłużyć do napisania samego serwera.
4. Hmmm... ale ten język do napisania narzędzi z pkt 1 i 2 też trzeba stworzyć. Stwórz swój własny kompilator (do kodu maszynowego).
5. Czekaj, czekaj... ale ten kod maszynowy też będzie przecież wykonywany przez jakiś procesor, którego autorem nie jesteś - Intel, AMD do lamusa!
6. I ma to działać na prąd elektryczny nie Twojego autorstwa, o co to nie.
....
423423423. Stwórz swój własny wszechświat!

W skrócie: naucz wykorzystywać się istniejące rozwiązania, a swoje twórz dopiero w momencie gdy na istniejące Cię nie stać bądź nie spełniają Twoich wymagań.

Ten post edytował Crozin 9.11.2010, 20:17:55
Go to the top of the page
+Quote Post
Mlodycompany
post 9.11.2010, 20:32:37
Post #7





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


źle mnie zrozumiałeś kolego. Chodzi mi o to, że jak ja coś zrobię czyli w tym przypadku napisze klase do obsługi mysql i będę chciał w niej coś zmienić, ulepszyć to będzie mi łatwiej niż w cudzych "wypocinach". Skoro Ty lubisz nie swoje skrypty to po co w ogóle wziąłeś się za nauke php? Chciałeś mieć stronę? Trzeba było sobie ściągnąć/kupić jakiegoś CMSa i z niego korzystać. Ale nie! Wolałeś zrobić samemu.
Go to the top of the page
+Quote Post
Crozin
post 9.11.2010, 20:50:33
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Chodzi mi o to, że jak ja coś zrobię czyli w tym przypadku napisze klase do obsługi mysql i będę chciał w niej coś zmienić, ulepszyć to będzie mi łatwiej niż w cudzych "wypocinach".
Bzdura.
1. Zaoszczędzony czas możesz przeznaczyć na przestudiowanie kodu i wyjście z kolegami na piwo.
2. Masz beznadziejny styl pisania, w dodatku (chociaż ciężko określić to po takim skrawku kodu) piszesz "niby obiektowo", co jest chyba najgorszym z możliwych przypadków (no może takie "niby aspektowe" byłoby gorsze)
Cytat
Skoro Ty lubisz nie swoje skrypty to po co w ogóle wziąłeś się za nauke php?
PHP to tylko i wyłącznie jedno z wielu narzędzi do rozwiązywania problemów.
Cytat
Trzeba było sobie ściągnąć/kupić jakiegoś CMSa i z niego korzystać. Ale nie! Wolałeś zrobić samemu.
Cytat
(...) a swoje twórz dopiero w momencie gdy na istniejące Cię nie stać bądź nie spełniają Twoich wymagań.
Go to the top of the page
+Quote Post
Mlodycompany
post 9.11.2010, 21:12:56
Post #9





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Dobra, nie zamierzam się z kolegą kłócić. Powiedziałbym coś jeszcze ale sobie daruje...
Go to the top of the page
+Quote Post
Mephistofeles
post 9.11.2010, 22:53:13
Post #10





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Źródła takiego Doctrine czy innych gotowców są starannie sprawdzane przez wielu ludzi, i masz 100% pewność (porównując do twojego kodu), że będą bezpieczniejsze, szybsze (bo przemyślane) i do tego łatwiejsze w modyfikacji.
Nauczysz się korzystać z gotowych rozwiązań gdy zrozumiesz jak cenny jest stracony na wymyślanie własnych czas.
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: 14.08.2025 - 05:01