Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam! mam taki skrypt wyciągajacy dane o podanej lini!
są dwa pola - Czyli podaje date od i date do. Tylko na ekran mi wyrzuca tylko te dwie linie a chodzi o to żeby wyswietlał mi dane od podanej daty do podanej daty.
czyli przypuszczalnie podam mu w jednym polu 2005.11.28 a w drugim 2006.01.28 i wyswietli mi dane od daty do daty
plik wyglada tak:
2005.11.28 534.00
2005.12.28 334.00
2006.01.28 234.00
2006.02.28 211.00
czyli na ekran w tym przypadku wyrzuci mi:
2005.11.28 534.00
2005.12.28 334.00
2006.01.28 234.00
skrypt wygląda tak:
<form action='index.php' method='post'>
<input type="text" name="f0" style="width: 9cm">
<br>
<input type="text" name="f1" style="width: 9cm">
<input type="submit" value="PODAJ DATĘ OD">
<br>
<br>
<?
if(!$_POST["f0"]) exit(0);
if(!$_POST["f1"]) exit(0);
$litera1 = $_POST["f0"];
$litera2 = $_POST["f1"];
$fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r");
while (!feof ($fd)) {
$linia = fgets($fd, 95);
if(strpos($linia, $litera1) !== false)
echo $linia."<br>";
}
fclose($fd);
$fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r");
while (!feof ($fd)) {
$linia1 = fgets($fd, 95);
if(strpos($linia1, $litera2) !== false)
echo $linia1."<br>";
}
fclose($fd);
?>
Offline
Nie testowane:
list( $od['data'], $od['cos'] ) = explode( ' ', $_POST['f0'] ); list( $od['rok'], $od['miesiac'], $od['dzien'] ) = explode( '.', $od['data'] ); $od['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $od['miesiac'], $od['dzien'], $od['rok'] ); list( $do['data'], $do['cos'] ) = explode( ' ', $_POST['f1'] ); list( $do['rok'], $do['miesiac'], $do['dzien'] ) = explode( '.', $do['data'] ); $do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] ); $fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r"); while (!feof ($fd)) { $linia = fgets($fd, 95); list( $data, $cos ) = explode( ' ', $linia ); list( $rok, $miesiac, $dzien ) = explode( '.', $data ); $czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ); if ( ( $od['czas'] <= $czas ) && ( $czas <= $do['czas'] ) ) echo $linia."<br>"; }
Offline
Dziwna sprawa bo otrzymuje z góry na dół cos takiego :
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/lista/harm.php on line 30
aha a przed skryptem dodałem kod do wpisywania daty czyli:
<form action='harm.php' method='post'>
<input type="text" name="f0" style="width: 9cm">
<br>
<input type="text" name="f1" style="width: 9cm">
<input type="submit" value="PODAJ DATĘ OD">
był bys w stanie mi pomóc??
Offline
Aha a plik dokładnie wygląda tak:
| 1 | 2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
| 2 | 2005.12.28 r | 542.00 | 87.20 | 629.20 | 11 924.00 |
| 3 | 2006.01.28 So | 542.00 | 85.95 | 627.95 | 11 382.00 |
| 4 | 2006.02.28 Wt | 542.00 | 82.17 | 624.17 | 10 840.00 |
| 5 | 2006.03.28 Wt | 542.00 | 17.67 | 559.67 | 10 298.00 |
| 6 | 2006.04.28 Pi | 542.00 | 19.56 | 561.56 | 9 756.00 |
| 7 | 2006.05.28 Ni | 542.00 | 18.93 | 560.93 | 9 214.00 |
Offline
hmm sprawdziłem to i jeśli plik wygląda tak jak napisałem wcześniej to wszystko jest ok! wyswietla się idealnie. A gdy plik wygląda tak jak wyżej to da sie coś z tym zrobić??
Offline
Nic dziwnego, że nie działało. Dla innej struktury coś takiego:
list( $od['data'], $od['cos'] ) = explode( ' ', $_POST['f0'] ); list( $od['rok'], $od['miesiac'], $od['dzien'] ) = explode( '.', $od['data'] ); $od['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $od['miesiac'], $od['dzien'], $od['rok'] ); list( $do['data'], $do['cos'] ) = explode( ' ', $_POST['f1'] ); list( $do['rok'], $do['miesiac'], $do['dzien'] ) = explode( '.', $do['data'] ); $do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] ); $fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r"); while (!feof ($fd)) { $linia = fgets($fd, 95); list( , $data, , , , ) = explode( '|', $linia ); list( $rok, $miesiac, $dzien ) = explode( '.', $data ); list( $dzien, ) = explode( ' ', $dzien ); $czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ); if ( ( $od['czas'] <= $czas ) && ( $czas <= $do['czas'] ) ) echo $linia."<br>"; }
Offline
No tak jest ok!! tylko na wstepie wyskakuje mi cos takiego:
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/pliki/harm.php on line 17
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/pliki/harm.php on line 21
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/pliki/harm.php on line 29
|2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/pliki/harm.php on line 29
|2005.12.28 śr | 542.00 | 87.20 | 629.20 | 11 924.00 |
itd w dół.
ale jak wpisze sobie daty to jest wporządku wyswietla mi od daty do daty czyli ok tylko czemu te komunikaty wyskakuja dodatkowo??
Offline
Moim zdaniem to przez brak spacji w niektórych liniach, np:
|2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
^
explode działa po spacjach, nie ma spacji jako rok leci |2005.
Offline
no plik wygląda tak jak mówiłem:
| 1 | 2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
| 2 | 2005.12.28 ˜r | 542.00 | 87.20 | 629.20 | 11 924.00 |
| 3 | 2006.01.28 So | 542.00 | 85.95 | 627.95 | 11 382.00 |
| 4 | 2006.02.28 Wt | 542.00 | 82.17 | 624.17 | 10 840.00 |
| 5 | 2006.03.28 Wt | 542.00 | 17.67 | 559.67 | 10 298.00 |
| 6 | 2006.04.28 Pi | 542.00 | 19.56 | 561.56 | 9 756.00 |
| 7 | 2006.05.28 Ni | 542.00 | 18.93 | 560.93 | 9 214.00 |
i wprawdzie z taka zawartością pliku dostaje po odpaleniu strony:
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 17
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 21
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 1 | 2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 2 | 2005.12.28 ?r | 542.00 | 87.20 | 629.20 | 11 924.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 3 | 2006.01.28 So | 542.00 | 85.95 | 627.95 | 11 382.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 4 | 2006.02.28 Wt | 542.00 | 82.17 | 624.17 | 10 840.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 5 | 2006.03.28 Wt | 542.00 | 17.67 | 559.67 | 10 298.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 6 | 2006.04.28 Pi | 542.00 | 19.56 | 561.56 | 9 756.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 7 | 2006.05.28 Ni | 542.00 | 18.93 | 560.93 | 9 214.00 |
a po wpisaniu dat:
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 1 | 2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 2 | 2005.12.28 ?r | 542.00 | 87.20 | 629.20 | 11 924.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 3 | 2006.01.28 So | 542.00 | 85.95 | 627.95 | 11 382.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 4 | 2006.02.28 Wt | 542.00 | 82.17 | 624.17 | 10 840.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 5 | 2006.03.28 Wt | 542.00 | 17.67 | 559.67 | 10 298.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 6 | 2006.04.28 Pi | 542.00 | 19.56 | 561.56 | 9 756.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 29
| 7 | 2006.05.28 Ni | 542.00 | 18.93 | 560.93 | 9 214.00 |
także już niewiem co może byc nie tak! wczesniej próbowałem wyrzucic ten początek ale jednak plik się tak generuje także niemoge go zmienić
Offline
list( $od['data'], $od['cos'] ) = explode( ' ', $_POST['f0'] ); list( $od['rok'], $od['miesiac'], $od['dzien'] ) = explode( '.', $od['data'] ); $od['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $od['miesiac'], $od['dzien'], $od['rok'] ); list( $do['data'], $do['cos'] ) = explode( ' ', $_POST['f1'] ); list( $do['rok'], $do['miesiac'], $do['dzien'] ) = explode( '.', $do['data'] ); $do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] ); $fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r"); while (!feof ($fd)) { $linia = fgets($fd, 95); list( , , $data, , , , , ) = explode( '|', $linia ); list( $rok, $miesiac, $dzien ) = explode( '.', $data ); list( $dzien, , ) = explode( ' ', $dzien ); $czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ); if ( ( $od['czas'] <= $czas ) && ( $czas <= $do['czas'] ) ) echo $linia."<br>"; }
PS. Numer wiersza z błędem nic nie mówi, jeśli nie wie się jaka to linia. Następnym razem wskaż, gdzie PHP się buntuje.
Offline
No teraz smiga elegancko!:)
tylko prócz wyświetlonych danych pokazuje dalej ten błąd:
Warning: mktime() expects parameter 6 to be long, string given in /var/www/apache2-default/harmonogram/harm.php on line 17
w lini 17 i 29 a w tych liniach mam wpisy:
$do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] ));
i
$czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ));
trzeba było nawias domknąć jeden to go domknęłem! ale dalej się pokazuje.
Offline
Propozycja:
na moje okno jest cos nie tak ze zmienna $do['rok'] , sprawdz jaką ona przymuje wartosc...
Offline
No niebardzo potrafie znaleść błąd jeśli chodzi o zmienną $do['rok']
Offline
Tutaj jest cały, działający skrypt dla ciebie. Co było nie tak? Oprócz brakujących nawiasów (czego nie zauważyłem), był problem z funkcjami feof() oraz fgets(). Otóż funkcja feof() dla plików tekstowych zwraca TRUE, jeśli poprzedni odczyt fgets() zakończył się niepowodzeniem. Nie rozwlekając tematu, pętla wykonywała jeden nadmiarowy przebieg, stąd ten błąd na końcu.
<form action='index.php' method='post'> <input type="text" name="f0" style="width: 9cm"> <br> <input type="text" name="f1" style="width: 9cm"> <input type="submit" value="PODAJ DAT? OD"> <br> <br> <? if(!$_POST["f0"]) exit(0); if(!$_POST["f1"]) exit(0); $litera1 = $_POST["f0"]; $litera2 = $_POST["f1"]; list( $od['data'], $od['cos'] ) = explode( ' ', $_POST['f0'] ); list( $od['rok'], $od['miesiac'], $od['dzien'] ) = explode( '.', $od['data'] ); $od['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $od['miesiac'], $od['dzien'], $od['rok'] )); list( $do['data'], $do['cos'] ) = explode( ' ', $_POST['f1'] ); list( $do['rok'], $do['miesiac'], $do['dzien'] ) = explode( '.', $do['data'] ); $do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] )); $fd = fopen("plik.txt", "r"); while (!feof ($fd)) { $linia = fgets($fd, 95); if ( feof( $fd ) ) break; list( , , $data, , , , , ) = explode( '|', $linia ); list( $rok, $miesiac, $dzien ) = explode( '.', $data ); list( $dzien, , ) = explode( ' ', $dzien ); $czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok )); echo $miesiac.' '.$dzien.' '.gettype($dzien).' '.$rok.'<br />'; if ( ( $od['czas'] <= $czas ) && ( $czas <= $do['czas'] ) ) echo $linia."<br>"; }
Offline
Rozumie:) tylko niewiem czy u mnie jest cos nie tak ale sprawa znów wygląda tak:
po odpaleniu strony jest wszystko ok! wpisuje daty i otrzymuje coś takiego:
11 28 string 2005
| 1 | 2005.11.28 Po | 534.00 | 78.71 | 612.71 | 12 466.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
12 28 string 2005
| 2 | 2005.12.28 �r | 542.00 | 87.20 | 629.20 | 11 924.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
01 28 string 2006
| 3 | 2006.01.28 So | 542.00 | 85.95 | 627.95 | 11 382.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
02 28 string 2006
| 4 | 2006.02.28 Wt | 542.00 | 82.17 | 624.17 | 10 840.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
03 28 string 2006
| 5 | 2006.03.28 Wt | 542.00 | 17.67 | 559.67 | 10 298.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
04 28 string 2006
| 6 | 2006.04.28 Pi | 542.00 | 19.56 | 561.56 | 9 756.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
05 28 string 2006
| 7 | 2006.05.28 Ni | 542.00 | 18.93 | 560.93 | 9 214.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
06 28 string 2006
| 8 | 2006.06.28 �r | 542.00 | 16.03 | 558.03 | 8 672.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
07 28 string 2006
| 9 | 2006.07.28 Pi | 542.00 | 15.15 | 557.15 | 8 130.00 |
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
08 28 string 2006
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
09 28 string 2006
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
string
10 28 string 2006
i tak dalej w dół z tego co widać wyświetla te linie dobrze bo od daty do daty którą podałem ale nierozumie tego błędu z mktime
Offline
aha jeśli chodzi o linie 33 to jest znów ta sama sprawa:
$czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ));
Offline
Linię:
echo $miesiac.' '.$dzien.' '.gettype($dzien).' '.$rok.'<br />';
możesz wyrzucić, to była tylko kontrola. Widać dzięki temu, że w $dzien jest "28", czyli nie powinno byc problemu. Sprawdzałem skrypt, działa dobrze, nie wiem skąd u Ciebie te błędy.
Offline
No problem dalej się pojawia! dziwna sprawa bo wszystko gra a niepotrzebnie wyswietla się ten komunikat!. Moze jest jakis skrypt dzieki któremu niewyswietli sie ten błąd czyli mimo to ze będzie niebędzie sie wyswietlała informacja o ni w oknie przeglądarki
Offline
Dodaj na początku linie
error_reporting( E_ALL ^E_WARNING );
Offline
a jak Ci sie nie chce bawic z usuwaniem bledow to je zamaskoj za pomoca @ ;p
Offline
powiedz mi tylko jak to zamaskować za pomocą @???
chyba że ma ktoś pomysł jak to rowiązać
Warning: mktime() expects parameter 5 to be long, string given in /var/www/apache2-default/harmonogram/index.php on line 33
wydaje mi się że kod jest dobry problem będzie w czymś innym niewiem może musze zoribć jakiegoś update??
Offline
poprostu dajes @ tam gdzie masz blad, czyli jak masz w linii 36 to jedziesz do linii 36 i wstawiasz @ na poczatku linii i tyle :)
Offline
Nooooooo niemogee jest spoko!! @ pomogła i wszystko jest ok!!! dziekówka wielka:)
Offline
ja zawsze powtarzam: najleprze sa najprosztrze rozwiazania ;)
Offline
Jeszcze tylko taka sprawa! te linie które mi wyświetla od podanej daty do podanej daty chciałbym prócz wyswietlenia zapisać do pliku. Zrobiłem coś takiego:
if(!$_POST["f0"]) exit(0);
if(!$_POST["f1"]) exit(0);
$litera1 = $_POST["f0"];
$litera2 = $_POST["f1"];
list( $od['data'], $od['cos'] ) = explode( ' ', $_POST['f0'] );
list( $od['rok'], $od['miesiac'], $od['dzien'] ) = explode( '.', $od['data'] );
$od['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $od['miesiac'], $od['dzien'], $od['rok'] ));
list( $do['data'], $do['cos'] ) = explode( ' ', $_POST['f1'] );
list( $do['rok'], $do['miesiac'], $do['dzien'] ) = explode( '.', $do['data'] );
$do['czas'] = date( 'Y.m.d', mktime( 0, 0, 0, $do['miesiac'], $do['dzien'], $do['rok'] ));
$fd = fopen("/var/www/apache2-default/pliki/plik.txt", "r");
while (!feof ($fd)) {
$linia = fgets($fd, 95);
if ( feof( $fd ) ) break;
list( , , $data, , , , , ) = explode( '|', $linia );
list( $rok, $miesiac, $dzien ) = explode( '.', $data );
list( $dzien, , ) = explode( ' ', $dzien );
@ $czas = date( 'Y.m.d', mktime( 0, 0, 0, $miesiac, $dzien, $rok ));
if ( ( $od['czas'] <= $czas ) && ( $czas <= $do['czas'] ) )
$file = "dane.txt";
$fp = fopen($file, "a");
fwrite($fp, "$linia");
fclose($fp);
}
i ok zapisuje mi do pliku ale wszystkie linie a nie tylko te które podaje. Jest mi ktoś w stanie wytłumaczyc dlaczego tak sie dzieje??/ przecież zmienna $linia wyswietla dokładnie te linie które podaje za pomocą dat a do pliku zapisuje mi wszystkie.
Offline