login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Random music (Opgelost)

Offline Simax - 25/05/2007 20:14 (laatste wijziging 11/07/2007 22:17)
Avatar van SimaxOnbekend Beste mensen,

Ben druk bezig een eigen radio op te zetten.
Nu wil ik random muziek(mp3) afspelen die voortkomen
uit een database.

Dit is mogelijk met php/mysql, maar hoe?

Mvg, Rvb

16 antwoorden

Gesponsorde links
Offline Abbas - 25/05/2007 20:18 (laatste wijziging 25/05/2007 20:19)
Avatar van Abbas Gouden medaille

Crew .NET
Natuurlijk, je steekt alle titels in de database en zorg ervoor dat ze elk een eigen ID hebben, daarna haal je deze op en steek ze in een array. Je maakt een random getal dat ligt tussen 0 en het laatste ID van de database. Dat getal is dan het zoveelste element uit de array dat wordt gebruikt, dat element z'n ID gebruik je dan om de titel op te halen en het nummer af te spelen. Na dat het nummer gedaan is maak je een nieuw random getal (automatisch dan)... Snap je? 
Offline Simax - 25/05/2007 20:29
Avatar van Simax Onbekend Oke.

Zou je een voorbeeld kunnen geven?

Mvg, Rvb
Offline Koen - 25/05/2007 20:35 (laatste wijziging 25/05/2007 20:53)
Avatar van Koen PHP expert @titjes: jouw manier is alleen goed als de ID's 1-2-3-4-5-6-7-.. zijn
maar dan wordt er niets afgespeeld als bv 4 wordt gedeleted en het random getal 4 is..
(ik sukkel daar ook een beetje mee )
@beneden: ik heb altijd een punt xD
Offline Abbas - 25/05/2007 20:39 (laatste wijziging 26/05/2007 02:39)
Avatar van Abbas Gouden medaille

Crew .NET
@hierboven: je hebt een punt DAMN

Dan geldt de code hieronder alleen als de ID's elkaar netjes opvolgen (denk ik)... Maar je kan het in ieder geval eens proberen!
  1. <?php
  2.  
  3. $query_max_id = mysql_query("SELECT MAX(id) FROM tabel");
  4. while($res_id = mysql_fetch_assoc($query_max_id))
  5. {
  6. $max_id = $res_id["MAX(id)"];
  7. }
  8.  
  9. $query = "SELECT id FROM tabel";
  10. while($res = mysql_fetch_assoc)
  11. {
  12. $alle_id .= $res["id"].",";
  13. }
  14.  
  15. $array_ids = explode(",", $alle_id);
  16. $getal = rand(0, $max_id);
  17.  
  18. $id_uit array = $array_ids[$getal];
  19.  
  20. $query = mysql_query("SELECT titel FROM tabel WHERE id = '".$id_uit_array."' ");
  21. while($res_titel = mysql_fetch_assoc($query))
  22. {
  23. $titel = $res_titel["titel"];
  24. }
  25.  
  26. ?>


Ik ben bijlange geen PHP-expert maar ik hoop dat deze code je al een beetje op weg kan helpen!  
Offline Simax - 25/05/2007 20:44 (laatste wijziging 11/07/2007 22:19)
Avatar van Simax Onbekend Dat kan het zeker,
maar ik zou graag voorkomen dat er niets wordt afgespeeld wanneer een nummer is verwijdert. Zoals 'sliphead' al vertelde.

Alvast bedankt .

Mvg, Rvb
Offline Abbas - 25/05/2007 20:48
Avatar van Abbas Gouden medaille

Crew .NET
En toch denk ik dat m'n scriptje werkt, want als er een ID niet meer instaat zal het ook niet meer in de array verschijnen:

array_element: 0, 1, 2, 3, 4, 5, 6
id uit database: 1, 3, 4, 5, 8, 10, 11

Dan maakt het niet uit want het random getal zou hier zo gekozen worden: $getal = rand(0, 6);
En dan heb je een ID uit de DB en dat bestaat zoizo, dus ik denk dat het MOET werken... 
Offline Koen - 25/05/2007 20:55 (laatste wijziging 26/05/2007 13:17)
Avatar van Koen PHP expert @titjes: je houdt de vars verkeerd uit de quotes:
jij doet:
  1. <?
  2. query = mysql_query("SELECT titel FROM tabel WHERE id = '.$id_uit_array.' ");

