Avatar billede kasim Nybegynder
01. januar 2008 - 17:52 Der er 9 kommentarer

Tjek om det er tal

Hej, jeg vil have at den skal tjekke på $antal er et tal sådan at hvis det ikke er tal så giver den fejl. En der kan finde fejlen?

<?
session_start();
include "sql.php";

$username = $_SESSION['username'];
if($side=="overforelsel") {
$select_over = mysql_query("SELECT * FROM users WHERE(username='$username')");
$row_over = mysql_fetch_array($select_over);
echo "<form action='?side=overfor' method='post'>
Brugernavn: <input type='text' name='bruger'><br>
Antal Credits: <input type='text' name='antal'>
<input type='submit' value='Overfør'>";
}
if($side=="overfor") {
if(empty($bruger) OR empty($antal)) {
echo "Du mangler noget!";
}
elseif(eregi("[^a-z æøåÆØÅ]",$_POST["antal"])) {
$fejl[] = "Dit antal skal være tal!";
}else{
$bruger = $_POST["bruger"];
$antal = $_POST["antal"];
mysql_query("UPDATE users SET credits=credits-$antal WHERE(username='$username')");

mysql_query("UPDATE users SET credits=credits+$antal WHERE(username='$bruger')");
echo "Overført!";
}
}
?>
Avatar billede roenving Novice
01. januar 2008 - 17:58 #1
Den checker vel kun eet tegn ...

måske

elseif(!eregi("^\d+$",$_POST["antal"])) {
Avatar billede arne_v Ekspert
01. januar 2008 - 18:05 #2
Avatar billede kasim Nybegynder
01. januar 2008 - 18:17 #3
Nej den tjekker tallet fx. 15 Og hvis det er skrevet et bogstav skulle den gerne give en fejl men det gør den ikke
Avatar billede gf Nybegynder
01. januar 2008 - 18:23 #4
Hvad med noget i retningen af:

if (!ereg("[a-å]", $variabelnavn){
//Det er et tal
} else {
// Der er et bogstav i
}

mvh gf
Avatar billede gf Nybegynder
01. januar 2008 - 18:32 #5
Du kunne jo også lave "snigeren" og dividere med en og tjekke om det giver et helt tal :)

mvh gf
Avatar billede nielle Nybegynder
01. januar 2008 - 20:21 #6
Brug preg_xxxx() funktionerne - de er bedre, og desuden er ereg_xxx() funktionerne på vej til at blive udfaset af PHP.

<?
session_start();
include "sql.php";

$username = $_SESSION['username'];
if ($side=="overforelsel") {
    $select_over = mysql_query("SELECT * FROM users WHERE(username='$username')");
    $row_over = mysql_fetch_array($select_over);
    echo "<form action='?side=overfor' method='post'>
    Brugernavn: <input type='text' name='bruger'><br>
    Antal Credits: <input type='text' name='antal'>
    <input type='submit' value='Overfør'>";
}

if ($side=="overfor") {
    if (empty($bruger) OR empty($antal)) {
        echo "Du mangler noget!";
    } elseif (! preg_match("/^$\d+$/", $_POST["antal"])) {
        $fejl[] = "Dit antal skal være et heltal!";
    } else {
        $bruger = $_POST["bruger"];
        $antal = $_POST["antal"];

        mysql_query("UPDATE users SET credits = credits - $antal WHERE username = '$username')");
        mysql_query("UPDATE users SET credits = credits + $antal WHERE username = '$bruger')");
        echo "Overført!";
    }
}
?>
Avatar billede nielle Nybegynder
01. januar 2008 - 20:48 #7
En af de ting som ereg_xxxx() ikke kender er "\d".

Derfor skal roenving's kode ændres fra:

elseif(!eregi("^\d+$",$_POST["antal"])) {

til:

elseif(!ereg("^[0-9]+$",$_POST["antal"])) {
Avatar billede erikjacobsen Ekspert
01. januar 2008 - 20:49 #8
Jeg tror ikke du mener
    } elseif (! preg_match("/^$\d+$/", $_POST["antal"])) {
men
    } elseif (! preg_match("/^\d+$/", $_POST["antal"])) {

Må der være et minus foran tallet?
Avatar billede nielle Nybegynder
01. januar 2008 - 20:57 #9
Hmmm, ja. En stavebøf der :^|
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