Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zadanie od nauczyciela, do wykonania.
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Witam,
dostałem takie zadanie od nauczyciela. ja oczywiście bym tu nic nie zmienił ale mam nadzieje że wy pomożecie mi co można tutaj zmienić:

Treść zadania:
Poniższy skrypt interpretuje dane dla wysłanego formularza
Napisz co byś zmienił w tym kodzie i dlaczego.

Zmiany proszę nanosić na kod + opisać dokładnie co jest zrobione i dlaczego za pomocą komentarzy.

Kod:
  1. <?php
  2.  
  3. $operation = $_POST['option'];
  4. $id_record_used_later_for_changes_in_table = $_GET['id'];
  5. $type = $_GET['user_type'];
  6.  
  7. $adminIdList = array(1, 2, 3);
  8. $key = 'form_test'; //!! Debug only
  9.  
  10. echo '<table><tr><th>UserID</th><th>User Name</th></tr>';
  11.  
  12. switch ($operation) {
  13. case 1:
  14.  
  15. DbEngine::Instance()->Query("SELECT id, username FROM table_users WHERE type = $type");
  16. $arrResult = DbEngine::Instance()
  17. ->FetchAll()
  18. ->Execute();
  19.  
  20. for ($i = 1; $i < count($arrResult); $i++) {
  21. $row = &$arrResult[$i];
  22. if (in_array($row['username'], $adminIdList)) {
  23. //Skip admins
  24. }else{
  25. echo '<tr><td>' . $row['id'] . '</td><td>' . $row['username'] . '</td></tr>';
  26. }
  27. }
  28.  
  29. case "2":
  30. $arrToUpdate = array();
  31. foreach ($_POST as $val) {
  32. if (strpos($key, 'form_') == 0) {
  33. $fieldName = substr($key, 4);
  34. $arrToUpdate[$fieldName] = $val;
  35. }
  36. }
  37.  
  38. $result = DbEngine::Instance()
  39. ->Table('tablu_users')
  40. ->Update()
  41. ->Where(array('id' => $id_record_used_later_for_changes_in_table))
  42. ->Set($arrToUpdate)
  43. ->Execute();
  44.  
  45. echo 'Update executed successfully.';
  46.  
  47. case "3":
  48. $arrToInsert = array();
  49. foreach ($_POST as $val) {
  50. if (strpos($key, 'form_') == 0) {
  51. $fieldName = substr($key, 4);
  52. $arrToInsert[$fieldName] = $val;
  53. }
  54. }
  55.  
  56. echo 'Insert executed successfully.';
  57.  
  58. }
  59.  
  60.  
  61. echo '</div>';


Ten post edytował cykcykacz 28.02.2014, 10:07:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
usb2.0
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

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


div na koncu nie zamyka nic
id_record_used_later_for_changes_in_table, dluzszej nazwy zmiennej nie moglo byc?(IMG:style_emoticons/default/biggrin.gif)

w ogole
  1. $operation = $_POST['option'];
  2. $id_record_used_later_for_changes_in_table = $_GET['id'];
  3. $type = $_GET['user_type'];
nie ma sensu zupelnie, co to zmieni ze zrobisz nowa zmienna i przypiszesz do niej wartosc

sposob na pomijanie adminow tez dobry:D sql do zmiany select user where user_type != admin, dzieki temu nie bedziesz musial dawac if'a w petli

to ma byc podchwytliwe ? : P

Ten post edytował usb2.0 28.02.2014, 10:28:51
Go to the top of the page
+Quote Post
mar1aczi
post
Post #3





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


"case: 3" - gdzie ten insert został wykonany (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
cykcykacz
post
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Tak, naprawdę jest to test rekrutacyjny, do pracy jak programistas php, jeśli zdamy dostaniemy się na rozmowę rekrutacyjna.

Ja odpisałem że nie zmienił bym nic.

Ale też zauwżyłem że brak jest inserta do bazy.

No nic muszę szukać dalej widać jeszcze nie znalazłem odpowiedniego pracodawcy... albo jestem za cienki...
Go to the top of the page
+Quote Post
jacobson
post
Post #5





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


naprawde nic bys nie zmienil ? (IMG:style_emoticons/default/smile.gif) to ciekawe. Nie zastanawiajac sie dluzej bym wywalil polowe (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ohm
post
Post #6





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


  1. for ($i = 1; $i < count($arrResult); $i++) {

No nawet tego byś nie zmienił?
Go to the top of the page
+Quote Post
jacobson
post
Post #7





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


juz 4 linijka jest ciekawa. $id_record_used_later_for_changes_in_table <- seriously ? piszac takie zmienne na pewno projekt bedzie wygladal dobrze ;p
Go to the top of the page
+Quote Post
cykcykacz
post
Post #8





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Tak nie dokońca zamiast tego switach można by dodać instację klasy, która zajmuje się dodawaniem, aktualizacją, wyświetlaniem, usuwaniem danych.

Coś w deseń tego pseudo kodu:
  1. $DB = new DB("","","","");
  2. $DB->add();
  3. $DB->update();
  4. $DB->delete();
  5. $DB->insert();


Ale np:
na długość: $id_record_used_later_for_changes_in_table nie zwróciłem uwagi, a wiem że jest to nie zalecane pisanie długich zmiennych.
A tego: for ($i = 1; $i < count($arrResult); $i++) { nie zauważyłem. Nie wiem jak to działa i na co to zamienić.


Ten post edytował cykcykacz 28.02.2014, 10:59:20
Go to the top of the page
+Quote Post
ohm
post
Post #9





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


Tak na marginesie, to jeszcze breaków brakuje, ale to tam "drobny" szczegół (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
cykcykacz
post
Post #10





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Break zauważyłem, ale jak mówisz drobny szczegół...

Widać brakuje mi jeszcze doświadczenia,
Go to the top of the page
+Quote Post
jacobson
post
Post #11





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


  1.  
  2. $arrToInsert = array();
  3. foreach ($_POST as $val) {
  4. if (strpos($key, 'form_') == 0) {
  5. $fieldName = substr($key, 4);
  6. $arrToInsert[$fieldName] = $val;
  7. }
  8. }




  1.  
  2. $arrToUpdate = array();
  3. foreach ($_POST as $val) {
  4. if (strpos($key, 'form_') == 0) {
  5. $fieldName = substr($key, 4);
  6. $arrToUpdate[$fieldName] = $val;
  7. }
  8. }


calkiem podobne te kody ;>

Dodatkowo strpos zwraca FALSE jak nie znajdzie i 0 jak znajdzie na pozycji zerowej. Podpowiem (FALSE == 0), ale FALSE !== 0
Go to the top of the page
+Quote Post
vonski
post
Post #12





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


Cytat
Break zauważyłem, ale jak mówisz drobny szczegół...


Tak koledze @ohm nie chodziło raczej dosłownie, że jest to drobny szczegół. To "drobny" szczegół. Ten szczegół rozwala całą logikę tego kodu (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: 22.08.2025 - 23:33