Drukowana wersja tematu
Forum PHP.pl _ Przedszkole _ [PHP] Automatyczna tabela
Napisany przez: butcherboy 22.03.2018, 20:38:05
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ę
Napisany przez: SmokAnalog 22.03.2018, 21:39:08
Zacznij od włączenia wyświetlania błędów. Masz tu sporo baboli, może błędy Cię nakierują.
Napisany przez: butcherboy 23.03.2018, 18:09:52
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...
Napisany przez: SmokAnalog 23.03.2018, 19:03:07
http://forum.php.pl/PHPJak_domyslnie_wlaczyc_wyswietlanie_bledow_w_PHP_t199639.html
Napisany przez: butcherboy 23.03.2018, 20:39:43
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>
Napisany przez: viking 23.03.2018, 20:48:48
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.
Napisany przez: butcherboy 23.03.2018, 21:04:51
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 ).
Napisany przez: viking 23.03.2018, 21:27:26
Zatem popraw błąd. To jest najprostsze łączenie ciągów w PHP. Wystarczy zerknąć w dokumentację.
Napisany przez: butcherboy 26.03.2018, 08:50:26
"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.
Napisany przez: nospor 26.03.2018, 09:10:38
Napisales tez, ze wyskakuje ci blad. Jak mamy ci go pomoc rozwiazac jak nie raczyles nam tego bledu podac. Mamy sobie go wywrozyc?
Napisany przez: butcherboy 27.03.2018, 05:27:48
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?
Napisany przez: viking 27.03.2018, 05:51:29
Zastosuj się do przypiętego tematu http://forum.php.pl/Jak_poprawnie_zadac_pytanie_oraz_przygotowac_srodowisko_pracy_t146215.html 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.
Napisany przez: butcherboy 27.03.2018, 06:45:32
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 " ' ".
Napisany przez: viking 27.03.2018, 07:12:18
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.
Napisany przez: olszam 27.03.2018, 07:21:33
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
Napisany przez: butcherboy 27.03.2018, 09:29:11
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
Napisany przez: trueblue 27.03.2018, 09:30:57
Porównaj swoje dwa fragmenty kodu.
W jednym łączyłeś zmienne z tekstem tak:
http://www.php.net/echo $exp[0]." ".$exp[1]." ".$exp[2]." ".$exp[3]."<hr/>";
a w drugim tak:
http://www.php.net/echo <tr><td>$exp[0].</td><td>.$exp[1].</td><td>.$exp[2].</td>.<td>$exp[3].</td></tr>;
Napisany przez: viking 27.03.2018, 10:18:24
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:
http://www.php.net/sprintf('<tr><td>%s<td></tr>', $x)
Napisany przez: butcherboy 6.04.2018, 18:35:21
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: http://pl.php.net/manual/pl/function.date.php oraz z http://forum.php.pl/index.php?showtopic=93991 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!
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)