Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]błąd w kodzie?
Forum PHP.pl > Forum > Przedszkole
canismajoris
Witam
Zrobiłem mechanizm który po wyborze cennika i kliknięciu podmienia ceny w zestawieniu z wybranego cennika.
kiedy wpiszę "echo $wynik to wzystko jest ok, jednak wynik do pliku zapisuje mi błędnie zawsze ostatnią linię.
Nie wiem co jest nie tak, najlepsze jest to że jak klikne dwa razy to jest ok.

wklejam kod, jakby ktoś miał chwilę będę wdzięczny za pomoc.

  1. $plik8=file("../zestawienie.txt");
  2. if (isset($_GET['cennik22'])) {
  3. $cennik42=$_GET['cennik22'];
  4. foreach($plik8 as $linia8 => $value8 ) {
  5. $zm114=explode(";",$value8);
  6. $ide114="{$zm114[0]}";
  7. $data114="{$zm114[1]}";
  8. $nazwa114="{$zm114[2]}";
  9. $jed114="{$zm114[3]}";
  10. $ilosc114="{$zm114[4]}";
  11. $plik9=file("cenniki/$cennik42");
  12. foreach($plik9 as $linia9 => $value9 ) {
  13. if (preg_match('/\b'.$ide114.'\b/',$value9)) {
  14. $zm115=explode(";",$value9);
  15. $ide115="{$zm115[0]}";
  16. $cenanowa="{$zm115[1]}";
  17. $kosztnowy=( $cenanowa * $ilosc114 );
  18. $dane115=("$ide114;$data114;$nazwa114;$jed114;$ilosc114;$cenanowa;$kosztnowy");
  19. $output115="$dane115\n";
  20. echo $output115; //tu pokazuje mi prawidłowo wynik
  21. $fplik8=fopen("../zestawienie.txt","a+");
  22. $text115 = fread($fplik8, filesize("../zestawienie.txt"));
  23. $text116 = str_replace($value8,"$output115",$text115);
  24. file_put_contents("../zestawienie.txt","");
  25. fwrite($fplik8,$text116);
  26. fclose($fplik8);
  27. }}}}


zakładając że mam w zestawieniu np. 4 pozycję , jak wybiore cennik i kliknę,w 3 pierwszych pozycjach ceny i koszt się zmieniają i jest ok, a zawsze ostatnia pozycja zapisuje mi linię bez dwóch ostatnich zmiennych tj. $cenanowa i $kosztnowy, po czym kliknę to samo raz jeszcze i jest ok.
Mało tego to jak wracam na cennik pierwotny to działa za pierwszym razem.
w pliku txt gdzie zapisują mi się zmiany różnica pomiędzy pierwszym a drugim kliknieciem polega na tym że za pierwszym razem nie mam pustej ostatniej linii,
a ostatnia linia pozostaje bez zmany ze starymi cenami, kiedy kliknę drugi raz ostatnia linia zmienia się na nowe ceny i jest pusta ostatnia linia.
Wiem że to dość skomplikowane i pewnie bym musiał przesłac cały kod strony i cenniki, jednak chciałbym aby ktoś na początek rzucił okiem na pow. kod i czy tu nie ma błędu przy zapisie.
z góry bardzo dziekuje.
pozdrawiam.
CuteOne
zamiast a+ sprawdź w+ w fopen ewentualnie sprawdź co zwraca $text115.

ps. naucz się pisać czytelny kod... to tak na przyszłość smile.gif
canismajoris
...znalazłem błąd nie wiem jak go poprawić
przy każdej zmianie cennika zjada mi jeden ostatni znak w pliku zlecenia.txt.
dlatego wczesniej nie liczył mi ostatniej linii bo juz była lnia bez ilości.
tylko dlaczego zjada ten znak questionmark.gifquestionmark.gifquestionmark.gif

Witam ponownie , nie moge poradzić sobie w dalszym ciągu z problemem.
wysyłam kopie całego kodu.
posiadam dwa cenniki : w ktorych jest id produktu oraz jego cena.
cennik1.txt:
1111;100;
1112;200;
1113;300;
1114;400;
1115;500;

cennik2.txt
1111;1;
1112;2;
1113;3;
1114;4;
1115;5;

