[PHP+HTML] Podsumowanie wypełnionego formularza

anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

Witam , mam takie zadanie z PHP , chyba stosunkowo proste dla kogoś kto się tym interesuje polegające na operacjach na plikach i tablicach... :

Dla skutecznego zarządzania treścią i kodem ważna jest funkcja importowania (wstawiania) zawartości innego pliku. Służy temu funkcja require(nazwaPliku).

1. Użyj ww. funkcji dla ujednolicenia np. górnego paska swoich stron. Projekt zawartości tych wstawianych dostosuj do dokładnego miejsca w strukturze strony, w którym chcesz je umieszczać.

2. [Sprawdź też wywołanie własnej funkcji napisanej w php a zadeklarowanej w osobnym pliku .inc.]

3. Przygotuj plik linki.txt, w którym umieścisz (w kolejnych wierszach) kilka wpisów w postaci: adres URL strony, tabulator, krótka nazwa strony mogąca zawierać spacje.

4. Niech przy każdym wczytaniu strony wykonywane będzie losowanie linku do wyświetlenia, czyli:
• załadowanie tego pliku do tablicy;
• wylosowanie indeksu w tej tablicy (funkcja rand(dolZakresu, goraZakresu) ).
• wygenerowanie znacznika A z odpowiednią wartością atrybutu HREF oraz odpowiednim tekstem wewnątrz znacznika.

5. [Utwórz jeszcze jeden plik, w którym wystąpią np. tytuły wiadomości wraz z ich datami. Zapoznaj się z funkcjami konwersji dat oraz sposobami sortowania, aby umożliwić wyświetlanie tej zawartości w tabeli, w kolejności według daty.]

6. Wzbogać pętlę wyświetlającą pobrane z pliku dane tak, aby ułożone były w tabeli HTML (tagi TABLE, TR, TH, TD).

Serdecznie dziękuję za pomoc .
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

No ale pokaż co już zrobiłaś. Nie oczekujesz chyba, że ktoś zrobi za ciebie pracę domową?
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

problem polega na tym że nie wiem jak załadować ten plik txt z linkami do tablicy i później by przy wczytywaniu losowało któryś z tych linków:

Kod: Zaznacz cały

4.	Niech przy każdym wczytaniu strony wykonywane będzie losowanie linku do wyświetlenia, czyli:
•	załadowanie tego pliku do tablicy;
•	wylosowanie indeksu w tej tablicy (funkcja rand(dolZakresu, goraZakresu) ).
•	wygenerowanie znacznika A z odpowiednią wartością atrybutu HREF oraz odpowiednim tekstem wewnątrz znacznika.
próbowałam coś co znalazłam w internecie:

Kod: Zaznacz cały

 <?php


$file = array('linki.txt');


?>
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

Musisz użyć odpowiedniej funkcji do wczytania tego pliku. Funkcja file() wczytuje kolejne linijki z pliku do tablicy. Teraz należy wylosować indeks tablicy. Możesz to zrobić np. tak

Kod: Zaznacz cały

$linki = file('linki.txt');
if($linki === FALSE) {
    echo 'Nie udało się odczytać pliku z linkami.';
    exit(1);
}
$ile_linkow   = count($linki);
$ktory_link   = rand(0, $ile_linkow-1);
$czesci_linka = explode("\t", $linki[ $ktory_link ]);
$adres        = $czesci_linka[0];
$opis         = $czesci_linka[1];
echo '<a href="' . $adres . '">' . $opis . '</a>';
Oczywiście nie trzeba używać tylu zmiennych, żeby wszystko przechowywać. Rozpisałem tak, abyś mogła łatwiej zrozumieć co się po kolei dzieje.
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

Super bardzo dziękuję, wrócę do domu to jeszcze będę to analizować , próbowałam jeszcze z tym ładowaniem tego pliku w ten sposób:

Kod: Zaznacz cały


<?PHP

$file_handle = fopen("linki.txt", "r");

while (!feof($file_handle)) {

$line_of_text = fgets($file_handle);
$parts = explode('\n', $line_of_text);

echo $parts[0];
}

fclose($file_handle);

?>
niestety to nie działało tak jak należy , oczywiście pominęłam ten random itd. chciałam jedynie sprawdzić czy wyciągnie z pliku txt ten link z opisem, niestety konstrukcja tej funkcji explode jest chyba niepoprawna....
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

