Probleem met sorteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn

Martijn

08/03/2007 20:27:00
Quote Anchor link
Hallo,

Ik heb een tabel met gegevens waar ik zowel op- als aflopend wil sorteren.
Alleen kan hij maar op 1 manier sorteren. Waar zit de fout?

Code:
..........
..........
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

$manier
= (isset($_GET['updown']) && $_GET['updown'] == 'DESC') ? 'DESC' : 'ASC';
// hier wordt dus gekeken of &updown= erin zit en of DESC erachter staat, zoniet dan sorteert hij automatisch op ASC
if(isset($_GET['sortby']))
    {

    switch($_GET['sortby'])
        {
        case
'id': $sorteer = 'id'; break;
        case
'functie': $sorteer = 'functie'; break;
        case
'bedrijf': $sorteer = 'bedrijf'; break;
        case
'locatie': $sorteer = 'locatie'; break;
           default:
$sorteer = 'id'; break;
        }
    }

else
    {
    $sorteer = 'id';
    }

$query=mysql_query("SELECT * FROM vacatures WHERE actief='ja' ORDER BY $sorteer $manier LIMIT $start, $max") or die(mysql_error());
// Nu komt $sorteer nog uit manier 1 of 2, die je er zelf boven moet plakken.


echo ("<TR><td class=tekst height=25 width=233>
<B>Functie:</b><a href=vacature.php?sortby=functie&updown=asc><img src=images/aflopend.gif></A>
        <a href=vacature.php?sortby=functie&updown=desc><img src=images/oplopend.gif></A></TD><td class=tekst height=25 width=193>
<B>Bedrijf:</b> <a href=vacature.php?sortby=bedrijf&updown=asc><img src=images/aflopend.gif></A>
         <a href=vacature.php?sortby=bedrijf&updown=desc><img src=images/oplopend.gif></A></B></TD><td class=tekst height=25 width=153>
<B>Locatie:</b> <a href=vacature.php?sortby=locatie&updown=asc><img src=images/aflopend.gif></A>
             <a href=vacature.php?sortby=locatie&updown=desc><img src=images/oplopend.gif></A></B></TD></TR>"
);

// Aantal rijen opgehaald.
$num = mysql_num_rows($query);
if (empty($num))
{

   echo "<p><tr><td id=vak4 class=body colspan=4 width=100%>Er zijn geen vacatures.</TD></p>";
}

else
{
 while ($rij = mysql_fetch_array($query))  
    
  {

    // Print het nieuws
    
  
//////////////////Einde Navigatie///////////////////


$color = ++$i % 2 ? "#DA7317": "#EB9A52";
echo ("<TR><td bgcolor=$color class=vacatures height=25 width=233><a href=viewvacature.php?id=".$rij["id"]."><font color=25333E><STYLE=color: 25333E; text-decoration: none;>".$rij ['functie']."</style></A></TD>");
         echo ("<td bgcolor=$color class=vacatures height=25 width=193>".$rij ['bedrijf']."</TD>");
          echo ("<td bgcolor=$color class=vacatures height=25 width=153>".$rij ['locatie']."</TD></TR>");
}

// Kijken of $vorige groter of gelijk is aan 0, dan de hyperlink 'Vorige'
  
  echo ("<TR>");
  if ($vorige >= '0')
  {

     echo "<TD class=vacatures><a href=\"vacature.php?start=$vorige\"><font color=25333E><B>Vorige pagina</B></a></TD>";
     // De variabele start geeft voor de volgende pagina aan waarde query moet starten
  }
  
  // Tellen hoeveel records er zijn
  $aantal = mysql_fetch_row(mysql_query("SELECT count(*) FROM vacatures"));
  
  // Als het aantal groter is dan $volgende de link laten zien
  if ($aantal[0] > $volgende)
  {

     echo "<TD colspan=3 align=right class=vacatures><a href=\"vacature.php?start=$volgende\"><font color=25333E><B>Volgende pagina</B></a>";
     // De variabele start geeft voor de volgende pagina aan waarde query moet starten
  }

//aantal pagina's berekenen

//afronden naar boven via ceil

$pag = ceil($aantal[0]/$max);

if ($pag == 1)
   {

    echo "<TR><TD class=vacatures>Er is 1 pagina</TD></TR>";
   }

        else
                {

                $pagnum = $start/$max + 1;

                    echo "<TR><TD class=vacatures>Dit is pagina $pagnum van $pag</TD></TR>";
                   }


}


