Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Losowanie rekordu z bazy
julek12
post 20.08.2009, 10:46:02
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 5
Dołączył: 6.02.2009
Skąd: Gorzów Wlkp.

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


Witam,
Napisałem, albo przynajmniej chcę napisać kod dzięki, któremu po wybraniu rekordów z bazy danych wylosuje się jeden. Czyli tak:
-wybieram rekordy i daje je do tablicy
-losuje jeden za pomocą array_rand()
i tu pojawia się problem napisałem sobie takie coś:
  1. <?php
  2. try
  3. {
  4. $pdo = new PDO('mysql:host=localhost;dbname=xxxxxxxx', 'xxxxxxx', 'xxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
  5. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  6.  
  7. function showQid()
  8. {
  9. global $pdo;
  10.  
  11. $sql = $pdo->query('SELECT * FROM `questions`');
  12. while($row = $sql->fetchAll())
  13. {
  14. print_r($row);
  15. }
  16. }
  17. function showPoll()
  18. {
  19. $showQid = showQid();
  20. $rand_keys = array_rand($showQid);
  21. echo $showQid[$rand_keys];
  22. }
  23. echo showPoll();
  24. }
  25. catch(PDOException $e)
  26. {
  27. echo $e->getMessage();
  28. }
  29. ?>


Ten post edytował julek12 20.08.2009, 10:46:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Suh
post 20.08.2009, 10:53:08
Post #2





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

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


Jest problem bo losujesz klucz z pustej tablicy. Funkcja showQid() musi zwracać tablicę, którą wyciąga z zapytania, podczas gdy funkcją print_r tylko drukujesz pobraną tablicę.


--------------------
Pomogłem ? Odwdzięcz się, kliknij POMÓGŁ.
Go to the top of the page
+Quote Post
julek12
post 20.08.2009, 10:54:22
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 5
Dołączył: 6.02.2009
Skąd: Gorzów Wlkp.

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


Aha ok a jak zrobić tą tablice, bo jakoś nie mam pomysłu chyba, że w ogóle jest łatwiejszy sposób na wylosowanie rekordu haha.gif
Go to the top of the page
+Quote Post
cojack
post 20.08.2009, 10:56:17
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


showQid() - przecież ta funkcja Ci nic nie zwraca, i kolega wyżej dobrze pisze że losujesz z pustej tablicy, jeszcze parę takich postów i humor na dzień dzisiejszy nikt mi nie zabierze biggrin.gif

Btw można zrobić by pobierało randoma od razu w sql:

  1. SELECT imie, RANDOM() AS rand FROM tablica ORDER BY rand LIMIT 1;


Ten post edytował cojack 20.08.2009, 10:56:56


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
julek12
post 20.08.2009, 11:03:24
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 5
Dołączył: 6.02.2009
Skąd: Gorzów Wlkp.

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


działa:
  1. function showQid()
  2. {
  3. global $pdo;
  4.  
  5. $sql = $pdo->query('SELECT * FROM `questions`');
  6. $row = $sql->fetchAll();
  7. return $row;
  8. }
  9. function showPoll()
  10. {
  11. $showQid = showQid();
  12. $rand_keys = array_rand($showQid);
  13. echo $showQid[$rand_keys];
  14. }
  15. echo showPoll();


Ten post edytował julek12 20.08.2009, 11:22:29
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 Wersja Lo-Fi Aktualny czas: 15.06.2025 - 02:18