login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Limit in foreach plaatsen (Opgelost)

Offline WouterPSV - 29/01/2011 19:18
Avatar van WouterPSVLid Avond mensen,

Het volgende speelt bij mij. Ik heb een XML file met daarin willekeurig aantal records staan.

Nu lukt het mij om alle XMLNodes op te halen tenminste wat ik van dei node wil laten zien. Echter wil ik na 10 nodes een break hebben en dat ik dan op volgende kan klikken en dat die dan van ?pg=1 naar ?pg=2 gaat.

Op dit tweede pagina moet die dan ook Node 11-20 laten zien en op pagina 3 21-30 etc.

De volgende code heb ik, maar ik kom er even niet uit met die next knop heeft iemand een oplossing?

  1. <?php
  2. function objectsIntoArray($arrObjData, $arrSkipIndices = array())
  3. {
  4. $arrData = array();
  5.  
  6. // if input is object, convert into array
  7. if (is_object($arrObjData)) {
  8. $arrObjData = get_object_vars($arrObjData);
  9. }
  10.  
  11. if (is_array($arrObjData)) {
  12. foreach ($arrObjData as $index => $value) {
  13. if (is_object($value) || is_array($value)) {
  14. $value = objectsIntoArray($value, $arrSkipIndices); // recursive call
  15. }
  16. if (in_array($index, $arrSkipIndices)) {
  17. continue;
  18. }
  19. $arrData[$index] = $value;
  20. }
  21. }
  22. return $arrData;
  23. }
  24.  
  25. //echo $object->ObjectDetails->Adres->Nederlands->Straatnaam . ' ' . $object->ObjectDetails->Adres->Nederlands->Huisnummer . '<br />';
  26. //echo $object->ObjectDetails->Adres->Nederlands->Postcode . ' ' . $object->ObjectDetails->Adres->Nederlands->Woonplaats . '<br />';
  27. //wcho $object->ObjectDetails->Koop->Koopprijs . '<br /><br />';
  28. //echo $i .''. $object->ObjectDetails->Adres->Nederlands->Straatnaam .'<br />';
  29.  
  30. if (($xml = simplexml_load_file('http://whdesign.nl/WONEN_20101210.xml')))
  31. {
  32. $i = 0;
  33. foreach ($xml->Object as $object)
  34. {
  35. $currentPage = $_GET['pg'];
  36. $startrecord = ($currentPage * 10); // met page 1, is startrecord 0, etc.
  37. $endrecord = $startrecord + 10;
  38.  
  39. //echo $startrecord;
  40. //echo '<br />'. $endrecord;
  41.  
  42. if($i < $startrecord || $i >= $endrecord)
  43. {
  44. $i++;
  45. echo $i.' een huis<br />';
  46. continue;
  47. }
  48.  
  49. if ($i-10 == $startrecord-10)
  50. {
  51. $i = $startrecord;
  52. echo '-----------------';
  53. break;
  54. }
  55.  
  56.  
  57. }
  58. }
  59. ?>

4 antwoorden

Gesponsorde links
Offline Sam - 29/01/2011 19:27
Avatar van Sam PHP expert Hoe ziet je array er uit? Als je index numeriek is kan je een gewone for loop gebruiken:

  1. for($i = $begin; $i < ($end > count($arrObjData) ? count($arrObjData) : $end); $i++)
  2. {
  3. //Code hier
  4. }
Offline WouterPSV - 29/01/2011 19:34 (laatste wijziging 29/01/2011 19:45)
Avatar van WouterPSV Lid Alles met betrekking tot de array staat er boven en via de link XML file kun je de xml file bekijken.

Waar haal je in dit geval die $begin en $end weg?
Offline Sam - 30/01/2011 16:19
Avatar van Sam PHP expert $begin is waar je wilt starten, dus bijvoobeeld ($_GET['pg'] - 1) * 10
$end is waar je wilt stoppen, dus bijvoobeeld $_GET['pg'] * 10
Offline WouterPSV - 03/02/2011 18:36
Avatar van WouterPSV Lid Bedankt! Heb het nu voor elkaar gekregen.

  1. <?php
  2. function objectsIntoArray($arrObjData, $arrSkipIndices = array())
  3. {
  4. $arrData = array();
  5.  
  6. // if input is object, convert into array
  7. if (is_object($arrObjData)) {
  8. $arrObjData = get_object_vars($arrObjData);
  9. }
  10.  
  11. if (is_array($arrObjData)) {
  12. foreach ($arrObjData as $index => $value) {
  13. if (is_object($value) || is_array($value)) {
  14. $value = objectsIntoArray($value, $arrSkipIndices); // recursive call
  15. }
  16. if (in_array($index, $arrSkipIndices)) {
  17. continue;
  18. }
  19. $arrData[$index] = $value;
  20. }
  21. }
  22. return $arrData;
  23. }
  24.  
  25. //echo $object->ObjectDetails->Adres->Nederlands->Straatnaam . ' ' . $object->ObjectDetails->Adres->Nederlands->Huisnummer . '<br />';
  26. //echo $object->ObjectDetails->Adres->Nederlands->Postcode . ' ' . $object->ObjectDetails->Adres->Nederlands->Woonplaats . '<br />';
  27. //wcho $object->ObjectDetails->Koop->Koopprijs . '<br /><br />';
  28. //echo $i .''. $object->ObjectDetails->Adres->Nederlands->Straatnaam .'<br />';
  29.  
  30. if (($xml = simplexml_load_file('http://whdesign.nl/WONEN_20101210.xml')))
  31. {
  32. $i = 0;
  33.  
  34. $currentPage = $_GET['pg'];
  35. $startrecord = ($currentPage * 10); // met page 1, is startrecord 0, etc.
  36. $endrecord = $startrecord + 10;
  37.  
  38. for($i = $startrecord; $i < ($endrecord > count($xml) ? count($xml) : $endrecord); $i++)
  39. {
  40. echo $i .'<br />';
  41. }
  42.  
  43. echo '<br />';
  44.  
  45. if ($_GET['pg'] > '0')
  46. {
  47. ?>
  48. <a href="?pg=<?php echo $_GET['pg'] - 1; ?>">Vorige</a>
  49. <?php
  50. }
  51.  
  52. $aantal = floor(count($xml) / 10);
  53.  
  54. if ($_GET['pg'] > '0' && $_GET['pg'] < $aantal)
  55. {
  56. echo '||';
  57. }
  58.  
  59. if ($_GET['pg'] < $aantal)
  60. {
  61. ?>
  62. <a href="?pg=<?php echo $_GET['pg'] + 1; ?>">Volgende</a>
  63. <?php
  64. }
  65. }
  66. ?>


geeft 0 t/m 9 en dan volgende etc etc..

Hoe kan ik nu de eerste 10 records van mij xml er aan koppelen? De id's zijn namelijk niet netjes genummerd van 1 t/m 91.
Misschien kan iemand een voorzet geven dat ik hem zelf kan afmaken?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.253s