echo ("<TABLE align=center><TR><TD valign=top class=tekst colspan=3 height=10></TD></TR>");
echo ("</table>");


include ('include/footer.php');
?>

</SPAN></B></TD></TR></FONT></TBODY></table>
 
PHP hulp

PHP hulp

17/11/2024 14:28:25
 
Stefan van Iwaarden

Stefan van Iwaarden

08/03/2007 20:35:00
Quote Anchor link
wat is je foutmelding?

worden de variabelen $start en $max wel gedefinieerd wel toegekend?

overigens beveel ik het ook aan om je variabelen buiten de quotest te halen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
=mysql_query("SELECT * FROM vacatures WHERE actief='ja' ORDER BY ".$sorteer." ".$manier." LIMIT ".$start.", ".$max."") or die(mysql_error());
?>
 
Frank -

Frank -

08/03/2007 20:38:00
Quote Anchor link
Het is mij niet duidelijk wat nu de bedoeling is, laat staan waarom je bijna 100 regels code hier neerzet terwijl we slechts 1 query nodig hebben.

Oplossing: Ga eerst eens de gewenste queries noteren, hoe je die dan later op een dynamische manier gaat aanmaken, is een ander probleem.

Hier een voorbeeldje met een tweevoudige sortering:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
  voornaam,
  achternaam
FROM
  namen
ORDER BY
  voornaam ASC,
  achternaam DESC
 
Martijn

Martijn

08/03/2007 21:07:00
Quote Anchor link
Hier gaat het om:
Wil ik bijvoorbeeld op functie aflopend sorteren dan werkt dat. Wil ik vervolgens oplopend sorteren dan komt de link wel in de adresbalk van de browser te staan, alleen doet hij er niets mee. Ik krijg ook geen foutmelding.

echo ("<TR><td class=tekst height=25 width=233>
<B>Functie:</b><a href=vacature.php?sortby=functie&updown=asc><img src=images/aflopend.gif></A>
<a href=vacature.php?sortby=functie&updown=desc><img src=images/oplopend.gif></A></TD><td class=tekst height=25 width=193>
<B>Bedrijf:</b> <a href=vacature.php?sortby=bedrijf&updown=asc><img src=images/aflopend.gif></A>
<a href=vacature.php?sortby=bedrijf&updown=desc><img src=images/oplopend.gif></A></B></TD><td class=tekst height=25 width=153>
<B>Locatie:</b> <a href=vacature.php?sortby=locatie&updown=asc><img src=images/aflopend.gif></A>
<a href=vacature.php?sortby=locatie&updown=desc><img src=images/oplopend.gif></A></B></TD></TR>");
 
Renee

renee

24/03/2007 19:52:00
Quote Anchor link
-
Gewijzigd op 01/01/1970 01:00:00 door renee
 
Frank -

Frank -

24/03/2007 20:00:00
Quote Anchor link
Waarom echo je de verschillende queries niet even? Dan krijg je precies te zien wat er naar de database wordt gestuurd. Je mag er van uit gaan dat de query niet goed is.

Verder is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$query
=mysql_query("SELECT * FROM vacatures WHERE actief='ja' ORDER BY $sorteer $manier LIMIT $start, $max") or die(mysql_error());
?>

vragen om problemen. Nu kun je nooit meer de query echoen, $query is helemaal geen query (is een result-set) en de foutafhandeling is uitermate bot. 'Oeps, query gaat fout, STERF!!!'...

Voorbeeldje hoe het beter kan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$query
= "
SELECT
  *
FROM
  vacatures
WHERE
  actief='ja'
ORDER BY
  $sorteer $manier
LIMIT $start, $max
"
;
$result = mysql_query($query);

if($result){ // query is gelukt
  // doe iets met het resultaat

}
else { // query is mislukt
  echo 'Query "'.$query.'" is mislukt vanwege de volgende fout: '.mysql_error();
}

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.