Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Jak obchodzić się z takmi danymi?
Forum PHP.pl > Forum > PHP
pkr
Witam,

mam dość trudne zadanie do rozwiązania, potrzebuję pomocy. Mam tabelkę z danymi o następujących kolumnach: id_field, id_column, id_row, value (coś jak układ kartezjański)

Muszę teraz te dane przedstawić w postaci podwójnej tablicy

  1. array {field1, field2, emptyfield, field3 },
  2. array {fieldnext, valueoffield, field, emptyfield}
  3. }


Istotne: jeśli jakieś pole nie istnieje (nie ma go w bazie) to aplikacja powinna stworzyć to pole w odpowiednim miejscu i wypełnić go tekstem "emptyfield"

Stworzyłem kod prawie idealny smile.gif wszystko działa dobrze, tylko właśnie nie obsługuje tych pustych pól. Każda wewnętrzna tabela musi mieć taką samą ilość pól. Nie mam specjalnie pomysłu na znajdowanie tych pól które nie istnieją. Czy ma ktoś jakiś pomysł na uzupełnienie tego kodu? Z góry dziękuję smile.gif

  1. //result to tablica stworzona z bazy danych (wszystkie pola po kolei)
  2. //rows to tabela wyjściowa
  3.  
  4. for($i=0; $i<count($result); $i++) {
  5.  
  6. if(!is_array($rows[$i2])) $rows[$i2]=array();
  7.  
  8. if($result[$i]['id_row']==$result[$i-1]['id_row'] OR $i==0) {
  9.  
  10. array_push($rows[$i2], $result[$i]['value']);
  11.  
  12. } else {
  13.  
  14. $i2++;
  15. $rows[$i2]=array();
  16.  
  17. array_push($rows[$i2], $result[$i]['value']);
  18. }
  19. }
  20.  


Z góry dziękuję, bardzo liczę na waszą pomoc smile.gif
gr56
Nie dodawaj wpisów na koniec tablicy(array_push) tylko wstawiaj je na odpowiednie indexy. Tym sposobem powstanie tablica która będzie oddawała układ wartości w bazie.

  1. foreach($results as $r)
  2. {
  3. if(!isset($rows[$r['id-row']]))
  4. $rows[$r['id-row']] = array();
  5. $rows[$r['id-row']][$r['id-column']] = $r['value'];
  6. }
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.