oraz plik zestaw.txt coś w rodzaju kosza z zakupami, który zawiera: (ide produktu,data,produkt,jednosta,ilosc,cena,koszt):
1111;data;jablka;jednostka;100;1;100;
1112;data;pomidory;jednostka;100;2;200;
1113;data;wisnie;jednostka;100;3;300;
1114;data;czeresnie;jednostka;100;4;400;

na stronie mam select którym wybieram cennik.
po wyborze jak widać przelicza wszystko i wyśiwtla prawidłowo.
jedyne czego nie moe zrobić to wynik po przeliczeniu podmienic i zapisać w pliku zestaw.txt

kod strony:

  1. <?php
  2.  
  3. #zmiana cennika
  4. if(isset($_POST['cennik'])) {
  5. $cenniknowy=$_POST['cennik'];
  6.  
  7. echo "nowy cennik, rozliczenie wg. cennika $cenniknowy</br><table border=1>";
  8.  
  9. $plik1=file("zestaw.txt");
  10. foreach ($plik1 as $linia1 => $value1 ) {
  11. $zm2=explode(";",$value1);
  12. $ide1="{$zm2[0]}";
  13. $data1="{$zm2[1]}";
  14. $nazwa1="{$zm2[2]}";
  15. $jed1="{$zm2[3]}";
  16. $ilosc1="{$zm2[4]}";
  17.  
  18. $plik2=file("$cenniknowy");
  19. foreach ($plik2 as $linia2 => $value2 ) {
  20. if(preg_match('/'.$ide1.'/',$value2)) {
  21. $zm3=explode(";",$value2);
  22. $ide2="{$zm3[0]}";
  23. $cenanowa="{$zm3[1]}";
  24.  
  25.  
  26.  
  27. $kosztnowy=( $cenanowa * $ilosc1 );
  28.  
  29. $dane = ("$ide1;$data1;$nazwa1;$jed1;$ilosc1;$cenanowa;$kosztnowy");
  30.  
  31. echo "<tr><td>$ide1</td><td>$data1</td><td>$nazwa1</td><td>$jed1</td><td>$ilosc1</td><td>$cenanowa</td><td>$kosztnowy</td></tr>";
  32. }}}}
  33. echo "</table>";
  34.  
  35. ####
  36.  
  37. echo "<table align=center border=1 valign=center>";
  38. echo "<tr><td colspan=6>";
  39.  
  40. echo "<form name=wpisz action='' method=POST>";
  41. echo "<select name=cennik>";
  42. echo "<option value=cennik1.txt>cennik1</option>";
  43. echo "<option value=cennik2.txt>cennik2</option>";
  44. echo "</select>wybierz cennik";
  45. echo "<input type=submit value=zmien></input>";
  46.  
  47. echo "</form>";
  48. echo "</td></tr>";
  49.  
  50. echo "<tr><td>data</td><td>nazwa</td><td>jednostka</td><td>ilosc</td><td>cena</td><td>koszt</td></tr>";
  51.  
  52. $plik=file("zestaw.txt");
  53. foreach ($plik as $linia => $value ) {
  54. $zm1=explode(";",$value);
  55. $ide="{$zm1[0]}";
  56. $data="{$zm1[1]}";
  57. $nazwa="{$zm1[2]}";
  58. $jed="{$zm1[3]}";
  59. $ilosc="{$zm1[4]}";
  60. $cena="{$zm1[5]}";
  61. $koszt=( $ilosc * $cena );
  62.  
  63. echo "<tr><td>$data</td><td>$nazwa</td><td>$jed</td><td>$ilosc</td><td>$cena</td><td>$koszt</td></tr>"; // to jest wynik
  64. }
  65. echo "</td></tr></table>";
  66. ?>


jak wynik podmienić w pliku zestaw.txt, tak aby w tabeli juz mi się wyswietlało zstawienie wg wybranego cennika.

mam to zrobione tak, ale zjada znaki, jakies głupoty pokazują się:
pls help co jest nie tak, siedze już drug dzień nad tym,...


  1. $fplik=fopen("zestaw.txt","a+");
  2. $text = fread($fplik, filesize("zestaw.txt"));
  3. $text1 = str_replace($value1,"$output",$text);
  4. $wynik="$text1";
  5. file_put_contents("zestaw.txt","");
  6. fwrite($fplik,$text1);
  7. fclose($fplik);

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.