Alleen de letter A, alleen de letter B...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Colin aaaaaaa

Colin aaaaaaa

10/03/2007 09:20:00
Quote Anchor link
Hallo :)
Ik heb dus een script waarmee ik dingen uit de Database kan halen, voor een item database van Runescape. Maar om het overzichtelijker te maken wil ik dat op 1 pagina alleen maar de items die beginnen met een B enz. Wel kan ik het gewoon op 1 pagina sorteren op A, B dat het achter elkaar komt te staan enzo.

Maar hoe doe ik dat? Alvast bedankt :)
 
PHP hulp

PHP hulp

23/12/2024 19:09:01
 
- -

- -

10/03/2007 09:23:00
Quote Anchor link
SELECT kolom, kolom2 FROM tabel WHERE kolom LIKE 'a%'
SELECT kolom, kolom2 FROM tabel WHERE kolom LIKE 'b%'
SELECT kolom, kolom2 FROM tabel WHERE kolom LIKE 'c%'
 
Joren de Wit

Joren de Wit

10/03/2007 09:24:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT naam
FROM tabel
WHERE SUBSTRING(naam, 1, 1) = 'A'

En natuurlijk kun je hier voor 'A' ook een variabele invullen.
 
Jesper Diovo

Jesper Diovo

10/03/2007 10:07:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT naam
FROM tabel
GROUP BY "A"


Volgens mij is dit 'm ;)
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
- -

- -

10/03/2007 10:17:00
Quote Anchor link
dit is simpel, niet goed beveiligd, maar werkt:
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
<?php
$letters
= range('a', 'z');
echo '<p>Kies een letter';
foreach ($letters as $letter)
{

    echo ' - <a href="?letter=' . $letter . '">' . $letter . '</a>';
}

if (!empty($_GET['letter']))
{

    $query = 'SELECT * FROM tabel WHERE kolom LIKE "' . $_GET['letter'] . '%"';
    $result = mysql_query($query);
    while ($row = mysql_fetch_array($result))
    {

        //Hier je zooi echoën
    }
}

?>
 
Joren de Wit

Joren de Wit

10/03/2007 10:23:00
Quote Anchor link
@Djemo: nee dat is het zeker niet. Groeperen met GROUP BY doe je altijd op een of meedere kolomnamen en in de meeste gevallen alleen als je ook een aggregate functie (zoals bijv. COUNT() of SUM()) in je functie opneemt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Colin aaaaaaa

Colin aaaaaaa

10/03/2007 10:59:00
Quote Anchor link
Hij werkt :D

Ik heb die van Blanche gepakt.
 
Mebus  Hackintosh

Mebus Hackintosh

10/03/2007 11:09:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$letter
= mysql_real_escape_string($_GET['letter']);
$sql= "
SELECT *
FROM tabel
WHERE SUBSTRING(kolom,1,1) = '"
.$letter."';
"
;

?>


Deze vind ik anders nog wel het best en werkt waarschijnlijk ook nog sneller:)

GR. mebus
 
Joren de Wit

Joren de Wit

10/03/2007 11:18:00
Quote Anchor link
De functie mysql_real_escape_string() heeft hier vrij weinig nut, aangezien je maar te maken hebt met 1 character. Dit zou dus beter zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(strlen($_GET['letter']) == 1 && ctype_alpha($_GET['letter']))
{

    $letter = strtolower($_GET['letter']);
    $sql = "
        SELECT kolom
        FROM tabel
        WHERE LOWER(SUBSTRING(kolom, 1, 1)) = '"
.$letter."'
        "
;
}

?>
 
Arend a

Arend a

10/03/2007 12:21:00
Quote Anchor link
Zorg even dat je een index op die kolom aanmaakt, dan gaat het een stuk sneller.

Groet,

Arend
 



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.