Witam,

Posiadam formularz taki oto:

Trzy pola radio

  1. <input TYPE=\"radio\" name=newbus value="14a|1">";
  2. <input TYPE=\"radio\" name=newbus value="14b|2">";
  3. <input TYPE=\"radio\" name=newbus value="28a|3">";


Posiadam rowiez plik txt. ktorego struktura moze wygladac nastepujaco

  1. costam0||14a||14b-cancelled||28a-cancelled
  2. costm1||14a-cancelled||14b||28a
  3. costam3||14a-cancelled||14b||28a-cancelled


Zawsze jest 14a, 14b i 28a / lub tak samo plus -cancelled ae ne musi byc.

Teraz kazde pole radio posiada wartosc odpowiednio po rozzbiciu poprzez explode()
Pole pierwsze -- Index 0 (14a) index 1 (1)
Pole drugie -- Index 0 (14b) index 1 (2)
Pole trzecie -- Index 0 (28a) index 1 (3)

1,2,3 to indexy w pliku pomiedzy separatorem || a 14a, 14b, 28a to dane ktore maja zastapic dane w konkretnym indeksie

Teraz chce zaznaczajac pole przykladowo nr. 1 i wyborze linii nr 2 chce zamienic 14a-cancelled na to co posylam polem radio po rozbiciu

14a to to na co ma sie zamienic jesli jest 14a-cancelled a liczba 1 po separatorze | okresla w ktorym indexsie jest 14a. Tak samo analogicznie z 14b i 28a.

Mam przyklad ktory zamienia mi tak jak chce lecz dodaje jeszcze na koncu kolejny index - identycny ktory zwraca wyslane pole radio.

Proslbm odniesc sie tylko do tego przykladu nie pisac nowych , swoich.

  1. $f1 = file( 'ccc');
  2.  
  3. $indexy = explode("|", $_POST['newbus']); // newbus to pole radio
  4. $ex = explode("||", $f1[$_POST['seats1']]); // seats1 to ktora linia w pliku do pobrania
  5.  
  6.  
  7. $cousunac = $indexy[0]; // co usunac 14a, 14b, 28a
  8. $ktoralinia = $_POST['seats1']; // kora linia
  9. $ktoryindex = $indexy[1]; // który index usunac
  10.  
  11.  
  12.  
  13.  
  14.  
  15. $ex = explode("||", rtrim($f1[$ktoralinia]));
  16.  
  17.  
  18. if ($ex[$ktoryindex] == $cousunac.'-cancelled')
  19.  
  20. {
  21.  
  22. $ex[$ktoryindex]=$cousunac; // przypisanie nowych danych
  23.  
  24.  
  25. }
  26.  
  27. //$f1[$ktoralinia] = implode("||", $ex) . "\r\n";
  28.  
  29.  
  30.  
  31.  
  32. $f = fopen('ccc','w');
  33. flock($f, LOCK_EX);
  34. fwrite($f,join('',$f1));
  35. // fwrite($f,str_replace("","\r\n",join('',$f1)));
  36. flock($f ,LOCK_UN);
  37. fclose($f);


I teraz jesli mialem w linii tak:

cos||14a-cancelled||14b-cancelled
i wybieram do zamiany 14b-cancelled
wynikiem jest
Limerick & Cliffs by boat||14a-cancelled||14b||14b|2

Czyli na koncu dodaje mi kolejny index 14b|2 pochodzacy z pola radio

Powino byc tak:

cos||14a-cancelled||14b


Co robie nie tak ?