Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kalendarz eventowy
Forum PHP.pl > Forum > Przedszkole
Itep
Witam,

Co mogę zmienić w tym kalendarzu, by pokazywał on najbliższe wydarzenia od góry nie od dołu?

Adres z kodem: http://www.webdesigns1.com/php/tutorial.php
Adres z kalendarzem: http://www.pseo.info/kalendarz

Pozdrawiam
mefjiu
Problem tutaj jest taki że pobierane są dane odrazu z pliku i wyświetlane,
wydaje mi się że nie ma możliwości posegregowania tegow odwrotnej kolejności.
A wsadzenie tego wszystkiego do tablicy i nieodwróceniu danych w tablicy mija się z celem.

Proponuje przepisać ten skrypt aby wykorzystywał mysql wtedy będziesz mógł operować danymi w każdy sposób.
Itep
Nauczycielka powiedziała, że nie jest to prawda smile.gif Może jednak istnieje jakiś sposób zmiany wyświetlania się kolejnych wydarzeń?
erix
Cytat
A wsadzenie tego wszystkiego do tablicy i nieodwróceniu danych w tablicy mija się z celem.

Niestety, to chyba jedyne sensowne wyjście... Szukałem sposobu na sortowanie danych w DirectoryIterator i nie znalazłem innego rozwiązania prócz wrzucenia do tablicy i przesortowania...
Itep
Jak mogę to zrobić? sadsmiley02.gif

Taki mam kod:

Kod
<?php
$date = date("Ymd");

$handle=opendir('events');
while (($file = readdir($handle))!==false) {
  
     if ($file >= $date) {
        include("events/$file");
        }
}
closedir($handle);
?>
erix
Wrzuć nazwy plików do tablicy i ją przesortuj.

Po szczegóły zapraszam do manuala.
Itep
Mam teraz taki kod:

Kod
<html>
<head>
<title>Events</title>
</head>
<body>
<h1>Events</h1>

<table cellpadding="3">
<tr><th>Date</th><th>Event</th><th>Location</th></tr>    
<?php
$date = date("Ymd");
$tablica=array($file);
$a = sizeof($tablica);
$handle=opendir('events');
while (($file = readdir($handle

))!==false) {
     for ($b = $file; $a > $b; $b++)
{
sort($tablica);
echo "$tablica[$b]";
}
     if ($file >= $date) {
        include("events/$file");
     }
}


closedir($handle);
?>
</table>
</body>
</html>


Ale niestety nie działa...

E: Pojawia się błąd o zbyt długim czasie sortowania tablicy.
Kicok
Najpierw odczytaj wszystkie pliki do tablicy, a dopiero potem ją posortuj.

