Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Losowanie rekordu z bazy
Forum PHP.pl > Forum > Przedszkole
julek12
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. ?>
Suh
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ę.
julek12
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
cojack
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;
julek12
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();
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.