Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pomoc w tabeli
Forum PHP.pl > Forum > Przedszkole
szymonk237231
Witajcie, jak juz w moich poprzednich tematach pisałem to robię sobie stronkę ligową.
Do tej pory zrobiłem już dodawanie zespołów, dodawanie kolejek.
I teraz pracuję nad tabelą (po dodaniu kolejki można w późniejszym czasie zmienić wynik )
I jak to zrobić, że po zmienieniu wyniku kolejki 1 między zespołem 1 vs zespoł 2 po wygraniu meczu przez zespół 1 dodało mi się do tabeli 3 pkt dla tego zespołu??

Jeśli coś niejasno to pisać.

Kshyhoo
Nie wiemy, jaką masz strukturę tabel, ale podam Ci przykład o podobnym działaniu na przelew jakiejś sumy między kontami. Dopasuj sobie.
  1. $ile = 10; // przelew na 10 zł.
  2. $id_od = 101; // użytkownik, który płaci
  3. $id_dla = 102; // użytkownik, który otrzymuje
  4.  
  5. $baza = mysql_connect("localhost", "user", "password");
  6. if ($baza) {
  7. $wynik = mysql_select_db("baza1");
  8. if ($wynik) {
  9.  
  10. // zaczynamy transakcję
  11. mysql_query("BEGIN");
  12. $blad=0;
  13.  
  14. // obsługa pierwszej operacji (zabieramy)
  15. $wynik = mysql_query(
  16. "UPDATE rachunki SET kwota=kwota-$ile WHERE id=$id_od");
  17. if (mysql_affected_rows()<>1) $blad++;
  18.  
  19. // obsługa drugiej operacji (dajemy)
  20. $wynik = mysql_query(
  21. "UPDATE rachunki SET kwota=kwota+$ile WHERE id=$id_dla");
  22. if (mysql_affected_rows()<>1) $blad++;
  23.  
  24. // zatwierdzamy lub odrzucamy zmiany
  25. if ($blad>0) mysql_query("ROLLBACK");
  26. else mysql_query("COMMIT");
  27.  
  28. echo "Błędy podczas wykonywania zapytań: $blad";
  29. }
  30. mysql_close($baza);
  31. }
szymonk237231
Mam dwie tabele: druzyna i kolejka .
Tabela druzyna przetrzymuje dane o klubie :
- ID
- Nazwe
- Skróconą nazwe
- Zawodników
- Nazwe managera.
- PKT
Tabela kolejka przetrzymuje dane:
- ID
- druzyna1
- druzyna2
- wynik1
- wynik2

I właśnie chce zrobić tak, że po uzupełnieniu wyniku (danych z tabeli: kolejka) do tabeli: druzyna dodały mi się 3 pkt dla druzyny która wygrała mecz w kolejka smile.gif
Nie wiem czy jasno pisze smile.gif
Kshyhoo
No to jeszcze prościej - daj UPDATE na dwie tabele i po kłopocie...
szymonk237231
chodzi o to że mam takie zapytanie:
mysql_query("UPDATE druzyna SET pkt='3', wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");

