login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Eerst order by level desc dan rand() (Opgelost)

Offline betterdays - 20/04/2011 16:29
Avatar van betterdaysLid Hey iedereen,

Heb weer een vraagje (heb men hoofd er al over gebroken)
Ik wil een query eerst laten sorteren op level (het hoogste level eerst) en daarna nog ad random. Want er zijn namelijk linken die hetzelfde level hebben.

Ik heb al volgende querie die sorteert op level:

  1. $sql1=mysql_query("SELECT id, link FROM rotator WHERE user = '".$user1."' AND actief = 'ja' AND rotator = '0' AND id NOT IN (SELECT linkid FROM kliks WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND user='".$user1."' AND time > '".(time() - 60*60*24)."') ORDER BY level DESC LIMIT 1") or die;


Hoe kan ik deze query nu laten random kiezen tussen links van hetzelfde level?

6 antwoorden

Gesponsorde links
Offline lolll - 20/04/2011 19:58
Avatar van lolll Lid Misschien zo:
Eerst haal je uit de 1ste query van hierboven een array van alle elementen met hetzelfde level.
Dan haal je de array length eruit, en doe je in php rand(0,$length).
En dan haal je uit de array dat element dat random geselecteerd is.
Het php zit wat ver bij mij, dus ik kan niet direct de code geven, maar met het bovenstaande in je achterhoofd, zou het toch moeten lukken. 
Offline WouterJ - 21/04/2011 09:07
Avatar van WouterJ HTML gevorderde Die rand functie is hierbij niet nodig. Je selecteert alles per level uit de database. Vervolgens zet je deze in een array. Dan gooi je de functie PHP.net: shuffle erover en loop je de array langs en selecteer de gegevens.
Offline betterdays - 21/04/2011 11:56
Avatar van betterdays Lid Ik krijg hem echt niet goed op deze manieren. Zou iemand even een uitwerking kunnen zetten?
Offline WouterJ - 21/04/2011 14:33
Avatar van WouterJ HTML gevorderde Een heel basis voorbeeldje:
  1. <?php
  2. # Maak contact met de MySQL server
  3. $sql = mysql_connect('localhost', 'gebruikersnaam', 'wachtwoord');
  4.  
  5. if(!$sql)
  6. { # Als het contact niet is gelukt
  7. echo 'Er is een fout';
  8. }
  9. else
  10. { # Als er wel contact is => Selecteer een database
  11. $db = mysql_select_db('dbname', $sql);
  12.  
  13. if(!$db)
  14. { # Als het selecteren niet is gelukt
  15. echo 'Er is een fout';
  16. }
  17. else
  18. { # Als het allemaal goed gaat => Voer de query uit
  19. $sQuery = "
  20. SELECT
  21. name,
  22. url
  23. FROM
  24. tabelNaam
  25. WHERE
  26. level = 1
  27. ";
  28. $result = mysql_query($sQuery, $sql);
  29.  
  30. if((!$result) || (mysql_num_rows($result) == 0))
  31. { # Als de query niet is gelukt of er niks is opgehaald
  32. echo 'Er is iets fout gegaan';
  33. }
  34. else
  35. { # Als de query is gelukt en er is iets opgehaald
  36. # Ga dan de resultaten door en stop je ze in de array $level1
  37. $i = 0;
  38. while($row = mysql_fetch_assoc($result))
  39. {
  40. $level1[$i]['name'] = $row['name'];
  41. $level1[$i]['url'] = $row['url'];
  42. $i++;
  43. }
  44. }
  45. }
  46. }
  47. # Schud alle gegevens in $level1 door elkaar
  48. shuffle($level1);
  49.  
  50. # Loop nu de gegevens van $level1 door en echo ze
  51. foreach($level1 as $site)
  52. {
  53. echo '<h2>'.$site['name'].'</h2>';
  54. echo '<a href="'.$site['url'].'">link</a>';
  55. }
Offline Martijn - 21/04/2011 18:29
Avatar van Martijn Crew PHP of lekker simpel 
  1. SELECT kolom FROM tabel ORDER BY kolom1 ASC, kolom2 ASC

En in het geval van rondom als 2e, vervan je in het bovenstaande voorbeeld 'kolom2 ASC' met RAND()
Bedankt door: betterdays
Offline betterdays - 21/04/2011 18:39
Avatar van betterdays Lid @ martijn: bedankt! Ik dacht wel dat het niet zo moeilijk hoefde te zijn 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s