Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]zmiana tekstu po odświeżeniu
Forum PHP.pl > Forum > Przedszkole
morarz
Witam,

Mam pytanie bo nie wiem jaką funkcję do tego zastosować z PHP,

wyciągam dane z bazy danych i wyświetlam je na stronie, jest to 5 informacji (title), ale chciałbym żeby za każdym razem po odświeżeniu były to inne 5 informacji jak się do tego zabrać questionmark.gif
kadlub
czyli chcesz za każdym odświeżeniem strony mieć inne dane wyciągane z bazy
to musisz zmienić zapytanie przy każdym odświeżeniu strony więc
nie wiem jakie masz zapytanie ale jak pobierasz rekord po id a te pięć danych ma być losowe to zrób sobie
np
  1. $id=rand(1,19) ;
  2. $sql=mysql_query("select * from tabela where id='".$id."' ");


pokarz kod będzie łatwiej
peter13135
  1. $sql=mysql_query("select * from tabela ORDER BY rand() LIMIT 5);

ale...
http://blog.ksiazek.info/2010/05/04/order-by-rand-to-zlo/

Więc możesz wylosować 5 idków za pomocą rand() w php sprawdzając czy się nie powtarzają.
a potem zapytanie zrobić tak:

  1. $sql=mysql_query("select * from tabela WHERE ID in(" . implode(',', $tablica_id) . ")");
morarz
Zrobiem tak i mam zapytanie błąd :
  1. $id=rand(1,19) ;
  2. $sql = "select * from phpbb_topics where id='".$id."' ";
  3. $result = mysql_query($sql) or die("Zapytanie błąd");
  4.  
  5. for($x=1;$x<=5;$x++){
  6. $row = mysql_fetch_array($result);
  7. echo "<ul>";
  8. echo "<li><a href = \"http://www.garwolinskie.info/forum/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\">$row[topic_title]</a><br></li>";
  9. echo "</ul>";


questionmark.gifquestionmark.gif?

Hej Peter a ta zmienna tablica_id to do czego questionmark.gif?
kadlub
  1. $tab=array();
  2. $liczba=19;//liczba id w bazie
  3. for($x=1;$x<=5;$x++){
  4. $id=rand(1,$liczba);
  5. if(!in_array($id,$tab)){
  6. array_push($tab,$id);
  7. $result = mysql_query("select * from phpbb_topics where id='".$id."' ") or die(mysql_error());
  8. $row = mysql_fetch_array($result);
  9. echo "<ul>";
  10. echo '<li><a href = "http://www.garwolinskie.info/forum/viewtopic.php?f='.$row['forum_id'].'&t='.$row['topic_id'].'">'.$row['topic_title'].'</a><br></li>';
  11. echo "</ul>";
  12. }
  13. else{
  14. $x--;
  15. }
  16. }
  17.  


trochę na sztywno więc nie wiem czy cię to zadowoli
peter13135
@kadlub
Czy nie sądzisz że Twój sposób jest nieco nieoptymalny ?
Jeśli kolejno losowane liczby będą takie same, to tablica będzie miała tylko 1 element, a wszystkie artykuły będą takie same
Twoja tablica nie jest nigdzie używana.
Integer nie string, nie wymaga apostrofów

@morarz
$tablica id, to taka która miała by zawierać wylosowane przez Ciebie id. Widzę że nie potrafisz skorzystać z moich wskazówek, więc napiszę całość. (korzyystając trochę z powyższego przykładu)
  1. $tab=array();
  2. $liczba=19;//liczba id w bazie
  3. while(count($tab)<5)
  4. {
  5. $id=rand(1,$liczba);
  6. if(!in_array($id,$tab))
  7. array_push($tab,$id);
  8. }
  9. $result = mysql_query('select * from phpbb_topics where id in(' . implode(',',$tab) . ')' ) or die(mysql_error());

dalej zrób jak post wyżej, albo całkiem po swojemu.
PS. żeby kod nie ulegał zapętleniu, $liczba musi być >= 5, inaczej kod się zapętli. Dodanie odpowiedniego warunku pozostawiam Tobie.
kadlub
Cytat(peter13135 @ 5.04.2011, 19:41:06 ) *
@kadlub
Czy nie sądzisz że Twój sposób jest nieco nieoptymalny ?
Jeśli kolejno losowane liczby będą takie same, to tablica będzie miała tylko 1 element, a wszystkie artykuły będą takie same
Twoja tablica nie jest nigdzie używana.
Integer nie string, nie wymaga apostrofów

  1. if(!in_array($id,$tab))
  2. array_push($tab,$id);

a jak myślisz co robi ten kawałek kodu??

  1. $tab=array();
  2. $liczba=19;//liczba id w bazie
  3. for($x=1;$x<=5;$x++){
  4. $id=rand(1,$liczba);
  5. if(!in_array($id,$tab)){
  6. array_push($tab,$id);
  7. $result = mysql_query("select * from phpbb_topics where id='".$id."' ") or die(mysql_error());
  8. $jest=mysql_num_rows($result);
  9. if($jest==1){
  10. $row = mysql_fetch_array($result);
  11. echo "<ul>";
  12. echo '<li><a href = "http://www.garwolinskie.info/forum/viewtopic.php?f='.$row['forum_id'].'&t='.$row['topic_id'].'">'.$row['topic_title'].'</a><br></li>';
  13. echo "</ul>";
  14. }
  15. else
  16. {
  17. $x--;
  18. }
  19. }
  20. else{
  21. $x--;
  22. }
  23. }


bardziej z optymalizowany
tamten miał wadę że jak np id nie były kolejne tylko np 1,2, 5, 8, 12
to wyświetlał czasami puste miejsca
peter13135
Cytat
a jak myślisz co robi ten kawałek kodu??

Myślę że odpala rakietę.
Ok. Masz rację. Sam się zaplątałem, źle odczytałem wyrażenia warunkowe (bo brak wcięć tongue.gif)
Ale nie zmienia to faktu że robisz aż 5 zapytań, co nie jest optymalne. Już lepiej jest zrobić tak.
  1. $sql=mysql_query('select * from tabela ORDER BY rand() LIMIT 5');

Co prawda też nie idealne bo rand() w mysql robi tymczasową tabelę, ale jednak lepsze to niż 5 zapytań i jest znacznie prostsze w implementacji (jedna linijka to nie kilkanaście)
morarz
Wy tu gadu gadu a u mnie pięknie ładnie działa.

Dla obydwu po "Pomógł".

Dzięki serdecznie.

Pozdr.

Spójrzcie sobie na listę postów :

"Cytata jak myślisz co robi ten kawałek kodu?? "

lol biggrin.gif

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.