Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: update wielu rekordow naraz - problem
Forum PHP.pl > Forum > PHP
stal-sw
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. ?>
c3zi
Czegos nie rozumiem .. Dane z formularza przechowujesz w talbicy `gol1`, dane dotyczace GOL1 ? Moze masz zmienna, nie tablice ?
misiek172
przepraszam ale wogóle nie rozumiem problemu, napisz to bardziej ja¶niej, mo¿e z jaki¶ przyk³adem ? biggrin.gif
stal-sw
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
misiek172
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!=''? ...)
stal-sw
Witam.
Zamienilem to ale kurcze wyskakuje mi Parse error - tyle ze nie wiem co jest nei tak - przegladalem to i nie widze bledu ?
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.