Eerste karakter een cijfer met LIKE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Steef

Steef

05/11/2009 16:06:00
Quote Anchor link
Hallo PHPhulp'ers,

Ik zit momenteel met een probleem, ik probeer door middel van het gehele alfabet namen te sorteren. Dit doe ik door een letter mee te geven in de url en daarna de lijst met namen te laten zien die met de in url meegegeven letter beginnen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$qName
= $db->sql_query("
        SELECT        user_name,
            user_id
        FROM        "
. TABLE_USERS . "
        WHERE        user_name LIKE '"
. $db->escape($_GET['letter']) . "%'
        ORDER BY        user_name ASC
"
);
?>


Nu heb ik ook een optie om namen te sorteren op cijfers, maar dan spreek ik niet over één cijfer maar om alle cijfers (dus 0 t/m 9).

In plaats van dat de $_GET['letter'] een letter uit het alfabet is, gebruik ik voor het ophalen van namen met cijfers 'numbers'.

Er wordt momenteel gecontroleerd op of $_GET['letter'] 'numbers' is, zoniet dan moet er in de bovenstaan de query gezocht worden op de naam met de letter is in $_GET['letter'] staat.

Echter krijg ik het niet voor elkaar om in bovenstaande query te zoeken op een naam met begin van een cijfer.

Ook heb ik op dit probleem gezocht op internet maar ik kan hierover weinig vinden of het is niet wat ik zoek.
Wel deze: http://lists.mysql.com/mysql/218060 maar ik weet niet hoe ik hem moet toepassen en/of het wel goed is voor wat ik bedoel aangezien de LIKE moet beginnen met 0, 1, 2, 3, 4, 5, 6, 7, 8 of 9

Weet iemand hiervoor een oplossing en kan mij tips geven hoe ik mijn probleem moet oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Steef
 
PHP hulp

PHP hulp

23/11/2024 14:32:47
 
Koen

koen

05/11/2009 16:10:00
Quote Anchor link
is de wildcard niet een '*' in sql :S
 
Steef

Steef

05/11/2009 16:13:00
Quote Anchor link
Dat maakt voor de rest niet zo veel uit of dat een % of een * is naar mijn weten...
 
Koen

koen

05/11/2009 16:14:00
Quote Anchor link
http://www.tizag.com/mysqlTutorial/mysqlwhere.php
word over de wildcards gesproken...
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Steef

Steef

05/11/2009 16:20:00
Quote Anchor link
Dit heeft trouwens niets te maken met mijn probleem, de bovenstaande code werkt gewoon alleen nog niet met de cijfers zoals ik het zou willen zien.

En in de link dit jij geeft gaat het over de SELECT statement, niet over de LIKE http://www.sql-tutorial.net/SQL-LIKE.asp
 
Koen

koen

05/11/2009 16:22:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Connect to MySQL

// Insert a row of information into the table "example"

$result = mysql_query("SELECT * FROM example WHERE age LIKE '2%' ")
or die(mysql_error());  

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row
    echo $row['name']." - ".$row['age']. "<br />";
}

?>


staat toch in de pagina die ik stuurde
 
Steef

Steef

05/11/2009 16:24:00
Quote Anchor link
Maar nu voor ieder willekeurig cijfer dus 0 t/m 9
 
Koen

koen

05/11/2009 16:25:00
Quote Anchor link
WHERE kolom LIKE '%' ??
 
Steef

Steef

05/11/2009 16:27:00
Quote Anchor link
Nee want dan kan de eerste karakter toch ook een letter zijn en dat wil ik niet, het mag alleen 0 t/m 9 zijn.
 
Koen

koen

05/11/2009 16:34:00
Quote Anchor link
als ik goed heb gelezen op : http://www.fmforums.com/forum/showtopic.php?tid/200196/
is '#' een nr wildcard voor 1 plaats.
dus dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Connect to MySQL

// Insert a row of information into the table "example"

$result = mysql_query("SELECT * FROM example WHERE age LIKE '#%' ")
or die(mysql_error());  

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row
    echo $row['name']." - ".$row['age']. "<br />";
}

?>
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Steef

Steef

05/11/2009 16:41:00
Quote Anchor link
Maar dan weet je nogsteeds niet of het wel een cijfer is die op de eerste plaats staat, wel bedankt voor je hulp hoor daar niet van!

Als je mijn eerste post goed doorleest lees je dat het inmiddels al wel werkt met letters die ik ophaal door middel van index.php?letter=A bijvoorbeeld.

Nu wil ik dat als je index.php?letter=numbers hebt dat je dan alle namen die met een willekeurig cijfer beginnen (dus 0 t/m 9) door een query uit de tabel gehaald worden.

Het # wat je hierboven laat zien werkt ook niet, een # staat namelijk ook voor ieder willekeurig karakter (dus cijfers en letters)

% = maakt niet uit hoeveel tekens dus als je bijvoorbeeld de namen Berhard en Bernard wilt opahelen doe je LIKE ber%, dan haalt ie beide namen uit de tabel

# = 1 teken die willekeurig kan zijn dus als je bijvoorbeeld de namen Berhard en Bernard wilt ophalen doe je LIKE ber#ard, dan haalt ie beide namen uit de tabel
 
Koen

koen

05/11/2009 16:45:00
Quote Anchor link
of je nest php code in je where
dat je een variabele vult met een preg_match op '0123456789' en dan where : 'variabele'
 
Lauren Zonneveld

Lauren Zonneveld

05/11/2009 16:59:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT name FROM example WHERE name REGEXP '^[0-9]'
 
Koen

koen

05/11/2009 17:00:00
Quote Anchor link
werkt dat?
 
Steef

Steef

05/11/2009 17:00:00
Quote Anchor link
Thanx gozer, door jou ben ik bij de juiste MySQL functie terecht gekomen
http://dev.mysql.com/doc/refman/5.0/en/regexp.html

Nu WHERE user_name REGEXP '^[0-9]'

Hij maakt alleen nu een aparte query zodra er numbers in de url is mee gegeven maar dat maakt niet uit!

EDIT: @Lauren, ik had hem nu inmiddels ook al gevonden, googlen op preg_match in WHERE (in Google) deed in dit geval ook wonderen. Toch bedankt voor het meedenken!
Gewijzigd op 01/01/1970 01:00:00 door Steef
 



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.