Avatar billede jarner Nybegynder
12. februar 2008 - 01:57 Der er 5 kommentarer og
1 løsning

Sorter efter klik på overskrift

Hej eksperter.
Ved godt at dette spørgsmål er stillet før, men jeg kan ikke rigtigt får det til at virke.

Her er koden:


    if($_GET["daek_tommer"] != "NO") $whereclause[] = "products_tommer = '$_GET[daek_tommer]'";
    if($_GET["daek_profil"] != "NO") $whereclause[] = "products_profil = '$_GET[daek_profil]'";
    if($_GET["daek_bredde"] != "NO") $whereclause[] = "products_bredde = '$_GET[daek_bredde]'";
    if($_GET["daek_maerke"] != "NO") $whereclause[] = "manufacturers_name = '$_GET[daek_maerke]'";
    if($_GET["daek_model"] != "NO") $whereclause[] = "products_model = '$_GET[daek_model]'";
   
    if(isset($whereclause))
    {
        $whereclause = implode(" AND ",$whereclause)." AND ";
    }
   
    $q = "SELECT * FROM products, products_description, manufacturers WHERE $whereclause products_description.products_id = products.products_id AND products_description.language_id = '4' AND manufacturers.manufacturers_id = products.manufacturers_id ORDER BY products_name
";
   
    $r = mysql_query($q) or die(mysql_error());
   
    if(mysql_num_rows($r) == 0)
    {
        // Ingen resultater - lav noget html
        ?>
                  <br>
                  <br>
                  <b>Ingen resultater at vise. Prøv igen eller benyt menuen i venstre side.</b><br>
                  <br>
                    <?
    }else{
        // Tabel Head
        echo "<div align=\"left\">";
        echo "Din søgning gav ".mysql_num_rows($r)." resultater.";
        echo "</div><br>";
        ?>
                        </div>
                       
                <table width="100%" class="soegtabel">
                  <tr><td><Produktnavn</td><td>Producent</td><td>Pris</td><td></td></tr>
                  <?
        while($row = mysql_fetch_array($r))
        {
           
           
           
            // Her sætter du rows op, de må ikke indeholde " medmindre du escaper dem sådan her \"
            // Flere felter kan du finde fra products og products_description og smide feltnavnet ind i $row[feltnavn]
           
            echo "<tr class=\"trsoeg\">";
            echo "<td><a href='product_info.php?products_id=$row[products_id]'>$row[products_name]</a><br>Type:$row[products_model]</td>";
            echo "<td>$row[manufacturers_name]</td>";
            echo "<td>".number_format($row["products_price"]*(1.25), 2, ',', '.')."</td>";
            echo "<td><img src=\"images/$row[products_image]\" width='60' hight='80'></td>";
            echo "</tr>";
            echo "<tr><td></td></tr>";
        }
        // Tabel Foot
        ?>
                          </table>   



Så altså alt efter om man klikker på Produktnavn, Producent eller Pris, skal det sorteres derefter.
Som det ses er den som standard nu sat til produktnavn.


På forhånd tak! (og synd der ikke er en funktion der laver et kode-vindue..)
Avatar billede jarner Nybegynder
12. februar 2008 - 01:58 #1
der er altså en form ovenover koden med værdierne for de fem første rækker der er præsenteret.
Avatar billede olebole Juniormester
12. februar 2008 - 02:12 #2
<ole>

Hvis det er samme udtræk, ville jeg sortere på klienten, så DB'en ikke belastes unødigt

/mvh
</bole>
Avatar billede jarner Nybegynder
12. februar 2008 - 02:29 #3
er det så med javascript eller hvordan?

fandt nemlig denne der virker
http://www.eksperten.dk/spm/123743

hvor jeg så skriver ved tilfølde, eks

    if ($sort == 'alfa') {
    $q = "SELECT * FROM products, products_description, manufacturers WHERE $whereclause products_description.products_id = products.products_id AND products_description.language_id = '4' AND manufacturers.manufacturers_id = products.manufacturers_id ORDER BY products_name
";
} else if ($sort == 'beta') {
$q = "SELECT * FROM products, products_description, manufacturers WHERE $whereclause products_description.products_id = products.products_id AND products_description.language_id = '4' AND manufacturers.manufacturers_id = products.manufacturers_id ORDER BY products_price
";
} else {$q = "SELECT * FROM products, products_description, manufacturers WHERE $whereclause products_description.products_id = products.products_id AND products_description.language_id = '4' AND manufacturers.manufacturers_id = products.manufacturers_id ORDER BY products_name
";}


..og det er vel ikke at ikke belaste DB'en unødigt...
Avatar billede jakobdo Ekspert
12. februar 2008 - 06:41 #4
jarner: Det kode du har fundet der, er at det sorteres på serveren. Hvis du som olebole siger, har samme udtræk, skal det laves i javascript ja.
Avatar billede jarner Nybegynder
12. februar 2008 - 09:34 #5
okay, kan ikke lige pt finde noget javascript der kan hjælpe mig.
Hvis jeg nu vælger ovenstående løsning, ved i så hvordan jeg får min sorteringsnøgle, fx sort=alfa til at stå efter hele adressen?

Fx. når jeg har lavet en søgning nu, kan den skrive
soeg.php?daek_bredde=NO&daek_profil=82&daek_tommer=NO

Hvor jeg så ved klik på linket gerne vil have &sort=alfa, fx
soeg.php?daek_bredde=NO&daek_profil=82&daek_tommer=NO&sort=alfa

linket på relativt alt efter hvilket søgning jeg har foretaget mig.

På forhånd tak.
Avatar billede jarner Nybegynder
12. februar 2008 - 13:49 #6
okay, har fundet en løsning efter ovenstående fremgangsmetode. Nok ikke den mest effektive, kan jeg tænke mig til, men den virker :)

Tak for inputs.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester