[PHP] Automatyczna tabela, Automatyczne generowanie tabeli z pliku txt |
[PHP] Automatyczna tabela, Automatyczne generowanie tabeli z pliku txt |
22.03.2018, 20:38:05
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Drodzy forumowicze, mam problem
Otóż mam na stronie taki oto kod: Kod <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> </head> <table align="center" border="1"> <tr><td>nazwa kolumny 1</td> <td>nazwa kolumny 2</td> <td>nazwa kolumny 3</td> <td>nazwa kolumny 4</td></tr> <?php $file = file("baza.txt"); foreach($file as $value) { $exp = explode("`",$value); echo <tr><td>$exp[0].</td><td>.$exp[1].</td><td>.$exp[2].</td>.<td>$exp[3].</td></tr>; } ?> </table> </html> i niestety dane z pliku "baza" nie generują się. W ogóle strona nie działa. Jestem mocno początkujący w te klocki, naczytałem się już poradników i przykładów ( m.in. powyższy kod wykorzystałem prawie w całości z jakiegoś poradnika ), ale dalej nie wiem co może nie grać... Docelowo chciałbym, żeby dane z pliku (4 sekcje/kolumny ) wgrywały się do tabeli na stronie. Tabela ma być bardzo prosta - 4 kolumny, a liczba wierszy oczywiście w zależności od ilości danych. Bardzo proszę o pomoc i z góry dziękuję |
|
|
22.03.2018, 21:39:08
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Zacznij od włączenia wyświetlania błędów. Masz tu sporo baboli, może błędy Cię nakierują.
|
|
|
23.03.2018, 18:09:52
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
A jak mogę to zrobić?
Używam Notepad ++ i nigdzie nie widzę takiej opcji. Z tego co czytałem, powinno mi automatycznie wyrzucać takie błędy, ale tego nie robi... |
|
|
23.03.2018, 19:03:07
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
|
|
|
23.03.2018, 20:39:43
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Udało mi się dojść do czegoś takiego, ale niestety tabela dalej nie działa. Nagłówki wyświetlają się poniżej wartości, które miałyby pokazać się w kolumnach.
Kod <html>
<head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> </head> <table align="center" border="1"> <tr><td>kolumna1</td> <td>kolumna2</td> <td>kolumna3</td> <td>kolumna4</td></tr> <?php $file = file("baza.txt"); foreach($file as $value) { $exp = explode("`",$value); echo $exp[0]." ".$exp[1]." ".$exp[2]." ".$exp[3]."<hr/>"; } ?> </table> </html> |
|
|
23.03.2018, 20:48:48
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Tabela ma w html określoną strukturę. Table thead tbody tr td th itd. U Ciebie przy wyświetlaniu nic takiego nie ma. Nawet nie informujesz że dane są w wierszach.
-------------------- |
|
|
23.03.2018, 21:04:51
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
A wiesz może jak to zrobić? Próbowałem na różne sposoby, ale w większości przypadków kod psuje się na tyle, że po prostu nie wczytuje mi całej strony ( wyskakuje błąd ).
|
|
|
23.03.2018, 21:27:26
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Zatem popraw błąd. To jest najprostsze łączenie ciągów w PHP. Wystarczy zerknąć w dokumentację.
-------------------- |
|
|
26.03.2018, 08:50:26
Post
#9
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
"Zatem popraw błąd"....
Ja rozumiem, że nikt tutaj nie chce przedstawiać gotowych rozwiązań, to logiczne, ale przecież pisałem powyżej, że nie potrafię znaleźć błędów w tym, co napisałem. Próbowałem wiele razy, ale niestety jestem "zielony" w temacie, dlatego proszę o pomoc na tym forum. Komentarze typu "zatem popraw błąd" są trochę nie na miejscu... Nie chcesz pomóc - lepiej nic nie pisz. |
|
|
26.03.2018, 09:10:38
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
Napisales tez, ze wyskakuje ci blad. Jak mamy ci go pomoc rozwiazac jak nie raczyles nam tego bledu podac. Mamy sobie go wywrozyc?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
27.03.2018, 05:27:48
Post
#11
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Oho, zaczyna się....
"Nie wczytuje mi całej strony ( wyskakuje błąd )" oznacza, że NIE WCZYTUJE MI STRONY, wyskakuje błąd wczytywania, "Ta witryna jest nieosiągalna", "Nie udało się znaleźć adresu". Czy teraz wystarczająco jasno się wyraziłem? |
|
|
27.03.2018, 05:51:29
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Zastosuj się do przypiętego tematu Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy włącz pełne raportowanie błędów albo podaj komunikaty błędu z logów serwera. To co podajesz oznacza zapewne błąd 500. Poza tym rozumiem poczytales dokumentację php w temacie łączenia ciągów znakowych? Pokaż jak powinien wyglądać kod html bez php z przykładowym jednym wierszem.
-------------------- |
|
|
27.03.2018, 06:45:32
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Ok @viking, zapoznałem się z podesłanym przez Ciebie tematem.
Przedstawię może to co udało mi się do tej pory zrobić. Postaram się to zrobić "łopatologicznie", jak najszczegółowiej się da. Mam taki kod ( jest to cały kod na stronie, nic więcej nie ma. Zamieściłem również komentarze dla siebie ): Kod <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> </head> <table align="center" border="1"> <tr><td>nagłówek 1</td> <td>nagłówek 2</td> <td>nagłówek 3</td> <td>nagłówek 4</td></tr> <?php error_reporting(E_ALL); ini_set('display_errors','1'); // wczytanie zawartości pliku do tablicy $file = file("baza.txt"); // przechodzimy przez tablicę za pomocą pętli foreach foreach($file as $value) { //linie na części $exp = explode("`",$value); //rozbity tekst echo $exp[0]." ".$exp[1]." ".$exp[2]." ".$exp[3]."<hr/>"; //każdy exp to kolejna pozycja z formularza - nie trzeba pokazywać wszystkich, w usterkach można pokazać tylko to co nas interesuje } ?> </table> </html> Strona, po wygenerowaniu danych wygląda tak: Próbowałem wielu kombinacji kodu, które przeniosłyby te dolne nagłówki do konkretnych kolumn, jednak tak jak pisałem wcześniej - nie udało się. W efekcie końcowym chciałbym uzyskać taki efekt, żeby w kolumnie "nagłówek 1" byłyby "dane z formularza 1", w "nagłówek 2" "dane z formularza 2" itd., a każde "dane z formularza" były osobnym wierszem, jeden pod drugim ( czyli prosta tabelka z danymi ). Dane zaczytywane są z pliku txt, w którym wartości oddzielone są znakiem " ' ". |
|
|
27.03.2018, 07:12:18
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
I tak jak ci mówiłem struktura tabeli to table -> tbody -> tr -> td. Ty wyświetlasz bez generowania tr->td w foreach. Nagłówkii tabeli to nie td tylko th. Dlatego też prosiłem żebyś wstawił jak według ciebie powinna wyglądać struktura html bez php.
-------------------- |
|
|
27.03.2018, 07:21:33
Post
#15
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 23 Dołączył: 20.01.2011 Skąd: Chełm Ostrzeżenie: (0%) |
tak w skróconej wersji
Kod <table align="center" border="1"> <tr><td>nagłówek 1</td> <td>nagłówek 2</td> <td>nagłówek 3</td> <td>nagłówek 4</td></tr> ..... echo $exp[0]." ".$exp[1]." ".$exp[2]." ".$exp[3]."<hr/>"; .... </table> zobacz lepiej co źle robisz z tabelami i przypatrz się na przykłady z tabel https://www.w3schools.com/html/html_tables.asp |
|
|
27.03.2018, 09:29:11
Post
#16
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Dzięki za link! Poczytałem, popróbowałem i myślę, że trochę więcej wiem. Problem mam w generowaniu danych z PHP.
Poniżej poglądowo podsyłam formę tabelki, którą finalnie chciałbym uzyskać. Problem w tym, że dane w konkretnych wierszach miałyby być generowane w PHP ( wg kodu, który napisałem w postach powyżej ). Kod <table style="width:100%"> <tr> <th>Nagłówek 1</th> <th>Nagłówek 2</th> <th>Nagłówek 3</th> <th>Nagłówek 4</th> </tr> <tr> <td>dane1</td> <td>dane2</td> <td>dane3</td> <td>dane4</td> </tr> <tr> <td>dane01</td> <td>dane02</td> <td>dane03</td> <td>dane04</td> </tr> <tr> <td>dane001</td> <td>dane002</td> <td>dane003</td> <td>dane004</td> </tr> </table> Kombinowałem z dodawaniem tabelki do kodu PHP, ale wtedy wywala mi błąd 500 |
|
|
27.03.2018, 09:30:57
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Porównaj swoje dwa fragmenty kodu.
W jednym łączyłeś zmienne z tekstem tak: a w drugim tak: -------------------- |
|
|
27.03.2018, 10:18:24
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Teraz już wiesz jak zrobić to po stronie htmla więc pozostaje to co mówiłem od razu, czyli poczytać dokumentację http://php.net/manual/en/language.types.string.php To są naprawdę najprostsze rzeczy, jedna z podstaw języka bez której ani rusz dalej.
Masz kilka możliwości. Otwierać i zamykać ciągi znakowe (echo '<tr><td>' . $x .''), wstawiać tylko php w komórkach(<?php echo $x; ?>, albo użyć funkcji typu sprintf: -------------------- |
|
|
6.04.2018, 18:35:21
Post
#19
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 22.03.2018 Ostrzeżenie: (0%) |
Po wielu trudach i walce udało mi się stworzyć tabelę, jaką chciałem. W PHP zastosowałem poniższe rozwiązanie:
Kod echo '<head> <title></title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name=\'robots\' content=\'noindex, follow, noarchive\'> </head><center> <body bgcolor="#FFFFFF"> <h3>Tytuł tabeli</h3><table border="1"><hr> <th>Nagłówek 1</th> <th>Nagłówek 2</th> <th>Nagłówek 3</th> <th>Nagłówek 4</th> </center>'; // przechodzimy przez tablicę za pomocą pętli foreach foreach($file as $value) { //linie na części $exp = explode("`",$value); //rozbity tekst echo '<tr> <td align="center">'.$exp[0].'</td> <td align="center">'.$exp[1].'</td> <td align="center">'.$exp[2].'</td> <td align="center">'.$exp[3].'</td> </tr>'; Teraz zaczynam bawić się w oznaczanie wierszy, także kolejne pytania na pewno będą Dzięki za pomoc! No i stało się Kolejny problem Niestety nie potrafię wygenerować automatycznej daty w swoim formularzu. Korzystałem z: Tej strony oraz z TEGO tematu, ale niestety nie działało. Mam taki oto kod: Kod echo '<form action="" method="post"> Zapytanie 1: <input type="text" name="pole1" style="width: 200px;" /><br /> Zapytanie 2<input type="text" name="pole3" style="width: 200px;" /><br /> Zapytanie 3<input type="text" name="pole4" style="width: 200px;" /><br /> Zapytanie 4:<select name="pole2"> <option value=""></option> <option value="Odp1">Odpowiedź 1</option> <option value="Odp2">Odpowiedź 2</option> <option value="Odp3">Odpowiedź 3</option> <option value="Odp4>Odpowiedź 4</option> Data<input type="hidden" name="pole5" value=" <?php echo date(DATE_RFC822); ?>" /><br /> </select><br /> <input type="submit" value="Prześlij odpowiedzi" /> </form>'; } Data niestety nie generuje się automatycznie. Chciałbym, żeby po dodaniu odpowiedzi z formularza, automatycznie do tych właśnie odpowiedzi dodawała się data. Proszę o pomoc! Ten post edytował butcherboy 6.04.2018, 18:36:13 |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 14:45 |