"We are back" « oc.at

Solved: PHP - UPPER() Function ??

grOOvekill@ 25.06.2003 - 09:32 569 6
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Sgott,

also, ich versuche nun schon seit geraumer Zeit folgendes Problem zu lösen, krieg's aber nicht hin.

Ich habe eine Eingabemaske, in der unter anderem ein Name und eine Stundenanzahl eingegeben wird. Diese werden dann mit den anderen Daten bei einem Klick auf Speichern in eine mysql Datenbank gepfeffert. Gut.

Nun muß ich aber eine Gesamtstundenanzahl berechnen und zwar für jeden einzelnen Namen, der eingegeben wurde. Hierbei muß ich aber berücksichtigen, daß die Leute einmal Hans, dann hans oder HaNs schreiben. Dazu kann ich doch den eingegebenen String einfach mittels der Funktion upper() in Grossbuchstaben umwandeln, oder? Nur haut des leider bei mir nicht hin.

Hier mal das, was ich geschrieben habe:
if ($zeile[name] == UPPER("Christoph")){
$stunden_christoph += $zeile[anzstd];
}

Aber des geht leider net. Irgendwelche Ideen?
Bearbeitet von grOOvekill@ am 25.06.2003, 11:59

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
du musst den namen aus dem queryresult mit upper in großbuchstaben umwandeln und dann mit z.b. CHRISTOPH vergleichen

oder du lässt das die datenbank für dich erledigen =)

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
der trick is das du beides in grossbuchstaben verwandelst fuer den vergleich ;)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Also so sollte das funktionieren?

if (UPPER($zeile[name]) == "HERLIND"){
$stunden_herlind += $zeile[anzstd];
}

Tut es aber nicht. :(

UNd wie könnte ich das die Datenbank für mich erledigen lassen? Auf die Idee bin ihc noch gar nicht gekommen.

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
naja, du kannst z.b. case-unsensitive nach einem namen selecten und dann die summe errechnen lassen

edit: afair ist der LIKE operator caseunsensitive
Bearbeitet von manalishi am 25.06.2003, 10:30

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
mysql string functions: http://www.mysql.com/doc/en/String_functions.html
string comparsion: http://www.mysql.com/doc/en/String_..._functions.html
case sensitivity: http://www.mysql.com/doc/en/Case_Se..._Operators.html

mit aggregat-funktionen kannst du vermutlich das komplette aufsummieren die db erledigen lassen:

select upper(name),sum(anzstunden) from table group by upper(name);

//edit: mysql aggregatfunktionen: http://www.mysql.com/doc/en/GROUP-BY-Functions.html

//edit2: braucht man immer wieder zum nachschlagen -> added to tutorial-thread.
Bearbeitet von atrox am 25.06.2003, 10:47

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Cool, so hat's funktioniert! Vielen Dank für die Links! :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz