Avatar billede d.kryger Praktikant
09. maj 2005 - 10:06 Der er 7 kommentarer og
1 løsning

Tjekke om tal er gyldigt

Hej eksperter.

Kan nogen hjælpe mig med at tjekke om $_POST["pris"] er et gyldigt tal. Tallet der indtastes skal se sådan ud: 1000,50 eller 1000. Man behøver altså ikke nogen decimaler. Men det må ikke indtaste en tusindtalsseparator (.) så skal der komme en fejl. $_POST["pris"] må heller ikke indeholde nogle bogstaver, kun tal.

Min kode ser sådan ud:
if (trim($_POST["pris"])=="")
{
print "<font face='Verdana' color='#CC0000' size='1'><b>Der skal indtastes en pris.</b><br></font>";
$fejl = true;
}
Avatar billede jm0_ Nybegynder
09. maj 2005 - 10:12 #1
Jeg kan ikke hjælpe dig med de fejlbeskeder "Kun tal".

Men kan dog hjælpe dig med at tjekke om tallet er gyldigt. Eller om $_POST[pris] er lig med 1000 :)

if($_POST['pris'] == 1000,50){
// hvis pris er 1000,50
}else{
// hvis prisen ikke er 1000,50
}
Avatar billede d.kryger Praktikant
09. maj 2005 - 10:24 #2
Tak, men det var nu ikke lige det jeg manglede... Tallet kan være alt muligt og ikke kun 1000,50. Dette er kun et eks.
Avatar billede saucer Nybegynder
09. maj 2005 - 10:29 #3
Jeg har lige fundet et par funktioner fra php.net som du måske kan bruge :

Til at finde ud af om der er bogstaver i variablern skal du nok bruge denne funkrion:
http://dk.php.net/manual/en/function.eregi.php


noget i stil med

eregi("$[a-z æøå_-]^");

Og tal format :

http://dk.php.net/manual/en/function.number-format.php
http://dk.php.net/manual/en/function.round.php
Avatar billede coderdk Praktikant
09. maj 2005 - 11:09 #4
if ( !empty( $_POST['pris'] ) && preg_match( '/^\d+(,\d)?$', $_POST['pris'] ) )
{
  // tallet er ok
}
Avatar billede coderdk Praktikant
09. maj 2005 - 11:10 #5
Erh, ja, mangler et +:

if ( !empty( $_POST['pris'] ) && preg_match( '/^\d+(,\d+)?$', $_POST['pris'] ) )
{
  // tallet er ok
}
Avatar billede jm0_ Nybegynder
09. maj 2005 - 11:19 #6
ah, misforstod dit spg så :p
Avatar billede d.kryger Praktikant
09. maj 2005 - 13:49 #7
coderdk -> Jeg har nu prøvet din kode, men jeg kan ikke få det til at virke efter hensigten.

Jeg har lavet koden sådan (Fejlkoden skal naturligvis kun komme hvis der er fejl):
if (empty($_POST['pris']) && preg_match('/^\d+(,\d+)?$', $_POST['pris']))
{
print "<font face='Verdana' color='#CC0000' size='1'><b>Der skal indtastes en pris.</b><br></font>";
$fejl = true;
}

Jeg jeg indtaster et ugyldigt tal eller bogstav kommer der ikke nogen fejl...
Hvad går der galt?
Avatar billede coderdk Praktikant
09. maj 2005 - 16:36 #8
Du har glemt et !:

if (!empty($_POST['pris']) && preg_match('/^\d+(,\d+)?$', $_POST['pris']))
{
print "<font face='Verdana' color='#CC0000' size='1'><b>Der skal indtastes en pris.</b><br></font>";
$fejl = true;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester