Hoofdletter gevoelig maken
Met onderstaande query pikt hij zowal "a" als "A" op. Hoe kan ik deze hoodletter gevoelig maken? Zodat hij onderscheid maakt tussen beiden ??
$letter="a";
"SELECT * FROM spelling WHERE LETTER = '$letter'";
strtoupperr == "A"
Maar hoe moet dat dan in de query?
$letter=strtolower("a");
"SELECT * FROM spelling WHERE LETTER = '$letter'";
Onderstaande query geeft dit als resultaat
$query ="SELECT * FROM spelling where LETTER = 'a' ";
$controle = mysql_query($query);
while ($res = mysql_fetch_array($controle)){
$letter=stripslashes($res['LETTER']) ;
echo $letter ."<br>";
}
//resultaat a + A ipv enkel a
Gewijzigd op 01/01/1970 01:00:00 door Gustaaf
Zet de letters gewoon in een array!
Ik zie het nut er écht niet van in om de letters in de db te zetten.. Maakt het je nog moeilijk ook *_*
Het probeem dat je nu hebt, is niet eenvoudig op te lossen in MySQL, je zult andere datatypes en/of instellingen moeten gaan gebruiken. Verder maakt het nogal uit welke character set je gebruikt, ook daar gaat vaak een hoop fout in MySQL.
Kijk eens naar een VARBINARY of BLOB, stel deze in op UTF8 en configureer je database zo dat deze alles afkeurt wat fout is. Normaal krijg je van MySQL de nodige onzin retour wanneer je wat fout doet, met STRICT krijg je een (redelijk) bruikbare foutmelding retour. Wel zo handig.
Wellicht is het handiger om een betere database te gebruiken, dan bestaan deze problemen niet meer.
Wel raar dat dat niet kan.
Groetjes
Gustaaf
Gustaaf schreef op 16.12.2008 13:15:
Je gebruikt MySQL, de meest brakke database in human history. En dan nog vind je het gek dat dingen niet kunnen en/of dat de database de grootst mogelijke onzin uitpoept? Ga je eens verdiepen in de vele, vele bugs (of volgens MySQL "functionaliteiten") waarmee je wordt lastiggevallen. Dingen die wiskundig helemaal niet kunnen, worden door MySQL als correct antwoord retour gegeven...Wel raar dat dat niet kan.
MySQL is 100% onbetrouwbaar en je maakt alleen een redelijke kans wanneer je de boel correct hebt geconfigureerd en het onmogelijk hebt gemaakt dat users runtime de configuratie-instellingen weer aanpassen. Bij shared hosting zul je dit zelden of nooit tegenkomen.
Volgens mij heeft hij wat naars mee gemaakt met een MySQL database.
Creapy :/
Valt mee hoor, MySQL levert mij keer op keer een hoop werk op, dus wat dat betreft zou ik het eigenlijk meer moeten promoten. Wanneer iedereen overstapt op een goede database, zou ik zomaar werkloos kunnen worden...
Het is nergens voor nodig om aan te modderen met MySQL wanneer je voor minder geld een betere database zoals bv. PostgreSQL of Firebird tot je beschikking krijgt. MySQL is dankzij de vele bugs namelijk veel duurder in het bouwen, testen en debuggen dan een database die bij fouten direct begint te steigeren. Daarnaast is MySQL beperkt wanneer het aankomt op performance, dit kost je weer extra (dure) servers wanneer je toch de benodigde snelheid moet zien te halen.
Dit is makkelijk op te lossen, standaard maakt MySQL gebruik van een case-insensitve collation. Als je via phpMyAdmin naar je tabel gaat en vervolgens het field aanpast kan je dit aanpassen.
Standaard is de collation bij mij 'latin1_swedish_ci' (_ci = case insensitive) als je dit veranderd naar 'latin1_general_cs' (_cs = case sensitive) wordt het hoofdletter gevoelig.
Zie ook http://dev.mysql.com/doc/refman/5.1/en/case-sensitivity.html.
volgens mij wilt ie t per query kunnen 'beheren'
Dennis Mertens schreef op 16.12.2008 13:24:
Daar hebben we onze anti-MySQL gassie weer.
Volgens mij heeft hij wat naars mee gemaakt met een MySQL database.
Creapy :/
Volgens mij heeft hij wat naars mee gemaakt met een MySQL database.
Creapy :/
Juist ja, en volgens mij heb jij een overduidelijk sextekort en probeer je hier iedereen te flamen.
Respecteer anderen en al helemaal als zij meer weten dan jij ;-) (En voordat je hierover door gaat, wat mijn bedoeling niet is, ik zeg niet dat ik meer weet dan jij, maar wél dat pgFrank meer weet dan jij, al helemaal op database niveau ;-)
M-D schreef op 16.12.2008 15:50:
Als je nou eens gewoon helpt, in plaats van MySQL te gaan zitten flamen.
hij heeft mij al meer dan Eens geholpen dus graag dat soort uitspraken voor je houden.
buiten het feit dat hij gewoon gelijk heeft.
Dank voor deze tip M-D want het werkt zoals ik het graag had ...
Groetjes
Gustaaf
Het volgende...
Wanneer iemand zich aanmeld als klant en de persoon in kwestie kiest een gebruikersnaam die niet begint met een hoofdletter, maar ik wil wanneer ik de klant aanspreek met zijn gebruikersnaam een hoofdletter...
Dus: gebruikersnaam: pietjepuk
Maar in email o.i.d.: Hallo Pietjepuk!
Hoe doe ik dat dan?
ucfirst erover te halen, maar let erop dat dit niet gebruikersvriendelijk is, omdat de gebruiker dit niet verwacht (als er een hoofdletter moet staan zorgt de gebruiker er wel voor). Met gewone voor- en achternamen is het anders.
dat doe je door met php ucfirst().