login  Naam:   Wachtwoord: 
Registreer je!
 Forum

weergeven maar favorieten vooraan

Offline GroundZero - 18/10/2011 12:15 (laatste wijziging 18/10/2011 12:59)
Avatar van GroundZeroLid Beste,

is het mogelijk om alles uit een tabel weer te geven (MYSQL) maar de favorieten dingen bovenaan weer te geven en daarna alles gewoon willekeurig door elkaar of op id DESC of iets (maakte niet uit hoe de rest er staat als het er maar staat).

Idee is dus:

Als een gebruiker ingelogd is op zijn account dan kan hij voorkeuren instellen.

- stad
- doelgroep
- categorie

stel dat iemand kiest:

Amsterdam
Mannen, Vrouwen
Sportkleding

Dan wil ik dat alle rijen uit de tabel welke voldoen aan bovenstaande waardes als EERSTE worden weergegeven gesorteerd op datum van toevoeging. Als deze allemaal geweest zijn en er niks meer is dat voldoet aan de bovenstaande waardes dan moet alles worden weergegeven wat hier niet aan voldoet op datum van toevoeging.

Kan iemand mij uitleggen hoe ik dit zou kunnen realiseren op een makkelijke manier, of is hier niet een makkelijke manier voor en moet je met meerdere queries gaan werken? want ik wil ook pagina nummering gebruiken en als ik dan alles moet uitrekenen aan de hand van 2 verschillende queries dan word het wel wat ingewikkeld.

3 antwoorden

Gesponsorde links
Offline larssy1 - 18/10/2011 15:26
Avatar van larssy1 MySQL beginner ORDER BY stad, doelgroep, categorie, id ?
Offline GroundZero - 18/10/2011 15:29
Avatar van GroundZero Lid Yeah maar....

dat geld voor de gevonden resultaten die voldoen aan de voorwaardes... maar ik wil ook de resterende weergeven 

Ik zal mijn query laten zien ;)

  1. // email en wachtwoord uit elkaar halen
  2. $data = explode(":", $_COOKIE['mijnSite']);
  3. // op geldigheid controleren
  4. $query = mysql_query('select id FROM site_accounts
  5. WHERE
  6. email = "'.mysql_real_escape_string($data[0]).'"
  7. AND
  8. wachtwoord = "'.mysql_real_escape_string($data[1]).'"') or die(mysql_error());
  9. $rows = mysql_num_rows($query);
  10.  
  11. if($rows == 1)
  12. {
  13.  
  14.  
  15.  
  16. // er is ingelogd met een geldig account nu ads ophalen aan de
  17. // hand van voorkeuren van deze account
  18. $query = mysql_query('SELECT steden, doelgroep, soort FROM site_accounts
  19. WHERE
  20. email = "'.mysql_real_escape_string($data[0]).'"
  21. AND
  22. wachtwoord = "'.mysql_real_escape_string($data[1]).'"');
  23. $fetch = mysql_fetch_assoc($query);
  24.  
  25. $steden = $fetch['steden'];
  26. $doelgroep = $fetch['doelgroep'];
  27. $soort = $fetch['soort'];
  28.  
  29. // nu we de voorkeurs steden, doelgroep en soort hebben dit in een array plaatsen
  30. // zodat we weten hoeveel elk is en deze per in de query kunnen verwerken
  31. $steden = explode(",", $steden);
  32. $doelgroep = explode(",", $doelgroep);
  33. $soort = explode(",", $soort);
  34.  
  35. $aantal_steden = count($steden);
  36. $aantal_doelgroep = count($doelgroep);
  37. $aantal_soort = count($soort);
  38.  
  39. $set = 'SELECT * FROM site_advertenties';
  40.  
  41. // kijken of we "WHERE" moeten toevoegen
  42. if($aantal_steden >= 1){
  43. $set .= ' WHERE ';
  44. } elseif($aantal_doelgroep >=1){
  45. $set .= ' WHERE ';
  46. } elseif($aantal_soort >= 1){
  47. $set .= ' WHERE ';
  48. }
  49.  
  50. // soort toevoegen
  51. $soort_i = 1;
  52. foreach($soort as $value)
  53. {
  54. if($soort_i < $aantal_soort){
  55. $set .= ' categorie LIKE "%'.$value.'%" OR ';
  56. } else {
  57. $set .= ' categorie LIKE "%'.$value.'%" ';
  58. }
  59.  
  60. $soort_i++;
  61. }
  62.  
  63. // als steden niet leeg was dan prefix toevoegen
  64. if($aantal_soort >= 1){
  65. $set .= ' AND ';
  66. }
  67.  
  68. // steden toevoegen
  69. $steden_i = 1;
  70. foreach($steden as $value)
  71. {
  72. if($steden_i < $aantal_steden){
  73. $set .= ' plaats LIKE "%'.$value.'%" OR ';
  74. } else {
  75. $set .= ' plaats LIKE "%'.$value.'%" ';
  76. }
  77.  
  78. $steden_i++;
  79. }
  80.  
  81. // als doelgroep niet leeg was dan prefix toevoegen
  82. if($aantal_doelgroep >= 1){
  83. $set .= ' AND ';
  84. }
  85.  
  86. // steden toevoegen
  87. $doelgroep_i = 1;
  88. foreach($doelgroep as $value)
  89. {
  90. if($doelgroep_i < $aantal_doelgroep){
  91. $set .= ' doelgroepen LIKE "%'.$value.'%" OR ';
  92. } else {
  93. $set .= ' doelgroepen LIKE "%'.$value.'%" ';
  94. }
  95.  
  96. $doelgroep_i++;
  97. }
  98.  
  99. $set .= ' GROUP BY titel ORDER BY id DESC LIMIT 1000';
  100.  
  101. $query = mysql_query($set) or die(mysql_error());
  102.  
  103. }



Je ziet dat ik nu alles wat aan de voorwaarden voldoet geselecteerd heb. Echter wil ik ook alles wat niet aan deze voorwaarden voldoet laten zien aan een gesloten achter de resultaten die wel voldoen.
Offline qubus - 18/10/2011 18:55
Avatar van qubus Lid Misschien een omweg, maar als je de query zoals je deze hebt, in een array zet.
Dan een nieuwe query, waarin je de rest ophaalt, en in een 2e array zetten.

Deze 2 array's met array_merge samenvoegen, en weergeven.

Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s