login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Link voor sorteren van gegevens

Offline Ijspegel - 29/01/2008 19:08 (laatste wijziging 29/01/2008 19:10)
Avatar van IjspegelNieuw lid Ik heb op mijn website een overzichtje van producten. Nu heb ik het (met behulp van deze site) zo gemaakt dat er geordend kan worden op enkele criteria en ook nog op ASC of DESC. Een url kan er dan dus bijvoorbeeld als volgt uitzien:
1. www.site.nl/index.php?order=beoordeling
2. www.site.nl/index.php?order=beoordeling&sort=DESC

Dit werkt gewoon goed als ik zoiets dus invoer in de adresbalk. Het is natuurlijk echter niet de bedoeling dat de bezoekers zo'n adres helemaal gaan intikken. Het is juist de bedoeling dat de links automatisch goed gezet worden. Heeft de bezoeker bijvoorbeeld op de link "Ordenen op beoordeling" geklikt, dan moet www.site.nl/index.php?order=beoordeling geladen worden. Klikt hij daarna nog een keer op die link, dan moet er echter www.site.nl/index.php?order=beoordeling&sort=DESC geladen worden. Kan iemand mij misschien vertellen hoe ik dit het beste kan doen?

Dit is de code die ik tot nu heb:
Plaatscode: 5316

7 antwoorden

Gesponsorde links
Offline BramBo - 29/01/2008 19:13
Avatar van BramBo JS gevorderde iets in de trant van:
  1. $link = "www.site.nl/index.php?order=beoordeling&sort=".(($_GET['sort']=='DESC') ? "ASC": "DESC");

?
Offline Ijspegel - 29/01/2008 19:52
Avatar van Ijspegel Nieuw lid Hmm, ik dacht het helemaal werkte, maar dat is helaas niet zo. Zodra de bezoeker voor de eerste keer op die pagina komt is $_GET['sort'] namelijk nog niet gezet (www.site.nl/index.php?order=beoordeling). Dan werkt het dus nog niet.

Weet je misschien nog een oplossing hiervoor?
Offline Martijn - 29/01/2008 20:21 (laatste wijziging 29/01/2008 20:22)
Avatar van Martijn Crew PHP
  1. if(!isset($_GET['sort']){$_GET['sort']="ASC";}


voor het stukje zetten die asc en desc uitvoert, of als je $_GET['sort'] eerder gebruikt, daarvoor 
Offline Ijspegel - 29/01/2008 22:41
Avatar van Ijspegel Nieuw lid Ik heb nu jouw code ook verwerkt, maar het werkt helaas niet.

Nu staat er dus dit:
<?php
if (!isset($_GET['sort']))
{
$_GET['sort'] = 'ASC';
}
?>
<th><a href="?order=product&amp;sort=<?php echo ($_GET['sort']=='ASC') ? 'DESC' : 'ASC'; ?>">Product</a></th>

Ik ben er nu zo mee bezig dat ik ook niet meer echt logisch na kan denken zeg.   Ik hoop dat jullie nog kunnen helpen. Mocht dit niet het geval zijn, dan ga ik er morgen weer met een frisse blik naar kijken.

In ieder geval bedankt!  
Offline zointer - 30/01/2008 05:21
Avatar van zointer HTML gevorderde http://www.site...L/Sorteren
Offline Ijspegel - 30/01/2008 08:37 (laatste wijziging 30/01/2008 23:43)
Avatar van Ijspegel Nieuw lid Aan de hand van die tutorial heb ik dus het scriptje gemaakt. Ik had eerst zelf wel al iets gemaakt, maar het scriptje uit die tutorial is beter. 

Ik heb het nu gewoon als volgt:
<?php echo (isset($_GET['sort'])) && ($_GET['sort']=='ASC') ? 'DESC' : 'ASC'; ?>

Dit werkt gewoon goed. Eerst leek het alleen niet te werken doordat ik ook mooie urls gebruik met behulp van htacces. Nu herkende hij de $_GET waardes niet op die manier. Nu ik het echter met een oude url als www.site.nl/index.php?cat=boeken&subcat=woordenboeken&order=beoordeling&sort=ASC doe werkt het wel gewoon.  

Hmm, nu heb ik alleen nog 1 probleem. Er kan op drie criteria gesorteerd worden, namelijk naam, aantal en beoordeling. Nu heb ik bij alle drie de links dezelfde code geplaatst, maar dat werkt dus niet helemaal goed. Als de url namelijk op bijvoorbeeld order=beoordeling&sort=DESC staat, dan moet de link om te sorteren op beoordeling op ASC staan, maar de andere 2 links gewoon nog op DESC. Snappen jullie wat ik bedoel?

Ik moet nu even weg, maar hoop dat jullie er ook over willen nadenken. Ik ga er zodra ik tijd heb natuurlijk ook weer zelf naar kijken.

Edit:
Ik ben nu weer even bezig met stoeien en heb nu de volgende 3 links:
  1. <a href="http://www.site.nl/index.php?cat=boeken&subcat=woordenboeken&order=product&amp;sort=<?php echo (isset($_GET['sort'])) && ($_GET['sort'] == 'DESC') && ($_GET['order'] == 'product') ? 'ASC' : 'DESC'; ?>">Product</a></th>
  2. <a href="http://www.site.nl/index.php?cat=boeken&subcat=woordenboeken&order=aantal&amp;sort=<?php echo (isset($_GET['sort'])) && ($_GET['sort']=='ASC') && ($_GET['order'] == 'aantal') ? 'DESC' : 'ASC'; ?>">Aantal</a></th>
  3. <a href="http://www.site.nl/index.php?cat=boeken&subcat=woordenboeken&order=beoordeling&amp;sort=<?php echo (isset($_GET['sort'])) && ($_GET['sort']=='ASC') && ($_GET['order'] == 'beoordeling') ? 'DESC' : 'ASC'; ?>">Beoordeling</a>


Het werkt nu bijna helemaal goed, op 1 orden foutje na. Zodra ik bijvoorbeeld op aantal geordend heb, dan moeten de 2 andere links standaard op ASC staan, maar dit is bij ordenen op product niet het geval. Deze staat namelijk op DESC. Ik probeer het nu dus op te lossen door steeds met de verkorte if / else notatie te werken, maar volgens mij kan dat gewoon niet. Het ordenen op product heeft namelijk best wat 'condities'. Zo moet er bijvoorbeeld als je op http://www.site...rdenboeken bent het ordenen op product op DESC staan, maar zodra er op een andere criteria geordend wordt moet het op ASC gezet worden.

Ik hoop echt dat jullie kunnen helpen hiermee!  
Offline BramBo - 31/01/2008 00:37
Avatar van BramBo JS gevorderde Waarom niet in een loopje waar je de categorieen opbouwt?

  1. $cats = array("Boeken","Kasten","Deuren");
  2. // Assoc subcat array
  3. $sCats = array(array("WoordenBoek", "aa"), array("Boekenkast", "aa"), array("Grote Deur", "aa"));
  4.  
  5. for($i=0, $j=count($cats);$i<$j;$i++) {
  6. for($k=0, $l=count($cats);$k<$l;$k++) {
  7. $sort = ($_GET['sort']=='ASC'&&$_GET['subcat']==$sCats[$i][$k]) ? 'DESC': 'ASC';
  8.  
  9. $link .= "<a href='/index.php?cat={$cats[$i]}&amp;subcat={$sCats[$i][$k]}&amp;order=product&amp;sort={$sort}'>asd</a>";
  10. }
  11. }


Of je doet het alles in javascript 
Google.be: sorting tables javascript
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s