[PHP/MySQL] cols delen op alfabet?

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb geen idee hoe je zoiets noemt, maar ik zit met een probleempje.

Ik heb in een Mysql database een table met enkele honderden Vlaggen. Deze staan nu onder elkaar in een rij van 2 cols, maar die wil ik opdelen.

Op zich geen probleem, ik had ze opgesplit in 2 rijen van 20 en dan onderaan kon je kiezen voor volgende 20 of vorige 20

vorige - 1-2-3-4-5-6-7-etc-volgende (zo iets)

Maar das knap lastig als je de vlag van bv timboektoe wilt zien. Nu wil ik dus in plaats van cijfers, letters gaan gebruiken, en het liefste letters samenvoegen, bv.

a-d e-g h-l m-r s-z

De vraag is kan zoiets? En zo ja, hoe?

Ander probleem voor elke naam/land staat Vlag_

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

http://www.mysql.com/doc/en/String_functions.html

seek the SUBSTRING and find, you shall

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt! Ik ben er bijna!

select substring(omschrijving, 5) from products where artgroep = 'Vlag' and artsubgroep = 'Internationaal' and omschrijving like 'Vlag A%' or omschrijving like 'Vlag B%' or omschrijving like 'Vlag C%' order by omschrijving;

Dat het ik nu door. Maar hoe krijg ik deze query nou dynamisch?

Dus dat wanneer ik op F-L klik de query anders is dan wanneer ik op A-C klik?

[ Voor 37% gewijzigd door Verwijderd op 09-12-2003 15:13 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Hmz, dat was eigenlijk niet echt wat ik bedoelde :P

Ik zou het meer in deze richting zoeken:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
   LOWER(SUBSTRING(omschrijving,5,1))   as sortLetter
   en nog wat zut
FROM
   products 
WHERE
   sortLetter >= 'a'
AND
   sortLetter <= 'c'
AND
   de rest van je where zut
ORDER BY
   sortLetter

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Query dynamisch, erg simpel en onveilig:

HTML:
1
<a href="show.php?start=a&end=c">A t/m C</a>

PHP:
1
2
3
4
5
6
// waardes uit url halen
$start = $_GET['start'];
$end = $_GET['end'];

// query opbouwen met waardes
$sql = "SELECT velden FROM tabel WHERE sortLetter >= '$start' AND sortLetter <= $end";

[ Voor 15% gewijzigd door OkkE op 09-12-2003 15:36 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Snap het wel (denk ik) maar het werkt niet :)

mysql> select lower(substring(omschrijving,6,1)) as sortletter
-> from products where sortletter >= 'a' and
-> sortletter <= 'c' and artgroep = 'Vlag' and
-> artsubgroep = 'Internationaal' order by omschrijving;
ERROR 1054: Unknown column 'sortletter' in 'where clause'

Iemand het laatste duwtje in de goede richting? ;)

Acties:
  • 0 Henk 'm!

  • Tycoontje
  • Registratie: Februari 2003
  • Laatst online: 15-07 12:59
Ik denk dat je je where clause op omschrijving wilt loslaten i.p.v. op sortletter.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Nasdaq:
Snap het wel (denk ik) maar het werkt niet :)

mysql> select lower(substring(omschrijving,6,1)) as sortletter
-> from products where sortletter >= 'a' and
-> sortletter <= 'c' and artgroep = 'Vlag' and
-> artsubgroep = 'Internationaal' order by omschrijving;
ERROR 1054: Unknown column 'sortletter' in 'where clause'

Iemand het laatste duwtje in de goede richting? ;)
Mja, my bad, je kunt natuurlijk geen aliases gebruiken in de where clause. Je kunt 2 dingen doen: van de WHERE een HAVING maken of de sortLetter uit je WHERE clause vervangen door LOWER(SUBSTRING(omschrijving,6,1)).

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
THX! Het werkt!

ff voor de statistieken / search :) :

Eerst de WHERE clause uitvoeren en dan pas de HAVING.
Pagina: 1