login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array tje

Offline WuPnu - 30/06/2009 14:41
Avatar van WuPnuNieuw lid Hoe kan je bij een Array werken met ORDER BY? Het is een Array die een tabel genegeerd met daarin de waarde van verschillende personen. Een werkend voorbeeld kan je vinden op:
http://wup.nu/mod/profile/array.php

De code start met:
  1. $items = array();
  2. $queryvrienden = mysql_query("SELECT DISTINCT vrienden.* FROM `vrienden` JOIN `gebruikers` ON gebruikers.id = vrienden.gebruikers_id WHERE vrienden.gebruikers_id = '60' AND gebruikers.actief='1' AND vrienden.actief='1' ORDER BY gebruikers.laatst_actief DESC LIMIT 6 ");
  3. while($vriend = @mysql_fetch_array($queryvrienden))
  4. {
  5. $items[] = $vriend['vriend_id'];
  6. }
  7.  
  8. $aantal_kolommen = 4;
  9. $kolom_breedte = 75; // in pixels
  10. $aantal_items = sizeof($items);
  11. $huidige_kolom = 0; // als deze variabele de waarde 0 heeft dan is er een rij afgelopen
  12. // en moet er een nieuwe beginnen
  13. ?>
  14. <table width="350px" border="0" cellspacing="0" cellpadding="2">
  15. <?php
  16. foreach($items as $item) {
  17. if($huidige_kolom == 0) {
  18. echo'<tr>';
  19. }
  20. echo '<td valign="top" width="'.$kolom_breedte.'">';
  21.  
  22. $queryvrienden2 = mysql_query("SELECT * FROM gebruikers WHERE id='".mysql_real_escape_string($item)."' ");
  23. $vriend2 = mysql_fetch_array($queryvrienden2);
  24.  
  25. if($vriend2['description'] == ""){
  26. $vriendnaam = inkorten($vriend2['naam'],10);
  27. }else {
  28. $vriendnaam = inkorten($vriend2['description'],10);
  29. }
  30.  
  31.  
  32. echo'<a href="'.$basisurl.'/p/'.$vriend2['naam'].'" title="Bekijk hier het profiel van '.$vriendnaam.'">
  33. <img src="'.$vriend2['avatar'].'" border="1" width="50px" height="50px" alt="Avatar" /></a><br />
  34. <a href="'.$basisurl.'/p/'.$vriend2['naam'].'" title="Bekijk hier het profiel van '.$vriendnaam.'">'.inkorten($vriendnaam,10).'</a><br />
  35. <a href="'.$basisurl.'/p/'.$vriend2['naam'].'" title="'.$vriend2['city'].'" >'.inkorten($vriend2['city'],10).'</a>';
  36.  
  37. if($_SESSION['user_naam'] == $_GET['naam'] || $status == "1"){
  38. echo'<a href="'.$basisurl.'/p/delfriend/'.$vriend['vriend_id'].'/'.$vriend['gebruikers_id'].'">
  39. <img src="'.$basisurl.'/main/images/delete-small.png" align="center" border="0" width="16px" height="16px" alt="Verwijderen" /></a>';
  40. }
  41.  
  42. echo"</td>\n";
  43.  
  44. $huidige_kolom++;
  45.  
  46. if($huidige_kolom == $aantal_kolommen) {
  47. echo "</tr>\n";
  48. $huidige_kolom = 0;
  49. }
  50. }
  51. if($huidige_kolom != 0) {
  52. for($i = $huidige_kolom; $i < $aantal_kolommen; $i++) {
  53. echo "<td width=\"".$kolom_breedte."\">&nbsp;</td>\n";
  54. }
  55. echo "</tr>\n";
  56. }

6 antwoorden

Gesponsorde links
Offline Bart - 30/06/2009 14:44
Avatar van Bart PHP expert http://www.site...amp;id=476
Offline WuPnu - 30/06/2009 14:54
Avatar van WuPnu Nieuw lid Daarin staat volgens mij dat de volgorde nummeric is, maar ik wil hem op volgorde van een bepaalde kolom hebben (laatst_actief)
Offline Bart - 30/06/2009 14:57
Avatar van Bart PHP expert Dit is een database veld neem ik aan, waarom pas je dan niet gewoon je query aan, ipv je array te manipuleren?
Offline WuPnu - 30/06/2009 15:00
Avatar van WuPnu Nieuw lid Hoe kan ik dat aanpassen als ik de gegevens uit 2 verschillende tabellen moet halen?
Offline Martijn - 30/06/2009 15:01
Avatar van Martijn Crew PHP wat Bart zegt is de beste optie, maar je kunt dit doen:

  1. while($vriend = @mysql_fetch_array($queryvrienden))
  2. {
  3. $items[$vriend['laatstActief']] = $vriend['vriend_id'];
  4. }
  5. // en dan kun je hier sorteren op key.

maar sorteren in sql gaat sneller dan in php
Offline WuPnu - 30/06/2009 19:58 (laatste wijziging 30/06/2009 21:05)
Avatar van WuPnu Nieuw lid Hmm dit laatste gaat niet werken als ik hem er dan in zet krijg ik maar een item uit de database in plaats van 6...

Dus dit klopt volgens mij niet, heb zo idee dat je nu zegt het moet laatst_actief zijn en vriend_id. Maar waarom kan je eigenlijk niet gewoon werken met ORDER BY?

Als ik het bekijkt op de oude profielpagina gebeurd het zelfde, het lijkt er op dat het ligt aan de distance... lijkt er op dat deze geen order by kent...?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.201s