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.

<?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?
is de wildcard niet een '*' in sql :S
Dat maakt voor de rest niet zo veel uit of dat een % of een * is naar mijn weten...
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

<?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
Maar nu voor ieder willekeurig cijfer dus 0 t/m 9
WHERE kolom LIKE '%' ??
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.
als ik goed heb gelezen op : http://www.fmforums.com/forum/showtopic.php?tid/200196/
is '#' een nr wildcard voor 1 plaats.
dus dan

<?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 />";
} 
?> 
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

Reageren