I mu kurcze nie dodaje np po 2 kolejkach 6 pkt, tylko dajmy na to gdy uzupełnie 3 kolejke to dalej mam 3 pkt w tabeli.
Jak zrobić by mi dodawało te pkt normalnie?
redeemer
pkt=pkt+3
szymonk237231
Chyba mam źle.
Mam panel admina.
W nim są wyświetlone mecze z poszczególnych kolejek, i przy każdym meczu mam link: EDIT
Po kliknięciu w ten link przenosi mnie do strony w której mam pola do uzupełnienia meczu.
Plik edycji przedstawię poniżej smile.gif
  1. <?php
  2. include('header.php');
  3. $connection = @mysql_connect('localhost', 'root', '')
  4. or die('Brak połączenia z serwerem MySQL');
  5. $db = @mysql_select_db('haxball', $connection)
  6. or die('Nie mogę połączyć się z bazą danych');
  7. ?>
  8. <div id="TRESC">
  9. <div id="BELKA">Tresc strony</div>
  10. <a href="menu.php">Home</a> | <a href="dodaj_z.php">Dodaj zespol</a> | <a href="edytuj_k.php">Edytuj wyniki</a> <a href="dodaj_k.php">Dodaj mecz</a> | <a href="aktualizuj_t.php">Aktualizuj tabele</a> | <a href="../index.php">Powrot</a><br>
  11. <div id="hr">
  12. <?php
  13. $a = trim($_REQUEST['a']);
  14. $id = trim($_GET['id']);
  15.  
  16. if($a == 'edit' and !empty($id)) {
  17. $wynik = mysql_query("SELECT * FROM kolejka WHERE
  18. id='$id'")
  19. or die('Błąd zapytania');
  20. if(mysql_num_rows($wynik) > 0) {
  21. $r = mysql_fetch_assoc($wynik);
  22. $punkt = $r['pkt'];
  23.  
  24.  
  25. echo $punkt;
  26. echo '<form action="edytuj.php" method="post">
  27. <input type="hidden" name="a" value="save" />
  28. <input type="hidden" name="id" value="'.$id.'" />
  29. '.$r['druzyna1'].' VS '.$r['druzyna2'].' <input type="text" name="wynik1" value="'.$r['wynik1'].'" size="1"> : <input type="text" name="wynik2" value="'.$r['wynik2'].'" size="1"">
  30. <input type="submit" value="popraw" />
  31. </form>';
  32. }
  33. }
  34. elseif($a == 'save') {
  35.  
  36. $id = $_POST['id'];
  37. $wynik1 = trim($_POST['wynik1']);
  38. $wynik2 = trim($_POST['wynik2']);
  39.  
  40. if($wynik1 > $wynik2) {
  41. $wygrana = $punkt + 3;
  42. mysql_query("UPDATE kolejka SET pkt='$wygrana', wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  43. mysql_query("UPDATE druzyna SET pkt='$wygrana' WHERE id='$id'");
  44. echo "Zmieniono pkt ";
  45. }
  46.  
  47.  
  48.  
  49. if($wynik1 < $wynik2) {
  50. mysql_query("UPDATE druzyna SET pkt + 3 WHERE id='$id'");
  51. mysql_query("UPDATE kolejka SET wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  52. echo "Zmieniono pkt ";
  53. }
  54. if($wynik1 == $wynik2) {
  55. mysql_query("UPDATE kolejka SET pkt='2', wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  56. echo "Zmieniono pkt ";
  57. }
  58.  
  59. }
  60. ?>
  61. <?php
  62. include('footer.php');
  63. ?>


I jak tutaj zmienić, by po wpisaniu 2-1 dla drużyny 1, dodało mi się do tabeli PKT danej drużyny 3 pkt?
Swirek
pkt=pkt+3 w zapytaniu sql
szymonk237231
Dobra, jak narazie to dodaje poprawnie.
zrobiłem to za pomocą IF'ów.
Wyglądają one tak:
  1. if($wynik1 > $wynik2) {
  2.  
  3. mysql_query("UPDATE kolejka SET pkt='$wygrana', wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  4. mysql_query("UPDATE druzyna SET pkt=pkt+3 WHERE id='$id'");
  5. echo "Zmieniono pkt ";
  6. }
  7.  
  8.  
  9.  
  10. if($wynik1 < $wynik2) {
  11. mysql_query("UPDATE druzyna SET pkt=pkt+3 WHERE id='$id'");
  12. mysql_query("UPDATE kolejka SET wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  13. echo "Zmieniono pkt ";
  14. }
  15. if($wynik1 == $wynik2) {
  16. mysql_query("UPDATE kolejka SET pkt='2', wynik1='$wynik1', wynik2='$wynik2' WHERE id='$id'");
  17. echo "Zmieniono pkt ";
  18. }


Gdy NP WYNIK 1 był większy od wyniku 2 to dla zepsołu 1 dodawało mi poprawnie wynik, ale gdy już wynik zmieniłem (że wynik1 < wynik2), to i tak mi dodaje 3 pkt dla drużyny która przegrała. Co robię nie tak?
Swirek
zamiast $id w zapytaniach update powinieneś używać id drużyny które wyciągniesz sobie z kolejki.
teraz aktualizujesz wszystko pod tym samym id (id kolejki)

  1. $team1=$wynik["iddruzyny1"];
  2. $team2=$wynik["iddruzyny2"];
  3.  
  4. mysql_query("UPDATE druzyna SET pkt=pkt+3 WHERE id='$team1'");
  5. mysql_query("UPDATE druzyna SET pkt=pkt+3 WHERE id='$team2'");
szymonk237231
Mój rozum jest kurcze ograniczony.
Robie tak:
  1. $wynik2 = mysql_query("SELECT * FROM druzyna");
  2. $r2 = mysql_fetch_assoc($wynik2);
  3. $id_team = $r2['id'];


I mi nie wiem czemu wyciąga cały czas ID 1.
Jak zrobić by wyciągało mi ID drużyn? Bo Twój kod mi nic nie mówi. Soraska, ale komp mi zeżarł mózga ;d

Chodzi mi o to, że jak wyciągnąć ID dwóch zespołów które właśnie edytuje?
Swirek
te od powinny być zapisane w tabeli kolejka w osobnych polach i na pewno tak jest powinieneś je z tamtąd wyciągnąc za pomocą id $_GET["id"]
wtedy zaktualizować rekordy tak jak napisałem powyżej do konkretnej drużyny
szymonk237231
Znaczy w tabeli kolejka przetrzymuje tylko ID kolejki. Nie przetrzymuje ID zespołów. I aktualizując wynik chce by do tabeli 'druzyna' dodały się punkty dla druzyny która wygrała/zremisowała i żeby dodało się do tabel 'kolejka' wynik meczu

Tak sobie myśle, że chyba zrobie tak, że wszystkie dane będą w jendej tabeli. Podczas dodawania kolejki będę pobierał ID drużyny, no i później po tym ID będzie wyświetlana nazwa zespołu smile.gif
Pewnie nie zrobie tego czego chce, ale myśle że dam rade.


Co do tego co tutaj napisałem - ODPISUJCIE JESZCZE smile.gif

Dobra, nie dam rady.
Może jakieś kawałki kodu byście zapodali?
Chodzi mi o to, że z PA dodaje kolejke. No i wybieram tam, że ZESPÓŁ1 vs ZESPÓŁ2.
I do tabeli doda mi się do ZESPÓŁ1 id ZESPOŁU2 i na odwrót ( że do ZESPÓŁ2 doda mi się id ZESPOŁU1)
I na podstawie tych danych wyświetliłbym nazwy klubów.

Da się tak?

Chciałbym się jak mogę wyciągnąć ID edytowanych drużyn w kolejce?

Cytat(Kshyhoo @ 18.04.2012, 15:27:52 ) *
No to jeszcze prościej - daj UPDATE na dwie tabele i po kłopocie...

Daje update na 2 tabele. Do jednej idzie wynik, a do drugiej właśnie mają iść PKT, i tu jest kłopot. nie wiem jak to zorbić
Kshyhoo
Cytat(szymonk237231 @ 19.04.2012, 14:03:13 ) *
Daje update na 2 tabele. Do jednej idzie wynik, a do drugiej właśnie mają iść PKT, i tu jest kłopot. nie wiem jak to zorbić

Przecież już miałeś napisane, jak to zrobić:
1. pierwsze zapytanie takie, jak miałeś
2. drugie zapytanie (pkt=pkt+3) dla drużyny, która zwyciężyła
szymonk237231
No to mi daje 3 pkt dla obydwuch drużyn.

Zrobiłem "SKRYPT" który mi wyszukuje ID drużyny włąśnie edytowanej.
Podam go tutaj, i powiedzcie mi czy on jest poprawny (bo działać - działa haha.gif)

  1. if($r['druzyna1']) {
  2. $szuk = $r['druzyna1'];
  3. $szu = mysql_query("SELECT * FROM druzyna WHERE nazwa LIKE '$szuk'");
  4. $szuka = mysql_fetch_assoc($szu);
  5. echo "DRUZYNA: ".$szuk.", ID ".$szuka['id']."<br>";
  6. }
  7. if($r['druzyna2']) {
  8. $szuk1 = $r['druzyna2'];
  9. $szu1 = mysql_query("SELECT * FROM druzyna WHERE nazwa LIKE '$szuk1'");
  10. $szuka1 = mysql_fetch_assoc($szu1);
  11. echo "DRUZYNA: ".$szuka1['nazwa'].", ID ".$szuka1['id']."<br>";
  12. }
Kshyhoo
A wiesz, czym jest instrukcja WHERE w zapytaniu? Jak się już dowiesz, to użyj dla drużyny, która zwyciężyła.
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.