Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]problem z losowaniem słów
imagizer
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2013

Ostrzeżenie: (0%)
-----


Witajcie, stworzyłem skrypt dodawania tagów do newsa, aczkolwiek mam duzy problem z mixowaniem ich,
próbowałem na wiele sposobów i żaden nie działa.
w tabeli tagi mam rekord z tagami po przecinku np: tag1,tag2,tag3
rozdzieliłem je za pomocą explode do tablicy, i dodałem link.

następnie próbowałem rozdzielać arrayem z funkcją shuffle i nic:/
Chce aby z x ilości tagów wybrało mi 4 i wyświetliło je losowo np: tag3 tag1 tag2

Miło by było aby ktoś doradził mi jak rozwiązać ten problem.

  1.  
  2. // Wyciąganie Częstotliwości z grupy
  3. $zapytanie43=pytanie_mysql("SELECT * FROM tagi WHERE tagID='$nazwagrupy'");
  4. while($rowio=mysql_fetch_array($zapytanie43)){
  5. $tagis=$rowio['tag'];
  6. }
  7.  
  8. // wykorzystanie funkcji explode, wg przecinka
  9. $tags = explode (",", $tagis);
  10. $tagi='
  11. <a href="tag,'.$tags[0].'.html"><span class="tagi">'.$tags[0].'</span></a>
  12. <a href="tag,'.$tags[1].'.html"><span class="tagi">'.$tags[1].'</span></a>
  13. <a href="tag,'.$tags[2].'.html"><span class="tagi">'.$tags[2].'</span></a>
  14. <a href="tag,'.$tags[3].'.html"><span class="tagi">'.$tags[3].'</span></a>
  15. ';
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Pora zmienić układ danych.
Go to the top of the page
+Quote Post
imagizer
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2013

Ostrzeżenie: (0%)
-----


Próbowałem wielu sposobów żaden nie działa;/
typu:
  1. function losowanie(){
  2. $los = array($tags[0],$tags[1],$tags[2],$tags[3]);
  3. shuffle($los);
  4.  
  5. return implode(' | ', $los);
  6. }
  7.  
  8. echo losowanie();
Go to the top of the page
+Quote Post
RiE
post
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 45
Dołączył: 5.05.2010

Ostrzeżenie: (0%)
-----


Co to znaczy że shuffle() nie zadziałało?

1. shuffle()
  1. $tags = explode (",", $tagis);
  2. shuffle($tags);
  3. $tagi='
  4. <a href="tag,'.$tags[0].'.html"><span class="tagi">'.$tags[0].'</span></a>
  5. <a href="tag,'.$tags[1].'.html"><span class="tagi">'.$tags[1].'</span></a>
  6. <a href="tag,'.$tags[2].'.html"><span class="tagi">'.$tags[2].'</span></a>
  7. <a href="tag,'.$tags[3].'.html"><span class="tagi">'.$tags[3].'</span></a>


W starszych wersjach PHP, losowość z shuffle() była dość prymitywna i dostawało się prawie nie zmienioną tablice, ale obecnie fukcja ta działa bardzo dobrze.

2. array_rand()

  1. $tags = explode (",", $tagis);
  2. $random = array_rand($tags, 4);
  3. $tagi='
  4. <a href="tag,'.$tags[$random[0]].'.html"><span class="tagi">'.$tags[$random[0]].'</span></a>
  5. <a href="tag,'.$tags[$random[1]].'.html"><span class="tagi">'.$tags[$random[1]].'</span></a>
  6. <a href="tag,'.$tags[$random[2]].'.html"><span class="tagi">'.$tags[$random[2]].'</span></a>
  7. <a href="tag,'.$tags[$random[3]].'.html"><span class="tagi">'.$tags[$random[3]].'</span></a>


Weź jeszcze pod uwagę że w przypadku kiedy masz małą ilość tagów, np. 4 to może się zdarzyć tak, że akurat wszystkie będą w tej samej kolejności.

Ten post edytował RiE 4.02.2014, 10:42:37
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez w funkcji losowanie() tablica $tags nie jest widoczna.... poczytaj o zasiegu zmiennych lub przekazuj $tags jako parametr do funkcji

zas dla mmmmmm zapewne chodzilo, ze musisz poprawic strukture bazy na prawidlowa


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
imagizer
post
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2013

Ostrzeżenie: (0%)
-----


Super, działa, Dzięki RiE
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 07:19