Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dynamiczne kolumny i wiersze (jednocześnie)
problemos
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 18.02.2007

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


Siedzę nad tym od kilku ładnych nocek, i po prostu załamka (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Opis problemu:
Mam w sql-u trzy tablice: uzytkownicy, pisma i potwierdzenia. W tablicy potwierdzenia znajdują się dane czy dany uzytkownik zapoznal się z konkretnym pismem, czyli m.in. iduzytkownika, idpisma i potwierdzenie=T lub N (oczywiście w zależności czy uzytkownik potwierdził zapoznanie). Problem zaczyna się kiedy na stronie chcę wyświetlić w postaci tabeli zbiorczą informację w następujący sposób:

__________1 kolumna, 2 kolumna, 3 kolumna, ......, n kolumna
1 wiersz: ___________pismo 1, pismo 2, ..........., pismo n
2 wiersz: uzytkownik 1, T lub N, T lub N, .........., T lub N
3 wiersz: uzytkownik 2, T lub N, T lub N, .........., T lub N
...
k wiersz: uzytkownik k+1, T lub N,T lub N, ........, T lub N

oto mój fragment kodu i niestety nie jest dobrze (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Pierwszy wiersz, kiedy wypisuje nr pisma - ok, pierwsza kolumna, kiedy wypisuje login uzytkownika - ok. Ale wszystko się psuje przy wypisywaniu wartości T/N dla konkretnego uzytkownika i konkretnego pisma...
Może ktoś ma jakiś pomysł(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

  1. <?php
  2. //najpierw oczywiście mam łączenie z serwerem i bazą...
  3.  
  4. $result = mysql_query("SELECT * FROM tbUzytkownik WHERE Zgloszony = '1' ORDER BY 4",$db);
  5. ?>
  6. <TABLE class=tablesurround cellSpacing=1 cellPadding=1 width="98%"
  7. align=center><TBODY>
  8. <TR>
  9. <TD class=catandforum colSpan=2>Potwierdzenia zapoznania się z pismami>
  10. <TABLE class=tableborders cellSpacing=1 cellPadding=3 width="100%">
  11. <TBODY><TR><TD class=tdheader noWrap align=middle>Nr</td>
  12. <?php
  13. $result1 = mysql_query("SELECT * FROM tbPisma where Aktual = 't' ORDER BY 3 ASC",$db);
  14. $ilosc1 = mysql_num_rows($result1);
  15.  
  16. while ($myrow1 = mysql_fetch_array($result1))
  17. {
  18. echo "<td class=tdheader1 noWrap align=middle>
  19. <a href=http://127.0.0.1/~Ania/http/dane/Pisma/".$myrow1["Link"].">".$myrow1['Nr']."</a></td> n";
  20. }
  21. //$result2 = mysql_query("SELECT * FROM tbPotwPisma WHERE NrUzyt='".$myrow['NrUzyt']."' ",$db);
  22. echo "</tr>";
  23.  
  24. while ($myrow = mysql_fetch_array($result))
  25. {
  26. echo "<tr><TD class=newlighttable vAlign=top align=middle>".$myrow['Login']."</td>";
  27.  
  28. for ($i=0; $i<$ilosc1; $i++)
  29. {
  30. $result2 = mysql_query("SELECT * FROM tbPotwPisma WHERE NrUzyt='".$myrow['NrUzyt']."' order by idPisma",$db);
  31.  //and idPisma='".$myrow1['idPisma']."'
  32. $myrow2 = mysql_fetch_array($result2);
  33. echo "<td class=newlighttable vAlign=top align=middle>".$myrow2['Potwierdzenie']."</td> n";
  34. }
  35. echo "</tr>";
  36.  
  37.  
  38. if($myrow = mysql_fetch_array($result))
  39. echo "<TR><TD class=newdarktable vAlign=top noWrap align=middle>".$myrow['Login']."</TD>";
  40. for ($i=0; $i<$ilosc1; $i++)
  41. {
  42. $result2 = mysql_query("SELECT * FROM tbPotwPisma WHERE NrUzyt='".$myrow['NrUzyt']."' order by idPisma",$db);
  43.  //and idPisma='".$myrow1['idPisma']."'
  44. $myrow2 = mysql_fetch_array($result2);
  45. echo "<td class=newdarktable vAlign=top align=middle>".$myrow2['Potwierdzenie']."</td> n";
  46. }  
  47. echo "</tr>";
  48. }
  49. ?>
  50. </tr></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
  51. </TABLE>


Baaardzo proszę o pomoc!!!!!!!!

-------------------
do kodu php używaj BBCode php
~Cienki1980
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
k1ller
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.02.2007
Skąd: Wroclaw

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


Ja bym zrobił tak:
  1. <?php
  2. $result = mysql_query("SELECT * FROM tbPisma where Aktual = 't'",$db);
  3. $ilosc_pism = mysql_num_rows($result);
  4. $tab_pisma=array();
  5.  
  6. //tworzymy tablice gdzie kluczami sa ID pism a wartosciami link
  7.  
  8. while ($pismo = mysql_fetch_array($result))
  9. {
  10. $tab_pisma[ $pismo['Nr'] ]=$pismo['Link'];
  11. }
  12.  
  13. $result = mysql_query("SELECT * FROM tbUzytkownik WHERE Zgloszony = '1'",$db);
  14. $ilosc_uzytkownikow = mysql_num_rows($result);
  15. $tab_uzytkownik=array();
  16.  
  17. //tworzymy tablice gdzie kluczami sa ID uzytkownikow a wartosciami loginy
  18.  
  19. while ($uzytkownik = mysql_fetch_array($result))
  20. {
  21. $tab_uzytkownik[ $uzytkownik['NrUzyt'] ]=$uzytkownik['Login'];
  22. }
  23.  
  24. $result = mysql_query("SELECT * FROM tbPotwPisma",$db);
  25. $uprawnienie=array();
  26.  
  27. //tworzymy tablice dwuwymiarowa, gdzie wiersze to pisma a kolumny to uzytkownicy, 
  28. //jak chcesz sprawdzic potwierdzenie pisma 2 dla uzytkownika 5 to sprawdzasz warto
    sc $tab_potwierdzenia[2][5]
  29.  
  30. while ($potwierdzenie = mysql_fetch_array($result))
  31. {
  32. $tab_potwierdzenia[ $potwierdzenie['idPisma'] ] [ $potwierdzenie['NrUzyt'] ]=$potwierdzenie['Potwierdzenie'];
  33. }
  34.  
  35. //musimy brac uzytkownikow, bo tabele musimy tworzyc wierszami a nie kolumnami
  36.  
  37. //tabela i pierwsza kolumna zarezerwowana na login
  38. echo "<table><tr><td>Login</td>";
  39. //najpierw pisma
  40. foreach ($tab_pisma as $nr_pisma => $link)
  41. {
  42.  echo "<td><a href=http://127.0.0.1/~Ania/http/dane/Pisma/$link>$nr_pisma</a></td>";
  43. }
  44. echo "</tr>";
  45.  
  46. //potem uzytkownicy
  47. foreach ($tab_uzytkownik as $nr_uzytkownika => $login)
  48. {
  49. echo "<tr><td>$login</td>";
  50. foreach ($tab_pisma as $nr_pisma => $link)
  51. {
  52.  //tutaj drukujemy uprawnienia
  53.  echo "<td>".$tab_potwierdzenia[$nr_pisma][$nr_uzytkownika]."</td>";
  54. }
  55. echo "</tr>";
  56. }
  57. echo "</table>";
  58. ?>

Dzięki temu masz 3 tabele, w czym jedna $tab_potwierdzenia, która załatwia Ci sprawę potwierdzeń.
Musisz tylko dodać klasy i inne upiększenia, oczywiście w zapytaniach brakuje tez ORDER BY.

Mam nadzieje ze pomoże.


---------------------
tak jak u poprzednika.
do php korzystamy z BBCode php a nie html
no i chyba alt się zepsuł bo żadnych ogonków nie było.
~Cienki1980


Ten post edytował Cienki1980 21.02.2007, 08:32:32
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: 5.10.2025 - 12:30