From where = like
eindelijk een na een uur forum lezen eindelijk mijn probleem waarop misschien iemand wel een antwoord op weet.
Ik heb namelijk een sql query :
SELECT * FROM records WHERE list_item ='J' AND country LIKE '%alsou%' OR year LIKE '%alsou%' OR artist LIKE '%alsou%' OR title LIKE '%alsou%' OR type LIKE '%alsou%' LIMIT 0,20
het probleem zit 'm in list_item = 'J'
zonder dit doet hij het prima en ook als alles na de 'J' weggehaald wordt werkt het maar nu wil ik enkel degene die door de J uitgefilterd worden laten zien.
Alsou is het voorbeeld in de zoekstring wat ik gebruikte en heeft niks met de code te maken.
Weet iemand hoe dit zou kunnen komen.
Alvast bedankt
Rick
list_item = varchar(16)
bijvoorbeeld dus?
Zo ja jij hebt dus een word genaamd jan
En je wilt alles selecteren wat met de letter j begint?
edit: typo
edit: even netjes voorstellen natuurlijk
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
'zoekterm%' - selecteert de resultaten die beginnen met de zoekterm
'%zoekterm' - selecteert de resultaten die eindigen met de zoekterm
mocht je gewoon alle mensen willen selecteren waar een j in voorkomt moet je gewoon de like gebruiken zoals je nu ook doet, met 2 procent-tekens dus.
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
Kijk anders even na dit topic wat ik ooit eens heb geopent
http://www.phphulp.nl/forum/showtopic.php?id=18676&cat=1&replies=0
Dit gaat over een sql query die de eerste letter van een word pakt
het is bijna altijd een slecht idee om een aantal OR's en AND's achter elkaar te zetten zonder haakjes te gebruiken. Dat geeft eigenlijk altijd onverwachte resultaten.
Probeer eens in een gewone Nederlandse zin te beschrijven welke resultaten je query moet opleveren?
list_item = char(1) en geeft eigenlijk aan of de cd wel of niet in de lijst mag verschijnen
die AND's en OR's is eigenlijk bedoeld voor de lege query wanneer niet naar artiest land enzo verder gezocht wordt
hier is eigenlijk de code query (die ik net plakte was de output query.
SELECT * FROM records WHERE list_item ='N' AND country LIKE '%" .$keyword. "%' OR year LIKE '%" .$keyword. "%' OR artist LIKE '%" .$keyword. "%' OR title LIKE '%" .$keyword. "%' OR type LIKE '%" .$keyword. "%'";
Rick
is J of N een kleine letter of een hoofdletter in je record?
Hier kan je het eventueel bekijken
http://www.bearecords.nl/2shop.php
Alsou heb ik als voorbeeld genomen omdat namelijk die een waarde 'N' in list_item heeft anders is het 'n 'J'
Nu is die code een souvenir van een voorganger die ik moet verbouwen.
Rick
enkel hoofdletters
Dank je Jan, ga ik het nu even proberen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$sql= "SELECT
hier,
je,
velden
FROM
records
WHERE
list_item ='N'
AND
(country LIKE '%" .$keyword. "%'
OR
year LIKE '%" .$keyword. "%'
OR
artist LIKE '%" .$keyword. "%'
OR
title LIKE '%" .$keyword. "%'
OR
type LIKE '%" .$keyword. "%')";
?>
$sql= "SELECT
hier,
je,
velden
FROM
records
WHERE
list_item ='N'
AND
(country LIKE '%" .$keyword. "%'
OR
year LIKE '%" .$keyword. "%'
OR
artist LIKE '%" .$keyword. "%'
OR
title LIKE '%" .$keyword. "%'
OR
type LIKE '%" .$keyword. "%')";
?>
Dat is makkelijker Debuggen en zoals Jan al aangaf gebruik haakjes. En in je code Query zeg je list_item'N'en bovenaan zeg je list_item='J'
Maak er een kleine letter van kun je in phpmyadmin wel aangeven wat Linux is hoofdletter gevoelig dus altijd alles in kleine letter muv KEYWORDS in SQL
EDIT JAN IS WEER EENS SNELLER GRRRR...
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
En kijk uit met je veldnamen, ik weet het niet zeker maar namen als TYPE en RECORDS zou ik niet gebruiken. Gebruik voor de veldnamen altijd NEDERLANDSE namen. Weet je zeker dat je geen verboden worden gebruikt
Jan:
@ Klaasjan: case sensitivity in MySQL hangt af van de collatie van je tabel. Klik in phpMyAdmin maar eens op Karakter Sets en Collaties. Je kunt zelfs collatie op veldniveau toepassen.
Volgens mij kun je inderdaad een veld naar LOWER zetten en dat is wat ik bedoelde.
beiden bedankt die haakjes deden het 'm
Jan je hebt helemaal gelijk wat die code betreft
ik heb er al wat structuur in zitten maar het zoals ik het vond was het net een csv bestand met alles aan elkaar en zeker niet overzichtelijk.
Nu ben ik in PHP vrij nieuw zo zou ik het nooit gedaan hebben.
Nogmaals iedereen bedankt voor de hulp en de reacties
Rick
1/0 lijkt me dan een betere keuze, dus gewoon een tinyint(1)
Maar wel een doorn in mijn oog. Daarom heb ik in de nieuwe versie dan ook alles weer naar hoofd en kleine letters gezet.
Voor de nieuwsgierigen:
http://www.bearecords.nl/1a.php