Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Automatyczna tabela, Automatyczne generowanie tabeli z pliku txt
butcherboy
post 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 sad.gif

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ę smile.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 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ą.
Go to the top of the page
+Quote Post
butcherboy
post 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...
Go to the top of the page
+Quote Post
SmokAnalog
post 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%)
-----


Temat: PHPJak domyslnie wlaczyc wyswietlanie bledow w PHP
Go to the top of the page
+Quote Post
butcherboy
post 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. sciana.gif

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>
Go to the top of the page
+Quote Post
viking
post 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.


--------------------
Go to the top of the page
+Quote Post
butcherboy
post 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 ).
Go to the top of the page
+Quote Post
viking
post 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ę.


--------------------
Go to the top of the page
+Quote Post
butcherboy
post 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.
Go to the top of the page
+Quote Post
nospor
post 26.03.2018, 09:10:38
Post #10





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
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

Go to the top of the page
+Quote Post
butcherboy
post 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?
Go to the top of the page
+Quote Post
viking
post 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.


--------------------
Go to the top of the page
+Quote Post
butcherboy
post 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 " ' ".
Go to the top of the page
+Quote Post
viking
post 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.


--------------------
Go to the top of the page
+Quote Post
olszam
post 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
Go to the top of the page
+Quote Post
butcherboy
post 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 sad.gif
Go to the top of the page
+Quote Post
trueblue
post 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:
  1. echo $exp[0]." ".$exp[1]." ".$exp[2]." ".$exp[3]."<hr/>";

a w drugim tak:
  1. echo <tr><td>$exp[0].</td><td>.$exp[1].</td><td>.$exp[2].</td>.<td>$exp[3].</td></tr>;


--------------------
Go to the top of the page
+Quote Post
viking
post 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:
  1. sprintf('<tr><td>%s<td></tr>', $x)


--------------------
Go to the top of the page
+Quote Post
butcherboy
post 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ą tongue.gif

Dzięki za pomoc!

No i stało się smile.gif Kolejny problem sad.gif

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
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:52