Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Automatycznie tworzenie spotkan
Forum PHP.pl > Forum > Przedszkole
siatkarzyna
Witam w ramach ćwiczeń pisze taki "cms" do prowadzenia np amatorskiej ligi. Problem mam taki dodaje drużyny do tabeli TEAM w tabeli mam kolumny id, nazwa i teraz chciał bym napisać funkcje która by automatycznie tworzyła spotkania każdy z każdym i zapisywała je do tabeli SPOTKANIA id_team1, id_team2. Proszę o jakąś podpowiedź co_jest.gif
BibDeep
  1. <?php
  2. $polacz = mysql_connect('adres_serwera', 'uzytkownik', 'haslo') OR DIE("Nie polaczono z serwerem mysql");
  3. mysql_select_db('baza_danych') OR DIE("Nie polaczono z baza danych");
  4.  
  5. $query = "SELECT * FROM team";
  6. $result = mysql_query($query);
  7.  
  8. while($row = mysql_fetch_array($result))
  9. {
  10.    while($row2 = mysql_fetch_array($result))
  11.    {
  12.        $query = "INSERT INTO spotkania (`id`, `id_team1`, `id_team2`) VALUES ( '', '".$row."', '".$row2."')";
  13.    }
  14. }
  15. ?>


Piszę z głowy, ale chyba powinno być dobrze winksmiley.jpg

Pozdrawiam.
siatkarzyna
Twój kod nie wysyłał w pętli zapytania poprawiłem go
  1. <?php
  2. $query = "SELECT * FROM team";
  3. $result = mysql_query($query);
  4.  
  5. while($row = mysql_fetch_array($result))
  6. {
  7.   while($row2 = mysql_fetch_array($result))
  8.   {
  9.       $query = "INSERT INTO spotkania (`id`, `id_team1`, `id_team2`) VALUES ( '', '".$row."', '".$row2."')";
  10.             $result = mysql_query($query) or die (mysql_error());
  11.   }
  12. }
  13. ?>

i wyskoczyly bledy

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\liga\index2.php on line 11

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\liga\index2.php on line 9

Napisalem kod tak dla sprawdzenia ktory pobiera rekordy z tabeli TEAM i zapisuje ich id do innej tabeli SPOTKANIA id_team1
  1. <?php
  2. $zapytanie = 'SELECT * FROM team ';
  3. $wynik = mysql_query($zapytanie) or die (mysql_error());
  4.  
  5. while ($rekord = mysql_fetch_assoc($wynik)) {
  6.  
  7. $numer = $rekord[id];
  8.  
  9. $query = "INSERT INTO spotkania ('id_team1') VALUES ('$numer')";
  10.             $result = mysql_query($query) or die (mysql_error());
  11.  
  12. }
  13. ?>

i tez wyskakuje blad

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id_team1') VALUES ('1')' at line 1
MietekJurek
  1. <?php
  2. 'id_team1'
  3. ?>
zmień na `id_team1` :)powinno śmignąć
kazag
Chodziło pewnie o to, żeby skrypt tworzył kalendarz spotkań, tzn wybierał druzynę , dobierał drugą, sprawdzał, czy taki mecz już istnieje i jeśli nie, to go dodawał? (i dzielił na kolejki?)
siatkarzyna
kazag pomoglo dodaje z tym ze jest tak (Zakładając ze jest 12 druzyn)
team1_id team2_id
1 ------------------2
1-------------------3
1-------------------4
1-------------------5
1-------------------6
1-------------------7
1-------------------8
1-------------------9
1------------------10
1------------------11
1------------------12

  1. <?php
  2. $zapytanie = 'SELECT * FROM team ';
  3. $wynik = mysql_query($zapytanie) or die (mysql_error());
  4.  
  5. while ($rekord = mysql_fetch_assoc($wynik)) {
  6.  
  7.  while($rekord2 = mysql_fetch_array($wynik))
  8.   {
  9.  
  10. $numer = $rekord[id];
  11. $numer2 = $rekord2[id];
  12.  
  13. $query = "INSERT INTO spotkania (`id_team1`, `id_team2`) VALUES ('$numer', '$numer2')";
  14.             $result = mysql_query($query) or die (mysql_error());
  15.  
  16. }}
  17. ?>


No i na tym sie konczy pewnie dla tego ze druga pentla rekord2 sie zakonczyla wczoraj probowalem zastosowac inne pentle np for ale nie wychodzilo jeszcze jestem przeczkolakiem wstydnis.gif
Cytat
Chodziło pewnie o to, żeby skrypt tworzył kalendarz spotkań, tzn wybierał druzynę , dobierał drugą, sprawdzał, czy taki mecz już istnieje i jeśli nie, to go dodawał? (i dzielił na kolejki?)

Dokladnie ma tak to wygladac tylkop na poczatku chicalem zrobic zeby dodawalo samo spotaknia potem chcialem pomyslec nad dzielenie na kolejki wzgledem dat itp.
BibDeep
Cytat
Dokladnie ma tak to wygladac tylkop na poczatku chicalem zrobic zeby dodawalo samo spotaknia potem chcialem pomyslec nad dzielenie na kolejki wzgledem dat itp.


Hm... to moze sproboj tak?

  1. <?php
  2. $zapytanie = 'SELECT * FROM team ';
  3. $wynik = mysql_query($zapytanie) or die (mysql_error());
  4. $wynik2 = mysql_query($zapytanie) or die(mysql_error());
  5.  
  6. while ($rekord = mysql_fetch_assoc($wynik)) {
  7.  
  8. $numer = $rekord[id];
  9.  
  10.  while($rekord2 = mysql_fetch_array($wynik2))
  11.   {
  12.  
  13.  
  14.        $numer2 = $rekord2[id];
  15.        if($numer != $numer2){
  16.            $query = "INSERT INTO spotkania (`id_team1`, `id_team2`) VALUES ('$numer', '$numer2')";
  17.            $result = mysql_query($query) or die (mysql_error());
  18.        }
  19. }}
  20. ?>


