Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie tekstu do wylosowanej linijki z oddzielnego pliku txt
Forum PHP.pl > Forum > Przedszkole
Kangoor12
A więc mam osobny plik .txt i w tym pliku na każdą linijkę kodu przypada jakaś nazwa.

Skrypt wygląda tak:

  1. <?php
  2. $cytat=file("losowanie.txt");
  3. echo $cytat[array_rand($cytat)];
  4. ?>


I załóżmy, że jeżeli wypadnie nazwa "Kangur" to chce wyświetlić jakiś tekst. Próbowałem takiego czegoś ale nie działa:

  1. <?php
  2.  
  3. $cytat=file("losowanie.txt");
  4. echo $cytat[array_rand($cytat)];
  5.  
  6. switch ($cytat) {
  7. case (Kangur):
  8. echo ("rodzaj torbaczy z rodziny kangurowatych. Są endemitami australijskiej krainy zoogeograficznej.");
  9. break;
  10. }
  11.  
  12. ?>


Dlaczego nie chce wpisać tego tekstu od razu do pliku .txt? Bo potem tekst chce zastąpić obrazkiem a do pliku .txt chyba obrazka nie dam.

Dlaczego ten kod nie działa? Próbowałem już wszystkich kombinacji z " i ' ale to nic nie daje.
trzczy
Włącz obsługę błędów i zobacz, w której linii masz błąd. Na 1. rzut oka błąd jest tam gdzie "Kangur", bo to ani zmienna, ani łańcuch. http://php.net/manual/en/control-structure...php#example-118
Kangoor12
Robię to na cba.pl i właśnie nie wykrywa mi żadnego błędu. Po prostu wyświetla mi tylko nazwę Kangur a tekstu z echo już nie.
trzczy
Obsługę błędów włącza się w skrypcie:

  1. ini_set('display_errors', true);
Kangoor12
Nie wyświetla żadnych błędów
viking
A powinno coś w stylu use of undefined constant kangur. Nie testuj na serwerze tylko postaw sobie serwer lokalnie i na tym sprawdzaj kod.
I poczytaj o stringach w dokumentacji PHP.
StreetFighter
  1. <?php
  2.  
  3. $cytat=file("losowanie.txt");
  4. $cytat = $cytat[array_rand($cytat)];
  5.  
  6. echo $cytat; //edit: jeżeli chcesz wyświetlić wylosowany ciąg
  7.  
  8. switch ($cytat) {
  9. case ('Kangur'):
  10. echo ("rodzaj torbaczy z rodziny kangurowatych. Są endemitami australijskiej krainy zoogeograficznej.");
  11. break;
  12. }
  13.  
  14. ?>
Kangoor12
StreetFighter – twój kod nic nie zmienia, dalej jest to samo.

Postawiłem XAMPPA i dalej to samo. Nie wyświetla żadnych błędów.
trzczy
2 podpowiedzi:

1. Umieść w kodzie coś, co na pewno jest błędem i przekonaj się, czy błąd się wyświetli.

2. Wstaw po 3. linii
  1. var_dump($cytat);
i przekonaj się, czy do 3. linii wszystko działa zgodnie z twą intencją. Potem, ewentualnie, rób var_dump dla kolejnych wyrażeń w kodzie. Czyli normalnie debuguj linia po linii.
StreetFighter
Cytat(Kangoor12 @ 19.11.2017, 22:06:35 ) *
StreetFighter – twój kod nic nie zmienia, dalej jest to samo.

Postawiłem XAMPPA i dalej to samo. Nie wyświetla żadnych błędów.


mój kod działa, sprawdziłem zanim go wstawiłem!!!

funkcjonalność którą próbujesz zrobić to żadna filozofia,

może masz coś źle w pliku txt lub czegoś nie masz,

edit: przepraszam, nie includowałem pliku, tylko sprawdziłem na array, masz poniżej działający i przetestowany kod:
  1. <?php
  2.  
  3. $cytat=file("losowanie.txt");
  4.  
  5. $cytat = str_replace("\r\n", '',$cytat);
  6. $cytat = $cytat[array_rand($cytat)];
  7.  
  8. echo $cytat; //edit: jeżeli chcesz wyświetlić wylosowany ciąg
  9.  
  10. switch ($cytat) {
  11. case 'Kangur':
  12. echo (" rodzaj torbaczy z rodziny kangurowatych. Są endemitami australijskiej krainy zoogeograficznej.");
  13. break;
  14. }
  15.  
  16. ?>
Kangoor12
Ciekawa sprawa, na XAMPPIE teraz wszystko elegancko śmiga, ale na cba.pl już nie. Dlaczego?
StreetFighter
czekaj sprawdze na cba.pl

edit: działa na cba

plik: losowanie.txt
Kod
Kangur
Kot
Pies
Kangoor12
Patrze na kod od XAMPPA i cba.pl od 30 minut i pomimo, że przekopiowałem ten kod z XAMPPA gdzie kod działa to nie działa na tym cba, nie mam pojęcia o co chodzi

Przekopiowałem nawet twój kod i nie działa: zobacz
viking
Przecież przy każdej odsłonie losuje jakieś słowo i je wyświetla. Co nie działa?
szajens
Cytat(Kangoor12 @ 20.11.2017, 21:46:13 ) *
Patrze na kod od XAMPPA i cba.pl od 30 minut i pomimo, że przekopiowałem ten kod z XAMPPA gdzie kod działa to nie działa na tym cba, nie mam pojęcia o co chodzi

Przekopiowałem nawet twój kod i nie działa: zobacz


kod na cba

Kod działa, masz powyżej linka na cba


PS. Najtańszy normalny serwer to jakieś 3zl po co korzystać z darmowego
StreetFighter
Czym edytujesz pliki? Może zamiast końca Lini rn wstaw samo n w przypadku linuxa lub samo r jak to mac.
Kangoor12
Cytat(StreetFighter @ 20.11.2017, 23:11:16 ) *
Czym edytujesz pliki? Może zamiast końca Lini rn wstaw samo n w przypadku linuxa lub samo r jak to mac.


Dokładnie tu był pies pogrzebany! Mimo, że zapisywałem plik w CRLF to dalej zostawało samo LF i nie mogę tego zmienić nie wiedzieć czemu.
Wystarczyło usunąć \r i zostawić samo "\n" i teraz już wszystko działa smile.gif.

Dzięki wielkie za pomoc! smile.gif

Jeszcze spytam: jak zmienić wielkość czcionki w echo? Próbuje dać znacznik <font size="n"></font> do środka echo ale wywala błąd.
viking
Wchodzisz w dokumentację file i czytasz o flagach FILE_IGNORE_NEW_LINES.
Wielkość i inne rzeczy edytuj w CSS.
StreetFighter
Dokładnie viking ma rację, lepiej zamiast str_replace użyć ignore , tak myślałem że powinny być jakieś ustawienia, ale nie sprawdzałem w manualu. Za to spostrzeżenie wielki plus, to tylko potwierdza że trzeba dokładnie czytać manuala
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.