Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Automatyczna tabela
Forum PHP.pl > Forum > Przedszkole
butcherboy
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
SmokAnalog
Zacznij od włączenia wyświetlania błędów. Masz tu sporo baboli, może błędy Cię nakierują.
butcherboy
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...
butcherboy
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>
viking
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.
butcherboy
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 ).
viking
Zatem popraw błąd. To jest najprostsze łączenie ciągów w PHP. Wystarczy zerknąć w dokumentację.
butcherboy
"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.
nospor
Napisales tez, ze wyskakuje ci blad. Jak mamy ci go pomoc rozwiazac jak nie raczyles nam tego bledu podac. Mamy sobie go wywrozyc?
butcherboy
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?
viking
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.
butcherboy
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 " ' ".
viking
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.
olszam
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
butcherboy
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
trueblue
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>;
viking
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)
butcherboy
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!
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-2024 Invision Power Services, Inc.