Skocz do zawartości

Odczyt z pliku a rodzaj pętli


Sanchez Spinoza

Rekomendowane odpowiedzi

Mam problem z odczytem z pliku, otóż

Tak wygląda plik z którego czytam:

0|0|Tytuł|Treść
1|1|Tytuł|Treść
2|2|Tytuł|Treść
3|3|Tytuł|Treść
...
4|100|Tytuł|Treść

Gdzie pierwsza liczba oznacza ID kategorii, druga ID wpisu a trzecia i czwarta wiadomo.

I teraz chcę by pętla sprawdzała mi pozycję ID kategorii (czyli pierwszy znak w linii) i porównała go z numerem kategorii odczytanej z

$_GET['idKat']

Jeżeli numery są identyczne to wtedy echo z pozycją TREŚĆ.

Jeżeli nie to idź dalej.

Zmontowałem sobie takie coś:

<?php

 $numer = $_GET['idKat'];
 $dbKategorie = file("database/arty.php");
 $ile = count(file("database/arty.php"));

 $i = 0;
 while (($dbKategorie[$i][0] == $numer)) and ($i < $ile;)) {

   $katRecord = explode("|", $dbKategorie[$numer]);
   $artContent = $katRecord[3];

	 echo '<p>' . $artContent . '</p>';
	 $i++;

 }

?>

Ale jest tu błąd logiczny z AND bo pętla while tego nie czyta.

Jaką pętlę tu użyć?

Profesjonalne publikacje Content Marketingowe - zamów online na BlackHood.pl 

Szeroki wybór Łożysk samochodowych

Polecam również Praca Bielsko

Odnośnik do komentarza
Udostępnij na innych stronach

Po co dwa raz ta sama operacja

$dbKategorie = file("database/arty.php");

$ile = count(file("database/arty.php"));

!

zastosuj foreach

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

<?php

 $numer = $_GET['idKat'];
 $dbKategorie = file("database/arty.php");
 $ile = count(file("database/arty.php"));

 $i = 0;
 foreach ($dbKategorie as $wpis){

   $katRecord = explode("|", $wpis);
   if ($katRecord[0] == $numer) {
   $artContent = $katRecord[3];
	 echo '<p>' . $artContent . '</p>';
 }

 }

?>

Odnośnik do komentarza
Udostępnij na innych stronach

Takie programowanie jest ewidentnie błędne, bo dwa razy wczytujecie do zmiennej ten sam zarób, co przy dużych plikach niepotrzebnie zabiera cenną pamięć poza tym jest kosztowe!

ZLE !

$dbKategorie = file("database/arty.php");

$ile = count(file("database/arty.php"));

DOBRZE:

$dbKategorie = file("database/arty.php");

$ile = count($dbKategorie);

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Nie tylko ona ;)

Zostawiłem z lenistwa.

<?php
 $numer = $_GET['idKat'];
 $dbKategorie = file("database/arty.php");

 foreach ($dbKategorie as $wpis){
   $katRecord = explode("|", $wpis);
   if ($katRecord[0] == $numer) {
	 echo '<p>' . $katRecord[3] . '</p>';
 }

}
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za poprawki.

Mam jeszcze jedną sprawę, otóż czy możecie mi dorobić (że tak chamsko poproszę a nie pomyślę sam) jeszcze aby ta pętla wypluwała wyniki po 10 na jedną stronę?

Tak jak z MySQL LIMIT.

Potraktujcie to jako zlecenie bo czas mnie nagli, dla tego kto to napisze najsensowniej zamieszczę link na 30 dni na stronie www.oferujemyprace.pl

Dzięki.

Profesjonalne publikacje Content Marketingowe - zamów online na BlackHood.pl 

Szeroki wybór Łożysk samochodowych

Polecam również Praca Bielsko

Odnośnik do komentarza
Udostępnij na innych stronach

A nie możesz zaimportować tego pliku do mysql'a będzie zgrabniej, łatwiej, i przy dużym pliku sporo szybciej pewnie.

A jak nie to masz:

<?php
 $numer = $_GET['idKat'];
 $dbKategorie = file("database/arty.php");
 $limit=10;
$c=0;
 foreach ($dbKategorie as $wpis){
   $katRecord = explode("|", $wpis);
   if ($katRecord[0] == $numer) {
	 echo '<p>' . $katRecord[3] . '</p>';
	$c++;
	 if( $c > $limit )break;
 }

}
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Chodziło mi o coś takiego by po 10 wynikach pojawił się napis Dalej >>> i kolejne 10 wyników, itd. itd. Aż skończy się plik.

Da się takie coś w tabelach zrobić?

Cała idea jest tak by nie robić z tego bazy MySQL.

Profesjonalne publikacje Content Marketingowe - zamów online na BlackHood.pl 

Szeroki wybór Łożysk samochodowych

Polecam również Praca Bielsko

Odnośnik do komentarza
Udostępnij na innych stronach

Pliki testowe jako bazy danych używane były w XX wieku - obecnie to nieuzasadniony anachronizm.

Jak potrzebujesz bazy danych bez "bazy danych" zastosuj bazę opartą o SQLite która wchodzi w skład PHP 5 i jest jako jeden plik.

Jeśli chcesz zrobić stronicowanie dla danych pobranych z pliku tekstowego funkcja file() czyli tabliocy danych powinieneś zastosować pętle for() odpowiednio sterując pierwszym parametrem wywołania tej pętli.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zaskoczyliście mnie z tym SQlite. Nie słyszałem o tym. Miałem przerwę 2 lata z robieniem stron.

Wygląda naprawdę ciekawie. Tylko że nie mam o SQLite pojęcia. Muszę kupić odpowiednią literaturę i całkiem możliwe że zamienię pliki na tą właśnie bazę SQLite.

Powiedzcie mi tak na szybko, podobne są zapytania jak w MySQLu?

Jakąś literaturę możecie polecić?

(Mion a tak na szybko jakbyś trzasnął mi skrypt ten z pętlą for hm? :] umieszczę twój link na 2 stronach www.oferujemyprace.pl i www.rufus.pl na 30 dni. Nie musi to być stronicowanie. Wystarczy takie coś żeby wypluło 10 wyników i potem napis DALEJ > i kolejne 10 i tak do końca pliku.)

Profesjonalne publikacje Content Marketingowe - zamów online na BlackHood.pl 

Szeroki wybór Łożysk samochodowych

Polecam również Praca Bielsko

Odnośnik do komentarza
Udostępnij na innych stronach

SQLite obsługuje prawie całą składnie języka SQL i nawet tranzakcie :spam:

sqlite php

Na szybko to można 100kę walnąć, a nie pisać kody !

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

To nie musi by szybko. Może być na dziś wieczór :jezyk1:

Chodzi mi żeby to było dobrze napisane. Ja jak pewnie tam jakieś niepotrzebne zagnieżdżenia porobię.

Profesjonalne publikacje Content Marketingowe - zamów online na BlackHood.pl 

Szeroki wybór Łożysk samochodowych

Polecam również Praca Bielsko

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności