Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z pętlą foreach
Forum PHP.pl > Forum > PHP
pno
Witajcie mam o to taką sprawę

dane z formularza zapisują mi się w bazie w taki oto sposób:

sid cid no data
1 1 0 1
1 2 0 2
1 3 0 3
1 4 0 4
1 5 0 3
1 6 0 2
1 7 0 2
1 8 0 3
1 9 0 0
1 10 0 JK2010 <-- login!
1 11 0 1

gdzie sid to session id (każde kolejne wypełnienie zapisuje sid jako 2,3, itd.

cid to nr pytania na które odpowiada badany

a data to wartość odpowiedzi na dane pytanie (może być liczbowa lub tekstowa itd.)

jednym z odpowiedzi jest login.

Wypracowałem takie o to coś, tylko że zamiast loginu w postaci JK02100 wyskakuje wartość sid (czyli np. 5 sesja)

  1.  
  2. $pdo = new PDO('mysql:host=;dbname=', '', '');
  3. $q = "SELECT * FROM ";
  4. $result = $pdo->query($q);
  5.  
  6. $sessins = array();
  7.  
  8. while ($row = $result->fetch()) {
  9.  
  10. if (!isset($sessions[$row['sid']])) {
  11. $sessions[$row['sid']] = array(
  12. 'login' => null,
  13. 'group_1' => 0,
  14. 'group_2' => 0,
  15. );
  16.  
  17. switch ($row['cid']) {
  18. case 39: // login
  19. $sessions[$row['sid']]['login'] = $row['data'];
  20. break;
  21.  
  22. case 1:
  23. case 2:
  24. $sessions[$row['sid']]['group_1'] += $row['data'];
  25. break;
  26. case 3:
  27. $sessions[$row['sid']]['group_1'] += $row['data'];
  28. $sessions[$row['sid']]['group_2'] += $row['data'];
  29. break;
  30. case 4:
  31. case 5:
  32. $sessions[$row['sid']]['group_2'] += $row['data'];
  33. break;
  34. }
  35. }
  36.  
  37. }
  38.  
  39. foreach ($sessions as $sid => $session) {
  40. echo "kod: $sid($session[login])<br />";
  41. echo "wynik 1: $session[group_1]<br />";
  42. echo "wynik 2: $session[group_2]<br />";
  43. echo "<br /><br />";
  44. }


z góry dzięki za wszelkie sugestie.

Pozdro
jaslanin
1. w opisie piszesz że numery sid są wartości 1 2 3, natomiast w przykładowych danych wszystkie sid mają wartość 1
2. w Twoich danych pytanie które ma w odp. login ma cid=10, natomiast w kodzie cid z loginem powinien mieć cid-39:

  1. case 39: // login
  2. $sessions[$row['sid']]['login'] = $row['data'];
  3. break;



Dobrze by było jakbyś przesłał poprawne dane, bo myślę że są w nim jakieś nieścisłości.
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.