Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zadanie od nauczyciela, do wykonania.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
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>';
usb2.0
div na koncu nie zamyka nic
id_record_used_later_for_changes_in_table, dluzszej nazwy zmiennej nie moglo byc?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
mar1aczi
"case: 3" - gdzie ten insert został wykonany wink.gif
cykcykacz
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...
jacobson
naprawde nic bys nie zmienil ? smile.gif to ciekawe. Nie zastanawiajac sie dluzej bym wywalil polowe smile.gif
ohm
  1. for ($i = 1; $i < count($arrResult); $i++) {

No nawet tego byś nie zmienił?
jacobson
juz 4 linijka jest ciekawa. $id_record_used_later_for_changes_in_table <- seriously ? piszac takie zmienne na pewno projekt bedzie wygladal dobrze ;p
cykcykacz
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ć.
ohm
Tak na marginesie, to jeszcze breaków brakuje, ale to tam "drobny" szczegół wink.gif
cykcykacz
Break zauważyłem, ale jak mówisz drobny szczegół...

Widać brakuje mi jeszcze doświadczenia,
jacobson
  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
vonski
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 wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.