juist:
  1. <?
  2. query = mysql_query("SELECT titel FROM tabel WHERE id = '".$id_uit_array."' ");

* geen slechte kritiek, ik wou je alleen maar op weg helpen *
:p
Offline Simax - 25/05/2007 20:55
Avatar van Simax Onbekend Oke, dankje .

We zullen het eens proberen.

Mvg, Rvb
Offline Abbas - 26/05/2007 02:39 (laatste wijziging 26/05/2007 02:40)
Avatar van Abbas Gouden medaille

Crew .NET
Ok, buiten het feit dat de quotes verkeerd stonden, denk ik dat mijn methode moet werken... 

-edit-
Query verbeterd
Offline mebus - 26/05/2007 03:02 (laatste wijziging 26/05/2007 03:17)
Avatar van mebus Nieuw lid MySQL heeft ook een rand functie... dus die 26 regels aan code kan je makkelijk 10 van maken minder zelfs nog denk ik...

  1. SELECT kolom1, kolom2 FROM muziek ORDER BY RAND() LIMIT 1


Ik verveelde me:

  1. <?php
  2.  
  3. $sql_a = mysql_query("SELECT titel FROM muziek ORDER BY RAND() LIMIT 1");
  4.  
  5. $res_a = mysql_fetch_assoc($sql_a);
  6.  
  7. echo $res_a['titel']."\n";
  8.  
  9. ?>


9 regels...:):P

Link: http://dev.mysq...ction_rand

Hmmm lekker gescript... Zit geen error afhandeling in geen controle of er wel een record in de database is... ehmmmm even veranderen...

  1. <?php
  2.  
  3. $sql_a = mysql_query("SELECT titel FROM muziek ORDER BY RAND() LIMIT 1");
  4.  
  5. if(!mysql_error()) {
  6.  
  7. if(mysql_num_rows($sql_a) == 1) {
  8.  
  9. $res_a = mysql_fetch_assoc($sql_a);
  10.  
  11. echo $res_a['titel']."\n";
  12.  
  13. } else {
  14.  
  15. echo 'geen muziek...'."\n";
  16.  
  17. }
  18.  
  19. } else {
  20.  
  21.  
  22. }
  23.  
  24. ?>


Bijna evenveel regels nu maar wel beter nog steeds:)
Offline Abbas - 26/05/2007 12:28 (laatste wijziging 26/05/2007 13:06)
Avatar van Abbas Gouden medaille

Crew .NET
Jouw code is beter, maar kijk wat ik in m'n vorige post zei:

Citaat:
Ik ben bijlange geen PHP-expert maar ik hoop dat deze code je al een beetje op weg kan helpen!
 

@hieronder, zal ik doen 
Offline mebus - 26/05/2007 12:54 (laatste wijziging 26/05/2007 12:56)
Avatar van mebus Nieuw lid Dat had wel opgemerkt zo... Daarom mag ik toch nog zelf ook wel iets posten?:p Anders had nog wel wat commentaar gelevert op je script en dat deed ik toch niet?:)

Hoop dan ook dat je iets van mijn script leert:) Dan kan je het ook later als er weer een soortgelijk topic is als dit dit vertellen:)
Offline Koen - 26/05/2007 13:19
Avatar van Koen PHP expert @mebus: je hebt zowat even Rvb EN mij geholpen, ik had dat probleem ook, zal ik het ook maar gaan uitproberen zeker :)
Sliphead
Offline Simax - 26/05/2007 17:51 (laatste wijziging 26/05/2007 18:14)
Avatar van Simax Onbekend Dankje ,

Nu zou ik graag een pagina hebben waar deze nummers worden afgespeeld. Ik ga even iets proberen, zodat jullie kunnen corrigeren indien nodig.

Mvg, Rvb
Offline mebus - 26/05/2007 18:03
Avatar van mebus Nieuw lid Ken je eigenlijk wel PHP??? Laat staan HTML....
Offline Ultimatum - 12/07/2007 00:04
Avatar van Ultimatum PHP expert Even nog een reactie op de 2de reactie van sliphead op pagina 1. Jij doet je vars verkeerd, je maakt van een int een string
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s