sort" title="Zobacz w manualu PHP" target="_manual, natsort" title="Zobacz w manualu PHP" target="_manual, natcasesort" title="Zobacz w manualu PHP" target="_manual, readdir" title="Zobacz w manualu PHP" target="_manual


  1. <?php
  2.  
  3. $a = sizeof($tablica);
  4. $handle=opendir('events');
  5. while (($file = readdir($handle))!==false) 
  6. {
  7. for ($b = $file; $a > $b; $b++)
  8. {
  9. sort($tablica);
  10. echo "$tablica[$b]";
  11. }
  12. // (...)
  13.  
  14. ?>

Co to w ogóle ma być? Wiesz chociaż co masz pod zmienną $a i $b?
Itep
Zrobiłem to na podstawie tego: http://www.siteql.net/web-pophp16.html
erix
Sortuj tylko raz, tamten "kurs" jest do d...

Masz tu najlepszy: http://pl.php.net/sort
Itep
Wydaje mi się, że taki kod ma sens:

Kod
   $tablica = array($file);
    $a = count($tablica);
    sort($tablica);
    for ($b=0; $b <= $a; $b++)
    echo $tablica[$b];


Jak rozumiem najpierw zliczam ilość indeksów w tabeli za pomocą funkcji count(), później sortuję za pomocą pętli for. Czy mylę sie? Mój główny problem polega na tym, jak osadzić to w tym:

Kod
<html>
<head>
<title>Kalendarz</title>
</head>
<body>
<h1>Kalendarz</h1>
<table cellpadding="3">
<tr><th>Data</th><th>Wydarzenie</th></tr>
<?php
$date = date("Ymd");
$handle=opendir('wydarzenia');
while (($file = readdir($handle))!==false) {

    if ($date >=$file) {
       include("wydarzenia/$file");
    }
}
closedir($handle);
?>
</table>
</body>
</html>


Nie wiem, w którym dokładnie miejscu mam to wpisać, by całość zadziałała.
erix
Cytat
Jak rozumiem najpierw zliczam ilość indeksów w tabeli za pomocą funkcji count(), później sortuję za pomocą pętli for.

Pierwsze się zgadza. Ale drugie nie - pętla służy tutaj do wyświetlenia elementów, sort" title="Zobacz w manualu PHP" target="_manual służy tutaj za funkcję sortującą. To jest tylko jedna linijka, odczep się tej pętli do sortowania. ;P

Cytat
Nie wiem, w którym dokładnie miejscu mam to wpisać, by całość zadziałała.

Najpierw zmodyfikuj pętlę while, aby wpisywała elementy do jakiejś tablicy, a nie od razu je include" title="Zobacz w manualu PHP" target="_manual'owała.

Sortowanie i pokazywanie (ten kawałek kodu) wrzuć po while.
Itep
Czy takie coś ma sens?

Kod
<?php
$date = date("Ymd");
$handle = opendir('events');

while (($file = readdir($handle))!==false) {

    $tablica = array($file.php);
    $a = count($tablica);
    sort($tablica);
    if ($file >= $date) {
    echo ($tablica[$file.php]);      
    }
}


closedir($handle);
?>
erix
Przeczytałeś uważnie mojego poprzedniego posta?
Itep
Z poprzedniego posta zrozumiałem, że pętla for jest niepotrzebna i wystarczy samo sort. Czy tak jest? A drugą część starałem się zrealizować tak, jak umiałem, choć zapewne nie jest ona pozbawiona błędów smile.gif

E: Wybaczcie moją głupotę, ale w PHP dopiero raczkuję.
erix
A co może oznaczać to moje zdanie?
Cytat
Sortowanie i pokazywanie (ten kawałek kodu) wrzuć po while.


Cytat
E: Wybaczcie moją głupotę, ale w PHP dopiero raczkuję.

Ale to Cię nie zwalnia z czytania ze zrozumieniem. Każdy kiedyś zaczynał, ale nikt nie będzie myślał za Ciebie, jeśli Ty tego nie będziesz robił.

Poza tym, poczytaj, jak się używa tablic.
Itep
Mam taki kod:

Kod
<html>
<head>
<title>Events</title>
</head>
<body>
<h1>Events</h1>

<table cellpadding="3">
<tr><th>Date</th><th>Event</th><th>Location</th></tr>    
<?php
$date = date("Ymd");
$handle = opendir('events');

while (($file = readdir($handle))!==false) {
    $tablica = array($file);
    $a = count($tablica);
    $x = $file;
    if ($file >= $date) {
        
    }
        
    }
    for( $x = 0; $x <= $a; $x++ ){
    sort($tablica);
    echo("$tablica[$x]");
}
    


closedir($handle);
?>
</table>
</body>
</html>


Problemy są dwa. Pierwszy polega na tym, że skrypt zwraca jedynie pierwszy z plików. Drugi zaś dotyczy tego, że skrypt jedynie wypisuje plik/pliki, a nie działa sam kalendarz. Jestem coraz bliżej rozwiązania, ale wciąż są pewne mankamenty.

Proszę o pomoc, pozdrawiam.

E: Nieaktualne.
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-2025 Invision Power Services, Inc.