![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam takie pytanie: w zaki sposób można umieścić dane na stronie www z pliku txt. Chodzi mi o meta tagi, title i jakieś drobne informacje. kod strony to:
Jesto szablon pobrany ze strony http://www.kess.snug.pl/?pid=23&sid=10 i teraz chciałbym aby metatagi były wczytywane z pliku meta.txt:
Jak narazie utknąłem na tym że trzeba taki plik otworzyć w następujący sposób
i siedzę nad tym już 2 dni. Proszę o pomoc i z góry dziękuję Ten post edytował amatorph 29.11.2014, 17:36:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
To nie może być aż tak skomplikowane. Jeśli dobrze rozumiem działanie tego całego php to żeby wstawić tytuł strony myszę użyc funkcji echo: a $title to zmienna i bedzie się ona zmieniała w zależności od id strony. Pytanie moje jest takie czy ja nie zaczynam od końca i czy powyższe wnioski sa prawidłowe? |
|
|
![]() ![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 824 Pomógł: 106 Dołączył: 14.03.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Oj 2 dni
http://phpkurs.pl/operacje-na-plikach/ Najlepiej ugryź to od nowa http://php.net/manual/pl/function.file.php http://php.net/manual/en/function.explode.php U mnie to wyglada tak bez zewn pliku: -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedź. Mimo że nie jest to sposób w jaki chciałbym to zrobić, po zapoznaniu sie z treścią pod wskazanymi linkami dochodzę do wniosku żeby "zapoznać" konkretną stronę z komórką w tabeli muszę zastosować wyrażenie $_GET['go'];
echo $go jest narazie tylko do sprawdzenia czy dobrze rozumiem działanie tej funkcji. I faktycznie po kliknięciu ma link do strony np: /testphp/index.php?go=3 po zastosowaniu powyższego skryptu pojawia się na stronie "3". Wnioskuję z tego, że php będzie wiedziało z której linii id będzie miało pobierać informację. Kolejne działania: Sprawdzić w jaki sposób wczytać plik meta.txt Eksplodować ten plik - czyli tak jakby przeformatować funkcją explode (chyba) na czytelny dla php jako tabela lub baza danych Znaleźć sposób aby uzyskać z tabeli: $description, $keywords, $title, $tekst, $tekst2, $tekst3 Efekt będzie taki, że na stronie będę mógł zastosować skrypty: echo $description, echo $keywords, echo $title, echo $tekst, echo $tekst2, echo $tekst3... Proszę o pomoc: czy te działania i ich kolejność jest prawidlowa? Jeszcze raz dziękuję. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 824 Pomógł: 106 Dołączył: 14.03.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Widzę że raczkujemy
![]() php będzie wiedziało z której linii id będzie miało pobierać informację. Trzeba bedzie je nakierować Sprawdzić w jaki sposób wczytać plik meta.txt http://php.net/manual/pl/function.file.php Za jej pomoca otrzymasz tablice zmiennych, $tablica[0] bedzie 1 linijka pliku $tablica[1] 2 linijka itd nazwy plikow masz 1.html 2.html pamietaj ze gdy $_GET['go']=1 - 1 strona ty pobierasz z pliku 1 linijke ale w tablicy liczone jest od zera. Mozesz to obejść i nazwać sobie plik 0.html wtedy bedziesz miał bez problemu ![]() Eksplodować ten plik - czyli tak jakby przeformatować funkcją explode (chyba) na czytelny dla php jako tabela lub baza danych explodowac $tablica[0] po znaku ktorym rozdzielasz"|" w wyniku otrzymasz tablice "zagnieżdzoną" (rozgałęzienie) $tablica[0][0] 1 wyraz 1 linijki $tablica[0][1] 2 wyraz 1 linijki no i potem mozesz przypisac te wartosci do $description, $keywords, $title, $tekst, $tekst2, $tekst3 Sposoby które bedziesz wykorzystywał nie są super optymalne ale polecam przebrnąć je na początek, naucz się rozróżniać czym jest zmienna, tablica, funkcja, bazydanych to oddzielny temat ty narazie drążysz pliki tekstowe, życzę owocnej nauki. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 3 Dołączył: 15.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Użyj sscanfa, jedna linijka kodu, a dane potem wyciagasz z tablicy, zero kombinowania z prehistoruycznym kodem
-------------------- "Zło do triumfu potrzebuje tylko tego, aby dobrzy ludzie nic nie robili" |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Profesorze fate - wielkie dzięki za porady
![]() Skrypt juz powstał i działa. Ma on kilka rzeczy, które są dla mnie niezrozumiałe ale na małą amatorską stronkę www wystarczy.
a tutaj baza danych:
Proszę o krótkie skomentowanie wątpliwości, które umieściłem w opisach do linii skryptu. Ten post edytował amatorph 30.11.2014, 14:56:34 |
|
|
![]() ![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 824 Pomógł: 106 Dołączył: 14.03.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
$go = $_GET['go'];
mam wrazenie ze źle to pojmujesz i bez tego php bedzie "wiedziec" na ktorej jest stronie wystarczy ze $_GET['go'] istnieje mogloby byc np $twojastara= $_GET['go']; i bedzie tak samo. Istnieja 2 metody przekazywania zmiannych miedzy stronami $_POST - formlaurze oraz $_GET w linku to bardzo ważny temat Wstepne info: http://webhosting.pl/GET.i.POST.Ktora.meto...naszych.potrzeb blokowanie pliku do odczytu jest porzebne gdyby istaniala mozliwosc "publicznego" zapisu danych w tym pliku, czyli dopoki jest zablokowany inna osoba nie moze wejsc i zapisac swoich danych w miedzyczasie gdyby inna rowniez to robila, tylko tylko odczytujesz wiec nie dotyczy ale zostaw jako nawyk $i = 0; http://www.wykop.pl/wpis/8944814/zagadka-p...l-5-jablek-3-j/ dobry nawyk zerować, nawet i w php choc tu nie jest to konieczne zeby działało $i++; //podwyższenie numeru żeby przejechać kolejny raz od poczatku pętlą, czyli wykonac funkcje na kolejnej linii i kolejnej, po opuszczeniu petli ze zmiennej $i mozna wyciagnac info ile razy wykonała się petla flock($fp, 3); // odblokowanie pliku - wytlumaczone przy blokowaniu fclose($fp); // zamknięcie pliku - zeby mozna bylo go otworzyc ponownie -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc. skrypt działa poprawnie. Napisałem też do mojej stronki małego CMSa.
Mam z nim jeden problem. Do każdej komórki bazy danych dodaje spację przy edycji. Jaka jest przyczyna? index.php
i plik edit.php
Własciwie to dodawanie spacji przy edycji nie miałoby znaczenia, jednak następujący warunek:
powoduje, że wkonywana jest część "else ....". Tak się zaztanawiam jakby to ominąć. Czy jest możliwość żeby napisać ten warunek wg następującego schematu? <?if ( $src1l == NULL lub same spacje )... Może ktoś pomóc? Zlecę poprwakę tego kodu. Udało się ustalić dlaczego do komórek w tabeli jest dodawana spacja. Tam gdzie w pilku index.php jest $conf[1] itd ze spacją powinno się tą spację usunąć. prawidłowy kod wygląda następująco:
Dodatkowo skrypt z pliku edit.php nie działał prawidłowo ze względu na zapis w 16 linii: $file[$index] = $line;//usunięty fragment powodował dodawanie linii . "\r\n"; Tam powinno być:
W zasadzie to nie rozumiem dlaczego po \n nie dodaje linii. Z tego co rozumiem z opisów tak powinno być. Może ktoś doradzić? A jednak dodaje linię. Sytuacja jest taka, że bez \n linia znajdująca się pod linią edytowaną wskakuje do linii edytowanej, a jak dodam \n to dodaje nową pustą linię. Jak to zrobić żeby było prawidłowo? Ten post edytował amatorph 25.06.2016, 12:35:02 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W twoim textarea widzę że masz spację po zmiennej.
Używaj pełnej składni <?php zamiast <? Zamiast \r\n używaj PHP_EOL. Nie myślałeś żeby zamiast rzeźbić w plikach użyć bazy danych SQLite? -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki. PHP_EOL bardzo usprawniło całą sprawę. Co do rzeźbienia chyba się wstrzymam i następną modernizację zlecę profesjonaliście, chociaż to całe kodowanie to fajne zajęcie.
Jest jeszcze jedna rzecz, która mnie zastanawia. Czy nie byłoby warto zabezpieczyć plik bazy danych przed wstawieniem ciągu znaków, które nie wyświetlałyby się na stronie, a powodowały wykonywanie php. Jak np. w sytuacji gdy ktoś ma jakiś publicznie dostępny formularz na stronie, to tam można wpisać <?php PHP_EOL> i wtedy się wykona funkcja a oczekuje się żeby formularz przesłał ciąg znaków. Jak się domyślam, takie zabezpieczenie jest nawet na tym forum. Może ktoś skomentować? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przy wyświetlaniu używaj htmlentities lub projekty typu htmlpurifier.
-------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jednak PHP_EOL też nie działa prawidłowo. Chodzi o to, że ta funkcja też dodaje dodatkową linię. Poprzednio napisałem, że jest ok bo tak mi się wyświetlały strony. Było to chyba spowodowane zapisywaniem wersji strony w pamięci podręcznej lub może wczytałem stronę zanim zmiany dotarły na serwer.
Chciałbym przeedytować następujący plik meta.csv zmieniając w nim dane w drugiej linii:
Do tego celu mam formularz index.php:
i dalej skrypt edit.php który zmienia dane:
Niestety efekt jest taki, że za każdym razem gdy próbuję edytować dane to przy każdym kolejnym razie skrypt dodaje linię jak poniżej: 1. plik oryginalny
2. Po zmianie danych w drugiej linii skrypt dodaje nową linię
3. Po każdej kolejnej zmianie danych jest tak samo.
W sumie to już próbowałem PHP_EOL w różnych kombinacjach, dodawałem też "\r\n" i same "\r" lub "\n". To nic nie daje. W jaki sposób sobie z tym poradzić? Ten post edytował amatorph 10.07.2016, 00:04:06 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chociaż i tak powinieneś do tego użyć SQLite. Ten post edytował viking 10.07.2016, 09:11:04 -------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 29.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc. Tam się pojawia tylko jeden problem. Skrypt pobiera dane do edycji tylko do pojawienia się przecinka. Jeśli w polu np. dane2 pojawi się przecinek zabawa się kończy. Nie wiem jak jest z innymi znakami. Bo dalej nie testowałem. Jaka może być przyczyna?
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zostawiłem niepotrzebnie. Zastąp linię 30, 29 wyrzuć:
$conf=explode ('|', $file[$go-1]); -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 13:04 |