Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odczytywanie danych z pliku *txt i dawanie ich do zmiennych, Pobieramy dane z pliku przed i po określonym znaku i dajemy je do 
KrisKros123
post 15.07.2018, 08:33:15
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 20.03.2018

Ostrzeżenie: (0%)
-----


Witam,

Wszędzie szukałem jak można odczytać z pliku *txt dane po jakimś znaku, ale nigdzie nie mogłem znaleźć, może nie umiem szukać, ale to już zostawmy, więc jak zawsze zapytam się bardziej uzdolnionych znawców, niż ja ( ͡° ͜ʖ ͡°). Zaużmy że znak ten to "=" i naprawdę nie mam pojęcia oraz nie wiem jak się za to wziąć, żeby mając plik txt o zawartości:
2=6.5
5=2.5
4=1
6=1

Dla przykładu niech to będą oceny i wwagi przed znakiem "=" jest ocena, a po znaku "=" jest waga, i właśnie tu tkwi problem jak dla każdej oceny z osobna pobrać wagę, czyli tak liniowo chodzi na przykład o:

2=6.5

A potem rozdzielić to do dwóch zmiennych, żeby było:

$a = 2 ;
$b = 6.5 ;

Ale przy następnej linijce te zmienne już miały inną wartość, jak wiadomo w tym przypadku:

$a = 5 ;
$b = 2.5 ;

Itd. Itp.

Bardzo byłbym wdzięczny za pomoc, dzięki czemu mógłbym to zrobić i w jaki sposób. Od razu mówię bazy danych nie mogę użyć z wielu powodów, ale tego już nie będę mówić i zostawię to dla siebie.
Go to the top of the page
+Quote Post
viking
post 15.07.2018, 08:35:45
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


File i explode


--------------------
Go to the top of the page
+Quote Post
KrisKros123
post 15.07.2018, 20:23:54
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 20.03.2018

Ostrzeżenie: (0%)
-----


Bardzo dziękuję, szukałem na temat file() i explode() i znalazłem coś takiego:

  1. <?php
  2.  
  3. $fn = fopen("test.txt","r") or die("fail to open file");
  4.  
  5. while($row = fgets($fn)) {
  6. list( $ocena, $waga ) = explode( "=", $row );
  7.  
  8. echo 'Ocena:' . $ocena . '<br />';
  9. echo 'Waga:' . $waga . '<br />';
  10. }
  11.  
  12. fclose( $fn );
  13.  
  14. ?>
  15.  


Działa idealnie. Jeszcze raz, bardzo dziękuję.

Jeszce jak już jesteśmy przy temacie ocen poproszę o radę, a mianowicie poszukałem tutaj na forum (no i znalazłem) zaokrąglanie liczb do dwóch miejsc po przecinku link: http://forum.php.pl/index.php?showtopic=29318
Ale mając taki skrypt PHP:

  1.  
  2. <br>
  3. <style>
  4. /* Tooltip container */
  5. .tooltip {
  6. position: relative;
  7. display: inline-block;
  8. border-bottom: 0px dotted black; /* If you want dots under the hoverable text */
  9. }
  10.  
  11. /* Tooltip text */
  12. .tooltip .tooltiptext {
  13. visibility: hidden;
  14. width: 250px;
  15. background-color: black;
  16. color: #fff;
  17. text-align: left;
  18. padding: 5px 0;
  19. border-radius: 6px;
  20.  
  21. /* Position the tooltip text - see examples below! */
  22. position: absolute;
  23. z-index: 1;
  24. }
  25.  
  26. /* Show the tooltip text when you mouse over the tooltip container */
  27. .tooltip:hover .tooltiptext {
  28. visibility: visible;
  29. }
  30. </style>
  31.  
  32.  
  33.  
  34. <?php
  35.  
  36. $fn = fopen("test.txt","r") or die("fail to open file");
  37.  
  38. while($row = fgets($fn)) {
  39. list( $ocena, $waga, $data, $opis ) = explode( "=", $row );
  40.  
  41. ?>
  42. <div class="tooltip"> <?php echo $ocena ; ?>
  43. <span class="tooltiptext">Waga Oceny: <?php echo $waga ; ?>
  44. <br>
  45. Data wystawienia: <?php echo $data ; ?>
  46. <br>
  47. Opis oceny: <?php echo $opis ; ?>
  48. </span>
  49. </div>
  50. <br>
  51. <br>
  52. <?php
  53. $turaocen = $ocena * $waga ;
  54. $sumaocen = $sumaocen + $turaocen ;
  55. $sumawag = $sumawag + $waga ;
  56.  
  57.  
  58. }
  59.  
  60. fclose( $fn );
  61.  
  62. $sredniakon = $sumaocen / $sumawag ;
  63. $srednia = round($sredniakon, 2);
  64.  
  65. echo $srednia ;
  66.  
  67.  
  68.  
  69. ?>
  70.  
  71.  


i taka zawartość pliku txt:

3=6.5=15.07.2018=Sprawdzian z Hobbita
4=2.5=15.07.2018=Praca Domowa
5=1=10.06.2018=Aktywność
6=5=11.06.2018=Kartkówka z równań

Nie wychodzi mi do dwóch liczb po przecinku tylko pokazuje mi 4.3 , a ja chce do 2 miejsc po przecinku i jak to rozwiązać? Nie wiem dlatego proszę o radę i jeszcze raz bardzo dziękuję.

Ten post edytował KrisKros123 15.07.2018, 20:27:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 15:23