Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Generowanie tabeli z wpisanymi wynikami w odpowiednie miejsca
Forum PHP.pl > Forum > Przedszkole
ghastblood
Konstrukcja bazy danych jest następująca w konkurencjach zawodników mam godzinę oraz stanowisko
w ustawieniach pawilonu mam ilosc stanowisk w pawilonie

napisałem taki kodzik
  1. <?php
  2. include "core.php";
  3.  
  4. $sql_wynik = mysql_query("SELECT * FROM pawilony") or die(mysql_error());
  5. $sql_wynik1 = mysql_query("SELECT godzina FROM zawodnik LEFT JOIN konkurencje_zawodnikow ON id_zawodnika = id LEFT JOIN konkurencje ON id_konkurencji = id_konk") or die(mysql_error());
  6.  
  7. $sql_r = mysql_fetch_assoc($sql_wynik);
  8.  
  9.  
  10. while($sql_r1 = mysql_fetch_array($sql_wynik1,MYSQL_ASSOC)){
  11. $tab[] = $sql_r1;
  12. }
  13.  
  14. $stanowiska = $sql_r['ilosc_stanowisk'];
  15.  
  16. for($t=10; $t<=18; $t++){
  17. $godzina[] = $t;
  18. }
  19. echo '<pre>';
  20. var_dump($godzina);
  21.  
  22. echo '<table border="1">';
  23. echo '<tr>';
  24. echo '<td>Godz./Stanowisko</td>';
  25. for($s=1; $s<=$stanowiska; $s++){
  26. echo '<td>'.$s.'</td>';
  27. }
  28. echo '</tr><tr>';
  29. for($g = 10; $g<=18; $g++){
  30. $g = $g.'.00';
  31. echo '<td>'.$g.'</td>';
  32. for( $x = 0, $cnt = count($godzina); $x < $cnt; $x++ ){
  33. if($g == $godzina[$x]){
  34. $sql_wynik = mysql_query("SELECT * FROM zawodnik LEFT JOIN konkurencje_zawodnikow ON id_zawodnika = id
  35. LEFT JOIN konkurencje ON id_konkurencji = id_konk WHERE godzina = ".($g)." && pawilon = '25m'") or die(mysql_error());
  36. while($sql_r = mysql_fetch_assoc($sql_wynik)){
  37. echo '<td>'.$sql_r['nazwisko_zawodnika'].'</td>';
  38. }
  39. }
  40. }
  41.  
  42. echo '</tr><tr>';
  43. }
  44.  


generuje tabele dobrze ale zawodników wpisuje mi jak leci w konkretną godzinę a chciał bym osiągnąć efekt taki jak na obrazku czyli oprócz godziny dla zawodnika żeby był wpisany na odpowiednim stanowisku.


By ameth69 at 2012-06-08

Naprawdę nikt nie może mi pomóc ?


jestem bliżej niż dalej
  1. <?php
  2. include "core.php";
  3.  
  4. $sql_wynik = mysql_query("SELECT * FROM pawilony") or die(mysql_error());
  5. $sql_r = mysql_fetch_assoc($sql_wynik);
  6. $stanowiska = $sql_r['ilosc_stanowisk'];
  7.  
  8.  
  9.  
  10. echo '<table border="1">';
  11. echo '<tr>';
  12. echo '<td>Godz./Stanowisko</td>';
  13. for($s=1; $s<=7; $s++){
  14. $stanowisko[] = $s;
  15. echo '<td>'.$s.'</td>';
  16. }
  17. echo '</tr><tr>';
  18.  
  19.  
  20.  
  21. for($g = 10; $g<=16; $g++){
  22. $g = $g.'.00';
  23. echo '<td>'.$g.'</td>';
  24. $s = 1;
  25. for( $z = 0, $cnt = count($stanowisko); $z < $cnt; $z++ ){
  26. $sql_wynik1 = mysql_query("SELECT * FROM zawodnik LEFT JOIN konkurencje_zawodnikow ON id_zawodnika = id LEFT JOIN konkurencje ON id_konkurencji = id_konk WHERE pawilon = '25m' && godzina ='$g' && stanowisko = '$s'") or die(mysql_error());
  27. while($sql_r1 = mysql_fetch_assoc($sql_wynik1)){
  28. if($g == $sql_r1['godzina'] && $s == $sql_r1['stanowisko']){
  29. echo '<td>'.$sql_r1['nazwisko_zawodnika'].'</td>';
  30. } else{
  31. echo '<td>&nbsp;</td>';
  32. }
  33. }
  34. $s++;
  35.  
  36. }
  37. echo '</tr><tr>';
  38.  
  39. }
  40. echo '</table>';
  41.  
  42.  
  43. ?>


generuje mi to tabele wpisuje nazwiska ale if w pętli zawsze zwraca pierwszą wartość i nie tworzy mi pustych komórek przez co nazwisko zawodnika nie znajduje się na odpowiednim stanowisku.
może teraz ktoś mi pomoże siedzę nad tym cały dzień.
AdIoS_Neo
Witam,
linijka nr. 24
  1. $s = 1;
z każdym przejściem pętli zmienna $s która reprezentuje numer stanowiska ma przypisywaną wartość 1. Stąd cały czas pobierasz dane i wypisujesz tylko dla 1 stanowiska.
ghastblood
oj niestety nie masz racji bo jest w pętli również $s++; po drugie wypisuj mi wszystkich zawodników. Chodzi mi o to że if zawsze zwraca
  1. if($g == $sql_r1['godzina'] && $s == $sql_r1['stanowisko']){
  2. echo '<td>'.$sql_r1['nazwisko_zawodnika'].'</td>';
  3. }


przez co zawodnicy nie są wpisani na odpowiednie stanowiska tylko w ciągu a powinno mi robić pusty rekord w tabeli jak dane stanowisko jest puste

[php][/php]if($g == $sql_r1['godzina'] && $s == $sql_r1['stanowisko']){
echo '<td>'.$sql_r1['nazwisko_zawodnika'].'</td>';
} else{
echo '<td>&nbsp;</td>}
';
kefirek
Podaj strukturę tabel i przyładowane dane to postaram i się pomoc. Bo po tym kodzie co podałeś ciężka ogarnąć co gdzie jest a można zapewne to zrobić mniejszą liczbą zapytań.
ghastblood
  1. <table border="1">
  2. <tr>
  3. <!-- Stały rekord tabeli -->
  4. <td>Godz./Stanowisko</td>
  5. <!-- Stanowiska generowane na podstawie wartości z MySQL -->
  6. <td>1</td>
  7. <td>2</td>
  8. <td>3</td>
  9. <td>4</td>
  10. <td>5</td>
  11. </tr><tr>
  12. <!-- Godzina 10.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  13. <td>10.00</td>
  14. <!-- Zawodnik 1 to nazwisko imie i konkurencja zawodnik w bazie danych ma określone że odbywa konkurencje o godz 10.00 na stanowisku 1 -->
  15. <td>Zawodnik 1</td>
  16. <!-- Puste pola -->
  17. <td>&nbsp;</td>
  18. <td>&nbsp;</td>
  19. <td>&nbsp;</td>
  20. <td>&nbsp;</td>
  21. </tr><tr>
  22. <!-- Godzina 11.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  23. <td>11.00</td>
  24. <td>&nbsp;</td>
  25. <td>&nbsp;</td>
  26. <td>&nbsp;</td>
  27. <td>&nbsp;</td>
  28. <td>&nbsp;</td>
  29. </tr><tr>
  30. <!-- Godzina 12.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  31. <td>12.00</td>
  32. <td>&nbsp;</td>
  33. <td>&nbsp;</td>
  34. <td>&nbsp;</td>
  35. <td>&nbsp;</td>
  36. <td>&nbsp;</td>
  37. </tr><tr>
  38. <!-- Godzina 13.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  39. <td>13.00</td>
  40. <td>&nbsp;</td>
  41. <td>&nbsp;</td>
  42. <td>&nbsp;</td>
  43. <td>&nbsp;</td>
  44. <td>&nbsp;</td>
  45. </tr><tr>
  46. <!-- Godzina 14.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  47. <td>14.00</td>
  48. <td>&nbsp;</td>
  49. <td>&nbsp;</td>
  50. <td>&nbsp;</td>
  51. <td>&nbsp;</td>
  52. <td>&nbsp;</td>
  53. </tr><tr>
  54. <!-- Godzina 15.00 na podstawie wartości z MySQL gdzie podana jest godzina startu i konica czyli 10.00-15.00 -->
  55. <td>15.00</td>
  56. <td>&nbsp;</td>
  57. <td>&nbsp;</td>
  58. <td>&nbsp;</td>
  59. <td>&nbsp;</td>
  60. <!-- Zawodnik 2 to nazwisko imie i konkurencja zawodnik w bazie danych ma określone że odbywa konkurencje o godz 15.00 na stanowisku 5 -->
  61. <td>Zawodnik 2</td>
  62. </tr>


takie wizualne przedstawienie pomoże mi określić które stanowiska są wolne czyli jak dodam zawodnika do bazy danych ze ma konkurencje o godz. 12.00 na 3 stanowisku to wyświetli mi się on o godz . 12.00 w 3 rekordzie.
fragov
Jeśli nie musisz mieć w tego w phpcu polecam http://arshaw.com/fullcalendar/
ghastblood
Wolał bym php'a bo jquery i javascript wgl nie znam
kefirek
Chodziło mi o bazę danych byś podał jakie masz tabele i nazwy kolumn oraz przykładowe dane w tabelach.
ghastblood
Zawodnik
-id
-nazwisko
-imie
-klub
Konkunrecjie
-Nazwa konkurencji
konkurencje_zawodnikow
-id_zawodnika
-id_konkurencji
-godzina
-stanowisko
-pawilon
Pawilony
-nazwa_pawilonu

Oczywiście każde ma ID z A_I

Proszę o pomoc
kefirek
  1. $ilosc_stanowisk = mysql_result(mysql_query("SELECT ilosc_stanowisk FROM pawilony"),0) or die(mysql_error());
  2.  
  3. $array_zawodnicy = array();
  4.  
  5. $sql_wynik = mysql_query("SELECT * FROM zawodnik LEFT JOIN konkurencje_zawodnikow ON id_zawodnika = id LEFT JOIN konkurencje ON id_konkurencji = id_konk WHERE pawilon = '25m'") or die(mysql_error());
  6. while($sql_r = mysql_fetch_assoc($sql_wynik)){
  7. $array_zawodnicy[] = $sql_r;
  8. }
  9.  
  10. echo '<table border="1">';
  11. for($t=9; $t<=18; $t++){
  12. echo '<tr>';
  13. echo '<td>'.($t == 9 ? 'Godz./Stanowisko' : $t.'.00').'</td>';
  14.  
  15. for($s=1; $s<=$ilosc_stanowisk; $s++)
  16. {
  17. echo '<td>';
  18.  
  19. if($t == 9) {
  20.  
  21. echo $s;
  22.  
  23. } else {
  24.  
  25. for($i=0; isset($array_zawodnicy[$i]); $i++)
  26. {
  27.  
  28. if($array_zawodnicy[$i]['stanowisko'] == $s && $array_zawodnicy[$i]['godzina'] == $t.'.00')
  29. {
  30. echo $array_zawodnicy[$i]['nazwisko_zawodnika'];
  31. }
  32. else
  33. {
  34. echo ' ';
  35. }
  36.  
  37. }
  38.  
  39. }
  40. echo '</td>';
  41. }
  42. echo '</tr>';
  43. }
  44. echo '</table>';
  45.  
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.