Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zliczanie i wyświetlanie punktów w pliku txt
Forum PHP.pl > Forum > Przedszkole
MarcinKonewski
Witam,
Bardzo dziękuję za pomoc w poprzednim temacie, poszedłem bardzo naprzód z tworzeniem skryptu, jednak ponownie trafiłem na problem. Mianowicie mam następujący skrypt wyświetlania danych z pliku .txt. Chciałbym go przekształcić tak, by wyświetlał wszystkie rekordy $exp[0] po kolei, jednak nie chcę aby się powtarzały. Zamiast tego chciałbym aby była podana liczba obok ile ich jest (jeśli są powtórzenia).

Tzn. jeśli do pliku .txt 5 razy wysyłam dane z rekordem XXXYYY, tzn że XXXYYY ma 5 punktów. I później chcę wyświetlić tabelkę XXXYYY - 5 punktów. Nie mam pojęcia jak to przekształcić... Proszę o pomoc.

Kolorki można pominąć, ewentualnie fajnie byłoby zaznaczyć na zielono najwyższy wynik.

  1. <table border="1">
  2.  
  3. <?php
  4. /*********************************************
  5. * plik podglad.php
  6. *********************************************/
  7.  
  8. // wczytanie zawartości pliku do tablicy
  9.  
  10. if(file_exists('class/' . $_GET['id'] . '.txt')) {
  11. $file = file('class/' . $_GET['id'] . '.txt');
  12. }
  13.  
  14.  
  15. // przechodzimy przez tablicę za pomocą pętli foreach
  16. foreach($file as $value) {
  17. // rozbijamy poszczególne linie na części
  18. $exp = explode("||",$value);
  19.  
  20. // wyświetlamy rozbity tekst
  21. $kolor = " bgcolor=white";
  22. $imiona[$exp[0]]++;
  23. if($imiona[$exp[0]] == 3) {
  24. $kolor = " bgcolor=yellow";
  25. }
  26. else if($imiona[$exp[0]] == 4) {
  27. $kolor = " bgcolor=red";
  28. }
  29. else if($imiona[$exp[0]] == 7) {
  30. $kolor = " bgcolor=yellow";
  31. }
  32. else if($imiona[$exp[0]] == 8) {
  33. $kolor = " bgcolor=red";
  34. }
  35. else if($imiona[$exp[0]] == 11) {
  36. $kolor = " bgcolor=yellow";
  37. }
  38. else if($imiona[$exp[0]] == 12) {
  39. $kolor = " bgcolor=red";
  40. }
  41. else if($imiona[$exp[0]] == 15) {
  42. $kolor = " bgcolor=yellow";
  43. }
  44. else if($imiona[$exp[0]] == 16) {
  45. $kolor = " bgcolor=red";
  46. }
  47. else if($imiona[$exp[0]] == 19) {
  48. $kolor = " bgcolor=yellow";
  49. }
  50. else if($imiona[$exp[0]] == 20) {
  51. $kolor = " bgcolor=red";
  52. }
  53. else if($imiona[$exp[0]] == 23) {
  54. $kolor = " bgcolor=yellow";
  55. }
  56. else if($imiona[$exp[0]] == 24) {
  57. $kolor = " bgcolor=red";
  58. }
  59. else if($imiona[$exp[0]] == 27) {
  60. $kolor = " bgcolor=yellow";
  61. }
  62. else if($imiona[$exp[0]] == 28) {
  63. $kolor = " bgcolor=red";
  64. }
  65. else if($imiona[$exp[0]] == 31) {
  66. $kolor = " bgcolor=yellow";
  67. }
  68. else if($imiona[$exp[0]] == 32) {
  69. $kolor = " bgcolor=red";
  70. }
  71.  
  72. echo "<tr><td".$kolor."><div>Student's name: <b>".$exp[0]." </b></div></td><td".$kolor."><div>Class: <b>".$exp[1]." </b></div></td><td".$kolor."><div>Teacher: <b>".$exp[2]." </b></div></td><td".$kolor."><div>Issue: <b>".$exp[3]." </b></div></td><td".$kolor." width=20 align=center><div><b>".$imiona[$exp[0]]."</b></div></td><td".$kolor."><div>".$exp[4]." </div></td></tr>";
  73. }
  74. ?>
  75.  
  76. </table>
gorden
Niczego się nie nauczyłeś po moim ostatnim poście? To samo rozwiązanie.

  1. $rekordy = array();
  2. //gdzies w skrypcie
  3. $rekordy['jakaswartosc']++;
  4.  
  5. //wyswietlenie
  6. foreach($rekordy as $wystapienia => $rekord) {
  7. echo 'Rekord: ' . $rekord . ', wystapil ' . $wystapienia . ' razy.';
  8. }

W tym przypadku nawet już masz gotową tablicę z tymi wartościami ($imiona)
MarcinKonewski
Niestety nie poszło.

  1. $rekordy = array();
  2. //gdzies w skrypcie
  3. $rekordy['$exp[0]']++;
  4.  
  5. //wyswietlenie
  6. foreach($rekordy as $wystapienia => $rekord) {
  7. echo 'Rekord: ' . $rekord . ', wystapil ' . $wystapienia . ' razy.';
  8. }


Wyświetla liczbę w miejscu gdzie miała być nazwa i dosłownie cytuję $exp[0] w miejscu gdzie miała być liczba. Chciałem połączyć trochę z tamtym skryptem, pokombinować żebyć sięudało, ale nic nie idzie.
MGie
Sprawdź, co wypisze Ci na ekran:

  1. $str = "Tekst do wyswietlenia";
  2.  
  3. echo $str;
  4. echo "<br/>";
  5. echo "------";
  6.  
  7. echo "$str";
  8. echo "<br/>";
  9. echo "------";
  10.  
  11. echo '$str';
MarcinKonewski
Yyyy... nawet nie sprawdzam. Nie przejdzie to, zupełnie nie o to chodzi.

OK, mój błąd niepotrzebnie osadzilem apostrofy.

Jednak skrypt nadal nie zlicza ile rekordów mają imiona. I wyświetlają się wszystkie a nie tylko jeden z nich z odpowiednią liczbą.

  1. $rekordy = array();
  2. //gdzies w skrypcie
  3. $rekordy[$exp[0]]++;
  4.  
  5. //wyswietlenie
  6. foreach($rekordy as $wystapienia => $rekord) {
  7. echo 'Rekord: ' . $rekord . ', wystapil ' . $wystapienia . ' razy.';
  8. }


Aha.. i niestety nadal nie wyświetlają się na swoich miejscach

Próbowałem na wszystkie strony. 5 godzin prawie. Nic już mi nie przychodzi do głowy.
gorden
Oczywiście, że się tylko jeden wyświetli. Czytałeś mój komentarz? "gdzieś w kodzie", czyli w Twojej pętli. To nie jest gotowiec. Poza tym napisałem, że możesz użyć aktualnej tablicy $imiona. 5 godzin, a wystarczy czytać ze zrozumieniem.
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.