Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> update wielu rekordow naraz - problem
stal-sw
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 27.06.2002
Skąd: Stalowa Wola

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


Witam.
Mam formularz w ktorym wczytuje naraz wyniki calej kolejki meczow pilkarskich.
Formularz ma pola : data, gol1, gol2, godzina

I teraz naraz che dokonac updatu danych dla tych wszystkich edytowanych meczy.

No i moj skrypt to robi (czesciwo dobrze) - bo jak nie wpisze jakiegos wyniku meczu (bo mecze rozgrywane sa o roznych porach czy tez w rozne dni) to wtedy w zwiazku z tym ze pole w bazie jest typu INT to skyrpt wpisuje mi w taki mecz wynik gol1 i gol2 po "0".

Czyli skrypt dziala dobrze jak nie mam warunku " if(!empty($v)) { " jesli wstaeie ten warunek to nie che mi wogole dokonywac updatu albo wykonuje update np. dla trzech pierwszych rekordow - dziwne sad.gif

Jak sobie z tym poradzic questionmark.gif

Moj kod:

  1. <?
  2. if (isset($HTTP_POST_VARS)){
  3. foreach ($_POST['gol1'] as $k=>$v) { 
  4. if(!empty($v)) {
  5. $db->query("UPDATE tmecze SET gol1='".$v ."', gol2='".$_POST['gol2'][$k]."', data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'"); 
  6. }else {
  7. $db->query("UPDATE tmecze SET data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'"); 
  8. }
  9. }
  10. unset($_POST); 
  11. header("Location: ?m=terminarz&s=1");
  12. }
  13. ?>


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
c3zi
post
Post #2





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Czegos nie rozumiem .. Dane z formularza przechowujesz w talbicy `gol1`, dane dotyczace GOL1 ? Moze masz zmienna, nie tablice ?


--------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Go to the top of the page
+Quote Post
misiek172
post
Post #3





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


przepraszam ale wogóle nie rozumiem problemu, napisz to bardziej jaśniej, może z jakiś przykładem ? biggrin.gif


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
stal-sw
post
Post #4





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 27.06.2002
Skąd: Stalowa Wola

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


Witam.
A zapomnialem podac kodu formularza - tutaj sa tablice.
  1. <input type="text" name="data[{$mecz.id}]" value="{$mecz.data}" size="14" style="text-align:center;">
  2. {$mecz.gosp}-{$mecz.gosc}
  3. <input type="text" name="gol1[{$mecz.id}]" value="{$mecz.gol1}" size="2" style="text-align:center;"> : <input type="text" name="gol2[{$mecz.id}]" value="{$mecz.gol2}" size="2" style="text-align:center;">
  4. <input type="text" name="x[{$mecz.id}]" value="{$mecz.x}" size="5" style="text-align:center;">


Problem polega na tym ze jak powiedzmy w kolejce mam 9 emczy to robi mi np naraz upadte tylko 3-4 meczy - i to jest wlasnie dziwne.
Zas jak ten kod:
  1. <?php
  2. if(!empty($v)) {
  3. $db->query("UPDATE tmecze SET gol1='".$v ."', gol2='".$_POST['gol2'][$k]."', data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'"); 
  4. }else {
  5.  $db->query("UPDATE tmecze SET data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'"); 
  6. }
  7. ?>
zamienie na (czyli usune warunki)
  1. <?php
  2. $db->query("UPDATE tmecze SET gol1='".$v ."', gol2='".$_POST['gol2'][$k]."', data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'");
  3. ?>

To dziala mi rpawie dobrze - bo robi update wszytkich wynikow z danej kolejki tylko ze najgorzsze ze robi update tez tych wynikow gdzie nie pisze wyniku (czyli jak nie wypelnie w formularzu pola GOL1) - i w zwiazku z tym do bazy wprowadza mi puste wartosci dla tych meczy dal ktorych nei wpisalem w formularzu GOL1 - puste wartosci - czyli do bazy wprowadza mi wartosc " 0" - a tak byc nie powinno.

Nie wiem ogolnie jak sobie poradzic aby w bazie robilo mi update tylko tych meczy dla ktrocyh wypelnie wpisze w formularzu jakas liczbe w polu GOL1 questionmark.gif


--------------------
Go to the top of the page
+Quote Post
misiek172
post
Post #5





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


ehh

zamień to :

  1. <?php
  2. if(!empty($v)) {
  3. $db->query("UPDATE tmecze SET gol1='".$v ."', gol2='".$_POST['gol2'][$k]."', data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'");
  4.  }else {
  5.  $db->query("UPDATE tmecze SET data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'");
  6.  }
  7. ?>


na

  1. <?php
  2. $db->query("UPDATE tmecze SET ".($v!=''"gol1='".$v."', ").($_POST['gol2'][$k]!=''"gol2='".$_POST['gol2'][$k]."', ")."data='".$_POST['data'][$k]."', x='".$_POST['x'][$k]."' WHERE id = '$k'");
  3. ?>


powinno śmigać.

Pisałem z ręki więc mogą być nieznaczne błędy.

Mała podpowiedź:
if($cos!=''){ ... }
równa się
($cos!=''? ...)

Ten post edytował misiek172 19.04.2007, 15:09:07


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
stal-sw
post
Post #6





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 27.06.2002
Skąd: Stalowa Wola

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


Witam.
Zamienilem to ale kurcze wyskakuje mi Parse error - tyle ze nie wiem co jest nei tak - przegladalem to i nie widze bledu ?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:49