Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formatowanie warunkowe danych z pliku txt
Forum PHP.pl > Forum > Przedszkole
MarcinKonewski
Witam Serdecznie,

Gryzę się już z tym kilka dni. Szukam, kombinuję na polskich i zagranicznych stronach, nic... Logistycznie niby wszystko łatwe i da się zrobić, jedna kiedy przychodzi do zmiany kodu wszystko to jak krew w piach. Przechodzę do rzeczy. Mam skrypt formularza, który zapisuje dane do pliku txt. W następnym skrypcie odczytuję to co się znajduje w tym pliku txt za pomocą tabeli. Jednym z pól formularza jest imię jakiejś osoby. Chciałbym aby jeśli ta osoba pojawia się po raz czwarty w tabeli (tzn. jeśli jest to już czwarty wiersz z jej udziałem) to niech cały wiersza ma czerwone tło.

Skrypt jest podzielony na różne pliki, tzn. jeśli w formularzu wybierasz opcję plik1 to zapisuje do plik1.txt. Jeżeli wybierasz plik2 to zapisuje do plik2.txt. Zresztą sami zobaczcie plik wyswietlający. Bardzo proszę o pomoc...

  1. <table border="1">
  2.  
  3. <?php
  4. /*********************************************
  5. * plik podglad.php
  6. *********************************************/
  7.  
  8. // wczytanie zawartości pliku do tablicy
  9.  
  10. if ($_GET["id"] == "4a"){
  11. $file = file("class/4a.txt");
  12. } elseif($_GET["id"] == "4b") {
  13. $file = file("class/4b.txt");
  14. } elseif($_GET["id"] == "4c") {
  15. $file = file("class/4c.txt");
  16. } elseif($_GET["id"] == "4d") {
  17. $file = file("class/4d.txt");
  18. } elseif($_GET["id"] == "4e") {
  19. $file = file("class/4e.txt");
  20. } elseif($_GET["id"] == "4f") {
  21. $file = file("class/4f.txt");
  22. } elseif($_GET["id"] == "5a") {
  23. $file = file("class/5a.txt");
  24. } elseif($_GET["id"] == "5b") {
  25. $file = file("class/5b.txt");
  26. } elseif($_GET["id"] == "5c") {
  27. $file = file("class/5c.txt");
  28. } elseif($_GET["id"] == "5d") {
  29. $file = file("class/5d.txt");
  30. } elseif($_GET["id"] == "5e") {
  31. $file = file("class/5e.txt");
  32. } elseif($_GET["id"] == "5f") {
  33. $file = file("class/5f.txt");
  34. } elseif($_GET["id"] == "6a") {
  35. $file = file("class/6a.txt");
  36. } elseif($_GET["id"] == "6b") {
  37. $file = file("class/6b.txt");
  38. } elseif($_GET["id"] == "6c") {
  39. $file = file("class/6c.txt");
  40. } elseif($_GET["id"] == "6d") {
  41. $file = file("class/6d.txt");
  42. } elseif($_GET["id"] == "6e") {
  43. $file = file("class/6e.txt");
  44. } elseif($_GET["id"] == "6f") {
  45. $file = file("class/6f.txt");
  46. } elseif($_GET["id"] == "7a") {
  47. $file = file("class/7a.txt");
  48. } elseif($_GET["id"] == "7b") {
  49. $file = file("class/7b.txt");
  50. } elseif($_GET["id"] == "7c") {
  51. $file = file("class/7c.txt");
  52. } elseif($_GET["id"] == "7d") {
  53. $file = file("class/7d.txt");
  54. } elseif($_GET["id"] == "8a") {
  55. $file = file("class/8a.txt");
  56. } elseif($_GET["id"] == "8b") {
  57. $file = file("class/8b.txt");
  58. } elseif($_GET["id"] == "9a") {
  59. $file = file("class/9a.txt");
  60. } elseif($_GET["id"] == "9b") {
  61. $file = file("class/9b.txt");
  62. }
  63.  
  64.  
  65. // przechodzimy przez tablicę za pomocą pętli foreach
  66. foreach($file as $value) {
  67. // rozbijamy poszczególne linie na części
  68. $exp = explode("`",$value);
  69. // wyświetlamy rozbity tekst
  70. echo "<tr><td>Student's name: <b>".$exp[0]." </b></td><td>Class: <b>".$exp[1]." </b></td><td>Teacher: <b>".$exp[2]." </b></td><td>Issue: <b>".$exp[3]." </b></td><td>Add Info: <b>".$exp[4]." </b></td><td>".$exp[5]." </td></tr>";
  71. }
  72.  
  73. ?>
  74.  
  75. </table>
  76. <?
  77. include ("footer.php");
  78. ?>
