Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysq] Przerabianie tablic
calebos
post
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Czesc jak przerobic wynik z bazy danych ktory mniej wiecej wyglada tak:
data | login | sum(czas)

Tak aby html wygladal mniej wiecej tak

- | login1 | login2 | login3 | loginN..
21.07 | sum1 | sum2 | sum3 | sumN
22.07 |sum..
23.07 |sum...

Wymotalem cos takiego
  1. <?php
  2. $logins=array();
  3. $data=array();
  4. $id=0;
  5. while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
  6. foreach($days as $day)
  7. {
  8. $sqldate=date("Y-m-d",mktime(0,0,0,$m,$day,$Y));
  9. if($sqldate==$row['data'])
  10. {
  11. $logins[$row['login']]=$row['osoba'];
  12. $data[$sqldate][$row['login']]=array(
  13. 'timestamp' => $row['timestamp'],
  14. 'data' => $row['data'],
  15. 'login' => $row['login'],
  16. 'czas'=> timeformat($row['sum(czas_h)'],$row['sum(czas_m)'])
  17. );
  18. $id++;
  19. }
  20.  
  21. }
  22. }
  23. }
  24. //echo '<tr><th>'.$login.'</th></tr>';
  25.  
  26. foreach($data as $element => $item)
  27. { 
  28. //echo $element;
  29.  
  30. echo '<tr>';
  31. echo '<td>';
  32. echo $element;
  33. echo '</td>';
  34.  
  35. foreach ($item as $login => $osoba)
  36. {
  37. //echo '<td>';
  38. //echo $osoba['login'];
  39. //echo '</td>';
  40.  // echo $osoba['login'];
  41. echo '<td>';
  42. echo $osoba['czas'].$osoba['login'];
  43. if ($osoba['czas']='') echo 'Unsp';
  44. echo '</td>';
  45.  
  46. }
  47. echo '</tr>';
  48. }
  49. ?>


Prawie ze mi sie udalo tylko ze dane nie trafiaja nadal tam gdzie powinny tzn sumy dla drugiego loginu sa w pierwszej kolumnie itp.
Moze jakos inaczej powinienem zapytac mysql o te dane ? Troche sie zakrecilem z tymi tablicami.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
calebos
post
Post #2





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


  1. <?php
  2. $query="select timestamp,data,login,sum(czas_h),sum(czas_m),concat(imie,' ',nazwisko) as osoba from listazadan left join users using (pid) where family='$familyid' group by login,data order by data";
  3. ?>


Nie nie musi kombijuje tylko jak to pokazac w tabelce. Inaczej 'przewymiarowac' wynik z query do htmlowej tablicy z powtorzeniami





Self solved:

Dodalem wczesniej do 2 roznych tablic daty i loginy ktore beda w tablicy html'owej
Potem przeciagnalem to po tablicy z danymi z sql'a w ten sposob
  1. <?php
  2. echo '<th>Dzien</th>';
  3. foreach($logins as $log => $loginy)
  4. {
  5. echo '<th>'.$loginy.'</th>';
  6. }
  7.  
  8. foreach($daty as $dzien => $dni)
  9. {
  10. echo '<tr>';
  11. echo "<td>".$dzien.$dni.'</td>';
  12. foreach($logins as $log => $loginy)
  13. {
  14. if($data[$dzien][$loginy]=='')
  15. {echo "<td bgcolor='green' align='center'>-</td>" ;}
  16. else{
  17. echo '<td>'.$data[$dzien][$loginy].'</td>';
  18. }
  19. }
  20. echo '</tr>';
  21. }
  22. ?>


Pewnie daloby sie to zrobic lepiej i byloby fajnie gdyby ktos pokazal przyklad.
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 11:30