Znów z głowy, ale niestety nie mam w domu jak sprawdzić poprawności działania, ale może chociaż Cię to naprowadzi winksmiley.jpg
siatkarzyna
No niestety dalej jest to samo 1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 1 9, 1 11, 1 12, i koniec. Szukam caly czas z tym ze teraz szukam jak wyswietlic wszytki kombinacje bez powtorzen z tablicy znalazlem jeden kod ktory prawie jest dobro prawie robi wielka roznice

  1. <?php
  2. $pary[] = 1;
  3. $pary[] = 2;
  4. $pary[] = 3;
  5. $pary[] = 4;
  6. $pary[] = 5;
  7. $pary[] = 6;
  8. $pary[] = 7;
  9. $pary[] = 8;
  10. $pary[] = 9;
  11. $pary[] = 10;
  12. $pary[] = 11;
  13. $pary[] = 12;
  14.  
  15. $k = 1;
  16.  
  17. for ($i = 1; $i < count($pary); $i++) {
  18. for ($j = $k; $j < count($pary); $j++) {
  19. if ($pary[$i] <> $pary[$j]) {
  20. echo $i."&nbsp: ".$j." OR ".$j."&nbsp: ".$i.'<br />';
  21. }
  22. }
  23. $k++;
  24. }
  25. ?>


Z mysla o meczach kod jest dobry bo mozna powiedziec ze generuje tez rewanże tylko w przykladowym kodzie w tablicy jest 12 wartosci a kod nie podaje ostatniego spotkania czyli 11 - 12 or 12 - 11 i jeszcze jest problem jak chce pobrac wartosci z bazy danych i przypisac zmienej $pary tablice otrzymana z zapytania do bazy danych wtedy to wcale nie che dzialac
dr_bonzo
Ludzie, ehhh, podstawy matematyki i algorytmow

  1. <pre><?php
  2.  
  3. $druzyny = range( 1, 12 );
  4. print_r( $druzyny );
  5.  
  6. $count = count( $druzyny );
  7. $mecze = array( 0 => array(), 1 => array() ); // mecze i rewanze osobno
  8. for ( $i = 0; $i < $count - 1; $i++ ) // -1 zeby ostatnia para bylo [przedostatni, ostatni]
  9. {
  10.    for ( $j = $i+1; $j < $count; $j++ ) // $j = $i +1 - czyli zaczynamy od nastepnej druzynie po $i
  11.    {
  12.        $druzyna_1 = $druzyny[$i];
  13.        $druzyna_2 = $druzyny[$j];
  14.        
  15.        $mecze[0][] = array( $druzyna_1, $druzyna_2 );
  16.        $mecze[1][] = array( $druzyna_2, $druzyna_1 );
  17.    }
  18. }
  19. printf( "Meczy w rundz: %d\n", count( $mecze[0] ) );// powinno byc ( $count - 1 ) * $count / 2 = 11 * 6 = 66
  20. print_r( $mecze );
  21. ?>

Aaa, i najpierw RAZ pobierasz z bazy IDki druzyn a potem to odpalasz.
siatkarzyna
No i w końcu się udało wielkie dzieki dla dr_bonzo a tu cały kod kotry pobiera id druzyn z bazy danych a potem tworzy spotkania i dodaje do bazy danych (w tym kodzie tylko pierwsza runde)

  1. <?php
  2. include ('connect.php');
  3.  
  4.  
  5. $zapytanie = 'SELECT id FROM team ';
  6. $wynik = mysql_query($zapytanie) or die (mysql_error());
  7.  
  8. for ($i = 0; $i < $rekord = mysql_fetch_array($wynik); $i++) {
  9.  
  10.  
  11. $mecze[] = $rekord[id];
  12.  
  13. }
  14.  
  15. $druzyny = $mecze;
  16.  
  17. /* echo "<pre>";
  18. print_r( $druzyny );
  19. echo "</pre>";
  20. */
  21. $count = count( $druzyny );
  22. $mecze = array( 0 => array(), 1 => array() ); // mecze i rewanze osobno
  23. for ( $i = 0; $i < $count - 1; $i++ ) // -1 zeby ostatnia para bylo [przedostatni, ostatni]
  24. {
  25.   for ( $j = $i+1; $j < $count; $j++ ) // $j = $i +1 - czyli zaczynamy od nastepnej druzynie po $i
  26.   {
  27.       $druzyna_1 = $druzyny[$i];
  28.       $druzyna_2 = $druzyny[$j];
  29.      
  30.       $mecze[0][] = array( $druzyna_1, $druzyna_2 );
  31.       $mecze[1][] = array( $druzyna_2, $druzyna_1 );
  32.   }
  33. }
  34. printf( "Meczy w rund: %d\n", count( $mecze[0] ) );// powinno byc ( $count - 1 ) * $count / 2 = 11 * 6 = 66
  35.  
  36.  
  37. $ilosc = count( $mecze[0] );
  38.  
  39.  
  40. echo "<br>";
  41. echo "<hr>";
  42.  
  43. for ( $i=0; $i<$ilosc; $i++) {
  44.  
  45. $team1 = $mecze[0][$i][0];
  46. $team2 = $mecze[0][$i][1];
  47.  
  48. echo $team1." -- ".$team2."<BR>";
  49.  
  50. $query = "INSERT INTO spotkania (`id_team1`, `id_team2`) VALUES ('$team1', '$team2')";
  51.            $result = mysql_query($query) or die (mysql_error());
  52. }
  53. ?>
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.