gorden
Stwórz sobie tablicę asocjacyjną, która za klucz przyjmie imię i tam dodawaj liczbę wystąpień

czyli w pętli coś takiego
  1. $imiona[$exp[0]]++;
  2. if($imiona[$exp[0]] >= 4) {
  3. //koloruj na czerwono
  4. }



co do wczytywania plików:
  1. if(file_exists('class/' . $_GET['id'] . '.txt')) {
  2. $file = file('class/' . $_GET['id'] . '.txt');
  3. }
MarcinKonewski
Dziękuję z całego serca.

A jeśli chciałbym aby na czerwno zaznaczało się każda 4,8,12... itd pozycja przy pojawieniu się imienia. A na żółto każda 3,6,9...itd?? Zrobiłem tak, ale zaznacza się tylko 3 , iwszystkie powyżej 4. Nie wiem jakim cudem skoro wyraźnie zaznaczyłem =3 i = 4.

  1. $imiona[$exp[0]]++;
  2. if($imiona[$exp[0]] == 3) {
  3. $kolor1 = " bgcolor=yellow";
  4. $kolor2 = " bgcolor=yellow";
  5. $kolor3 = " bgcolor=yellow";
  6. $kolor4 = " bgcolor=yellow";
  7. $kolor5 = " bgcolor=yellow";
  8. $kolor6 = " bgcolor=yellow";
  9. }
  10. $imiona2[$exp[0]]++;
  11. if($imiona2[$exp[0]] == 4) {
  12. $kolor1 = " bgcolor=red";
  13. $kolor2 = " bgcolor=red";
  14. $kolor3 = " bgcolor=red";
  15. $kolor4 = " bgcolor=red";
  16. $kolor5 = " bgcolor=red";
  17. $kolor6 = " bgcolor=red";
  18. }


Z czym jeszcze mam problem to odświerzanie strony. Za każdym razem muszę po setki razy odświerzać stronę, żeby uzyskać zmianę. Czy to wina skryptu? Jak to zmienić, aby zmiany na stronie pojawiały się natychmiast po oświerzeniu?
gorden
Po co dwie zmienne, które przechowują to samo? Jeśli chcesz kolorować co któryś element użyj operator modulo.

  1. $imiona[$exp[0]]++;
  2. if($imiona[$exp[0]] % 3 == 0) {
  3. //koloruj co trzeci element
  4. }
  5. else if($imiona[$exp[0]] % 4 == 0) {
  6. //koloruj co czwarty element
  7. }



MarcinKonewski
Działa, ale musiałem pokombinować. Pierwszy wpis jest wpisem numer 0. Dopiero drugi to 1. Dlatego pierwszy musi być testowy i dopiero od tego drugiego zaczyna się liczenie. I wtedy skrypt (dzielenie przez 3 i 4 nie działa, bo muszą być liczby 3,4 dalej 7,8 dalej 11,12....):

  1. $kolor = " bgcolor=white";
  2. $imiona[$exp[0]]++;
  3. if($imiona[$exp[0]] == 3) {
  4. $kolor = " bgcolor=yellow";
  5. }
  6. else if($imiona[$exp[0]] == 4) {
  7. $kolor = " bgcolor=red";
  8. }
  9. else if($imiona[$exp[0]] == 7) {
  10. $kolor = " bgcolor=yellow";
  11. }
  12. else if($imiona[$exp[0]] == 8) {
  13. $kolor = " bgcolor=red";
  14. }
  15. else if($imiona[$exp[0]] == 11) {
  16. $kolor = " bgcolor=yellow";
  17. }
  18. else if($imiona[$exp[0]] == 12) {
  19. $kolor = " bgcolor=red";
  20. }
  21. else if($imiona[$exp[0]] == 15) {
  22. $kolor = " bgcolor=yellow";
  23. }
  24. else if($imiona[$exp[0]] == 16) {
  25. $kolor = " bgcolor=red";
  26. }
  27. else if($imiona[$exp[0]] == 19) {
  28. $kolor = " bgcolor=yellow";
  29. }
  30. else if($imiona[$exp[0]] == 20) {
  31. $kolor = " bgcolor=red";
  32. }
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-2024 Invision Power Services, Inc.