login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Voorwaardelijk sorteren van array (Opgelost)

Offline Thijs1 - 30/11/2010 23:17
Avatar van Thijs1Nieuw lid Beste Sitemasters!

Ik krijg maar niet voor elkaar, of gevonden op google, hoe ik het volgende voor elkaar kan krijgen:

Er is een array genaamd "downloadgroups" met daarbinnen meerdere arrays opgebouwd op volgende manier:
(ID, ORDER, TITLE, SHORTNAME)

De array downloadgroups bevat 10 items waarbij ID van 1 t/m 10 loopt, ORDER moet de volgorde voorstellen hoe PHP de lijst uiteindelijk moet tonen en kan overdreven gezien 1 2 5 4 3 8 6 7 9 10 zijn. Het resultaat van onderstaande script is dat het order nummer niet wordt aangehouden bij het plaatsen van de info uit de database maar het ID..


  1. $cats = downloadgroups();
  2. function orderBy($data, $field)
  3. {
  4. $code = "return strnatcmp(\$a['$field'], \$b['$field']);";
  5. usort($data, create_function('$a,$b', $code));
  6. return $data;
  7. }
  8.  
  9. // sort cats by order number
  10. $cats = orderBy($cats, 'order');
  11.  
  12. for ($i = 0; $i <= count($cats); $i++) {
  13. $sort[$i] = "";
  14. $count[$i] = 0;
  15. }
  16.  
  17. while ($data = dbarray($result)) {
  18. //SORT CAT_GROUPS
  19. for ($i = 0; $i <= count($cats); $i++) {
  20. if($data['download_cat_group'] == $i) {
  21. if ($count[$i] % $columns == 0) { $sort[$i] .= "<tr>\n"; }
  22. $sort[$i] .= "<td valign='middle' width='50%' class='tbl'><img style='margin:3px' align='left' src='".URL."images/download_cat/".$img."' height='40' width='40' alt='".$data['download_cat_name']."' /></td>\n";
  23. if ($count[$i] % $columns == 1) { $sort[$i] .= "</tr>\n"; }
  24. $count[$i]++;
  25. }
  26. }
  27. }
  28. echo "<div id='acc'>\n";
  29. while(list($key, $title) = each($cats)){
  30. echo " <div id='acc".$key."-header'><h3 class='files-caption top-round'>".$title[title]."</h3></div>\n";
  31. echo " <div id='acc".$key."-content' class='files-content'>\n";
  32. echo " <table cellpadding='0' cellspacing='0' width='100%'>".$sort[$key]."</table>\n";
  33. echo " </div>\n";
  34. }
  35. echo "</div>\n";


Volgens mij moet er iets aangepast worden in "if($data['download_cat_group'] == $i)" maar ik loop hier op vast..

Heeft er iemand een idee hoe ik kan zorgen dat de data uit de database onder de juiste ID geplaatst wordt??

Alvast bedankt,
Thijs

2 antwoorden

Gesponsorde links
Offline Martijn - 01/12/2010 19:45
Avatar van Martijn Crew PHP Dit moet je gewoon beter uit je database halen Dat gaat zo veel sneller. Aan programmeren en het script kan dan sneller. Dit is echt geen beginnen.

*sidenote: streepje mag niet in een id voorkomen alleen a-z en 0-9 en moet altijd beginnen met een letter. Ja t werkt zo ook prima, maar toch.
Bedankt door: Thijs1
Offline Thijs1 - 01/12/2010 20:25 (laatste wijziging 01/12/2010 20:54)
Avatar van Thijs1 Nieuw lid haha, goed. Werk aan de winkel dus! 
En over het streepje, dat mag wel. Google knows!

bedankt voor je tijd en de tip!! 

Grt, Thijs

edit: HET WERKT met de huidige manier na een aanpassing:

  1. echo "<div id='acc'>\n";
  2. while(list($key, $title) = each($cats)){
  3. echo " <div id='acc".$key."-header'><h3 class='files-caption top-round'>".$title['title']."</h3></div>\n";
  4. echo " <div id='acc".$key."-content' class='files-content'>\n";
  5. echo " <table cellpadding='0' cellspacing='0' width='100%'>".$sort[$title['id']]."</table>\n";
  6. echo " </div>\n";
  7. }
  8. echo "</div>\n";


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