Zamiast

Kod: Zaznacz cały

'\n'
powinno być

Kod: Zaznacz cały

'\t'
bo przecież separatorem jest tabulator. Reszta wygląda ok.
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

I jest ok teraz Dziękuje...

ale jeszcze mam pytanie, gdybyśmy chcieli pójść dalej i rozszerzyć ten skrypt :

wczytanie pliku txt , w którym będą tytuły wiadomości wraz z ich datami , i teraz by wyświetlić te dane w formie tabeli html , posortowane według dat :/
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

Początek będzie podobny. Potem trzeba będzie napisać własną funkcję porównującą.

Powiedzmy, że schemat będzie taki sam jak poprzednio tzn.

Kod: Zaznacz cały

DATA TABULATOR TEMAT
Data musi mieć odpowiedni format, np. 15-05-2011 albo 17-10-1999 17:52 (trzeba uważać, bo data może zostać potraktowana tak jak np. w USA, czyli miesiąc dzień rok). Wykorzystamy funkcję strtotime() aby skonwertować tak zapisaną datę do znacznika czasu, wg którego będziemy sortować. Potrzebna też będzie funkcja usort().

Kod: Zaznacz cały

$dane = file('drugi.txt'); //wczytujemy plik
$c=count($dane);
for($i=0;$i<$c;$i++) { //przeglądamy wszystkie linie z pliku
    $linia    = explode('\t', $dane[$i]); //dzielimy linię na datę i tytuł
    $linia[2] = strtotime($linia[0]); //konwertujemy datę na znacznik czasu
    $dane[$i] = $linia; //zapisujemy w miejsce linii tablicę (data, tytuł, znacznik czasu)
}
Funkcja usort() przyjmuje tablicę oraz funkcję porównującą dwa elementy z tablicy. Musimy najpierw napisać tą funkcję

Kod: Zaznacz cały

function porownaj($a, $b) {
//$a i $b będą elementami naszej tablicy $dane
if($a[2] == $b[2]) return 0; //jeśli daty są takie same

if($a[2] < $b[2]) 
    return -1;
else
    return 1;
}
Teraz sortujemy

Kod: Zaznacz cały

usort($dane, "porownaj");
Wyświetlamy

Kod: Zaznacz cały

for($i=0;$i<$c;$i++) { //$c obliczone wcześniej
   echo $dane[$i][0]." - ".$dane[$i][1]."<br>";
}
Pomyśl co trzeba zmienić aby wyświetlić to jako tabela html.
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

szczerze to nie mam zielonego pojęcia... Domyślam się że nie poleceniem echo... czy trzebą tą tabelę najpierw zdefiniować w kodzie html ? :/ chyba nie , bo nie wiemy ile wierszy ma mieć...

edit:

do polecenia echo mogę zastososować tagi html ? czyli : echo "<table>.... </table>" ??
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

Tak, o to właśnie chodzi. Nie potrzeba tutaj nic szczególnego.
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: anika91 »

abc666 pisze: Wyświetlamy

Kod: Zaznacz cały

for($i=0;$i<$c;$i++) { //$c obliczone wcześniej
   echo $dane[$i][0]." - ".$dane[$i][1]."<br>";
}
Pozwolę sobie odkopać ten temat ponieważ wróciła do robienia tych zadań i czegoś tutaj nie rozumiem,

instrukcja do wyświetlania

Kod: Zaznacz cały

echo $dane[$i][0]." - ".$dane[$i][1]."<br>";
zwraca tak naprawdę : DATA NAGŁÓWEK -

wygląda na to jakby gdzieś był błąd... bo echo $dane[$i][1] nie zwraca nic... data i nagłówek jest w zmiennej $dane[0] .... Jak to rozdzielić... :/ bo nie mogę wychwycić gdzie leży błąd, ta funkcja explode chyba nie działa tak jak powinna ...
abc666

[PHP+HTML] Podsumowanie wypełnionego formularza

Post autor: abc666 »

Sprawdź czy masz na pewno tabulatory jako separatory oraz czy wszystko jest ok w momencie przepisywania zmiennej $linia

Ewentualnie wklej cały skrypt jaki teraz masz, wtedy będę mógł go sprawdzić, bo teraz nie wiem jak poskładałaś te fragmenty itp.
ODPOWIEDZ