sorteren op lettter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Courtney -

courtney -

08/10/2012 14:32:09
Quote Anchor link
hallo, bij mijn site van boeken wou ik een zoekfunctie maken waarbij op een letter kan worden geselecteerd. dus de begin letter is klikbaar en daarop worden alle items met deze beginletter weergegeven.
mijn query is als volgt, niet helemaal uitgewerkt.
SELECT titel
FROM artikel
WHERE 1e letter titel = selectie letter
zodus, uit de kolom titel van tabel artikel haal ik een of meerdere items waarvan de 1e letter overeenkomt met de geselecteerde letter. vooral de where clausule baart me zorgen
mijn vraag is of iemand bereid is mij op weg te helpen hiermee?
 
PHP hulp

PHP hulp

15/01/2025 03:58:17
 
- Ariën  -
Beheerder

- Ariën -

08/10/2012 14:34:20
Quote Anchor link
Zo doe ik het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT abbreviation, description FROM afkortingen WHERE abbreviation LIKE 'a%'


Eigenlijk best simpel met LIKE.
Gewijzigd op 08/10/2012 14:34:38 door - Ariën -
 
Courtney -

courtney -

08/10/2012 14:57:11
Quote Anchor link
daar ik een beginneling met php ben snap ik niet direct wat je hier neerpent.
is abbreviation een soort keyword binnen sql?
 
- Ariën  -
Beheerder

- Ariën -

08/10/2012 14:58:06
Quote Anchor link
Nee, zo heet mijn veldnaam waar het woord in staat. Ik gebruik dit voor een afkortingen-gids.
Gewijzigd op 08/10/2012 14:58:26 door - Ariën -
 
Courtney -

courtney -

08/10/2012 15:16:06
Quote Anchor link
like a%, is dat correct voor het hele alfabet? mag like a-z?
maar ik moet toch ergens een verwijzing hebben naar de geselecteerde letter?
ik zit nog in de beginfase van mijn project, dus nog niet aan het schrijven, vooral aan het voorbereiden.
 
- Ariën  -
Beheerder

- Ariën -

08/10/2012 15:19:02
Quote Anchor link
LIKE 'a%' toont alles wat maar met de letter A begint. In mijn situatie filter ik erop via $_GET.
Gewijzigd op 08/10/2012 15:20:45 door - Ariën -
 
Courtney -

courtney -

08/10/2012 15:28:05
Quote Anchor link
als ik dus a% vervang door de selectie op de site (een aangepaste link) zou mijn probleem van de baan zijn? als je filtert op $_GET, moet je dan geen formulier hebben?

Toevoeging op 08/10/2012 15:30:49:

ik vind het schandalig welke cursussen ik gevolgd heb. daar wordt nu eens niets verteld!
 
Kris Peeters

Kris Peeters

08/10/2012 15:35:31
Quote Anchor link
Je zou iets in deze aard kunnen maken

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
<?php
if (!empty($_GET['letter'])) {
  $sql = "
  SELECT titel
  FROM artikel
  WHERE titel LIKE '"
. substr($_GET['letter'], 0, 1) . "%'
  "
;
  echo $sql; // maar in plaats van te echo'en moet je de query uitvoeren ...
}
?>

...
<form action="">
  <select name="letter">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
    ...
  </select>
  <input type="submit" value="zoek">
</form>


Die substr garandeert dat slechts 1 letter wordt gebruikt en houdt dus ook SQL-injection tegen.
Gewijzigd op 08/10/2012 15:40:35 door Kris Peeters
 
Ozzie PHP

Ozzie PHP

08/10/2012 15:41:44
Quote Anchor link
Moet die $_GET niet een $_POST zijn?
 
- Ariën  -
Beheerder

- Ariën -

08/10/2012 15:43:12
Quote Anchor link
Of nog mooier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$range_alphabethical
= range('a','z');
if(in_array(strtolower($_GET['letter']),$range_alphabethical)) {
 // voer je query uit en toon de resultaten.
}
?>

Hierbij ga ik er wel vanuit dat je geen cijfers of andere vreemde tekens gebruikt.
Gewijzigd op 08/10/2012 15:44:18 door - Ariën -
 
- Mark -

- Mark -

08/10/2012 15:46:23
Quote Anchor link
@ Aar, Daar bestaat ctype_lower() voor.
 
- Ariën  -
Beheerder

- Ariën -

08/10/2012 15:48:13
Quote Anchor link
Je hebt gelijk, dan zal ik mijn code uit mijn CMS maar eens herschijven :-)
 
Ozzie PHP

Ozzie PHP

08/10/2012 15:51:40
Quote Anchor link
ctype_alpha lijkt me logischer
 
Kris Peeters

Kris Peeters

08/10/2012 15:52:43
Quote Anchor link
Ozzie PHP op 08/10/2012 15:41:44:
Moet die $_GET niet een $_POST zijn?


Ik zou met GET werken.
Je kan die zoekopdracht dan bookmarken, doorsturen, ...

Het past in het plaatje: GET => aan de hand van variabelen in de url informatie "halen"
Gewijzigd op 08/10/2012 15:58:52 door Kris Peeters
 
Ozzie PHP

Ozzie PHP

08/10/2012 16:03:14
Quote Anchor link
daar zit wat in...
 
Courtney -

courtney -

08/10/2012 17:41:53
Quote Anchor link
het is alvast heel wat werk voor mij om de beschreven ideeën te evalueren. het enige wat mij nog rest is de link tussen de gekozen letter en de query. $letter haal ik bij action="get". en het formulier maak ik in een lus?

zie zo, weeral een tevreden bezoeker!!!!
mocht ik niet in belgie wonen trakteerde ik jullie allemaal een frisse pint!!!!

Toevoeging op 09/10/2012 06:55:38:

dit is wat ik ervan heb gemaakt
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
<?
$letter
= range('a', 'z');

foreach ($letter as $value) {

    echo '<a href="index.php?letter=$rij["letter"]">' .$value. '</a><br />';

}

$sql = "SELECT 'titel'";
$sql = "FROM 'artikel'";
$sql = "WHERE '$letter' LIKE '$letter'";
$resultaat = mysql_query($sql) or die("query mislukt:" .mysql_error());

while($rij = mysql_fetch_assoc($resultaat)) {
    echo $rij["titel"];
}

?>


Toevoeging op 09/10/2012 06:56:50:

mochten hier fouten instaan, wat ik wel vermoed, mag je die altijd doorgeven.

Toevoeging op 09/10/2012 07:18:41:

wegens omstandigheden heb ik dit nog niet kunnen testen
 



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.