Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przydzielanie tekstów do podstron serwisu na podstawie id rekordu, Jak sprawić, żeby było unikalnie ?
--Greg--
post
Post #1





Goście







Załóżmy, że mam 2.000.000 rekordów w bazie (podstrony serwisu) i wszędzie chcę wstawić dodatkowe teksty.
Mam 10 różnych tekstów, na każdej stronie ma być 5 tekstów (czasem może być mniej).
Chodzi o to, żeby teksty na każdej stronie były poukładane w innej kolejności (wiadomo, że czasem będą powtórzenia, ale to inna kwestia i powinna pomóc synonimizacja)
Po prostu ma być jak najbardziej unikalnie a teksty raz przypisane do id nie mogą się już zmieniać.

Jak to zrobić ?

Mój pomysł jest taki, że skoro mam id w przedziale (1...20000000) to mogę tekstom nadać numery i dla załóżmy id
o numerze 12345 pojawi się kolejno pierwsze pięć tekstów i analogicznie z innymi rekordami.

Problem pojawia się gdy id nie jest 5 cyfrowe, ale jeśli jest mniejsze to powiedzmy że tekstów będzie mniej, jeśli większe to odcinam nadmiar cyfr, żeby zawsze było 5 i po
sprawie, gorzej jak id ma postać typu 11211, wtedy by wychodziło, że 4 razy wyświetlam tekst numer 1 co jest bez sensu.

Jak to obejść najprościej i osiągnąć pożądany efekt ?
Może ktoś już robił coś w tym stylu i zna lepsze ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Skoro masz X tekstów, to zrób najprostsza możliwą rzecz...
1. Utwórz tabelę, ktora ma jako pola: id_podstrony(int) i id_tekstow(varchar)
2. Przy wchodzeniu na podstronę sprawdzaj czy ma ona już w tabeli swój rekord (można od razu JOINować przy pobieraniu by było szybciej). Jeśli są to odtwórz układ tekstów z podanych id poprzez explode i poskładaj teraz te teksty, synonimizuj je i co tam chcesz zrób.
3. Jeśli nie ma, to utwórz tablicę o elementach o numerach od $a do $b, $zbior = range($a, $b); i użyj na takim zbiorze $wylosowane = array_rand($zbiór, $ile_elementow_wylosowanych); Jeśli chcesz to możesz jeszcze dla zabawy to co Ci wylosowało trzasnąć shuffle. Na koniec robisz implode i zapis do bazy.

osobna tabela jest czesto lepsza z racji separacji danych od siebie. Jedna duża tabela jest często wolniejsza w działaniu niż kilka mniejszych. Ale by to wyjaśnić to już trzeba by tłumaczyć działanie silnika, sposób organizacji danych i dostępu do nich. Nie sądzę by akurat taka wiedza na tym etapie nauki była Ci szczególnie potrzebna.
Powód edycji: [thek]: Małe wyjaśnienie
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 09:42