Odczyt z pliku a konkretne linie

0

Mam pewnien plik a w nim:

0---tytul
Imie nazwisko---data ur
imie nazwisko---data ur
imie nawisko---data ur
0---tytul 2
imie nazwisko---data ur
imie nazwisko---data ur
0---tytul 3
imie nazwisko---data ur
0---tytul 4
itd

Zrobilem przykład który ma kolorowac na bold same tytuly jesli pierwszy indeks jest rowny 0 ale nie dziala ten pierwszy. Zawsze pokazuje sie

0 tytul

i nie pogrubione a ponizej juz jest ok. Tylko z tym pierwszym cos jest nie tak.

	
														  $foo1 = file('plik.txt');
															
															
														     		for($i=0;$i<count($foo1);$i++){
																	
																												
																	$exp = explode("---", $foo1[$i]);
																		
																		if(chop($exp[0]) == '0')
																		{
																				 print "<p><b>$exp[1]</b></p><br />";												
																	  	}
																		else{
																		
																		      print "<p>" . $exp[0] . ' ' . $exp[1]. "</p><br />";
																																	
																	  	}
																	   
																	
																	}

Pierwsza linia nie brana pod uwagę bo wykonuję się ona w else a w indeksie 0 jest 'zero'

Ogolnie ma sie pokazywac boldowany tytul jesli w indeksie 0 jest 'zero' a jesli nie to imie i nazwisko i data ur

0

Już wiem co jest nie tak. Zawartośc pliku była kopiowana i częsciowo treści były usuwane co mogło spowodować błędy. Muszę to przepisać odrecznie.

1

A nie chciałbyś zastosować innej struktury pliku? Json, xml, ini, yaml? Są do tego gotowe narzędzia i rozwiązania.

0

@wesoly_pogrzeb też robiłem kiedyś na txt, ale zrozumiałem, że to jest bardzo niewygodne rozwiązanie, polecam Ci sqlite3. Baza w jednym pliku, db browser,

0

Możesz posłuchać @CodeRZ i postawić sobie bazę sqlLite, ale to moim zdaniem jest wyciąganie armaty na komara. Proponuję Ci, to co zaproponowałem w poprzednim poście, czyli skorzystanie z gotowej struktury, wymieniłem najpopularniejsze. W php zrobisz to jedną linijką, i będzie to lepsze, szybsze i bardziej niezawodne niż to Twoje wymyślanie koła na nowo.

$dane = [
    ['name' => 'John', 'surname' => 'Doe',   'birthdate' => date("Y/m/d h:i:s")],
    ['name' => 'Jane', 'surname' => 'Smith', 'birthdate' => date("Y/m/d h:i:s")],
];

file_put_contents('moj_plik.json', json_encode($dane));

plik wygląda tak:

[{"name":"Jhon","surname":"Doe","birthdate":"2018\/08\/24 05:27:14"},{"name":"Jane","surname":"Smith","birthdate":"2018\/08\/24 05:27:14"}]

potem żeby odczytać:

$dane = json_decode(file_get_contents('moj_plik.json'), true);

$osoba1 = $dane[0];
$osoba2 = $dane[1];
echo 'Osoba to ' . $osoba1['name'] . ' ' . $osoba1['surname'] . ' urodzona ' . $osoba1['birthdate'];
0

@TomRiddle: Lub...

$dane = json_decode(file_get_contents('moj_plik.json'), true);

foreach($dane as $osoba) {
echo 'Imię: ' . $osoba['name'] . '<br>Nazwisko: ' . $osoba['surname'] . ' <br>Data urodzenia: ' . $osoba['birthdate'].'<hr>';
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1