Avatar billede heungsu Nybegynder
27. juni 2002 - 14:50 Der er 12 kommentarer og
1 løsning

variabel er ikke tal!

davs

hvad skal jeg for at en variabel $tal bliver opfattet som  tal? Er der noget man kan skrive for at sige at det skal være et tal og ikke en string.
Avatar billede ghazaleh Nybegynder
27. juni 2002 - 14:54 #1
nej hvis du sætter den = et tal så ved php automatisk at det er et tal
Avatar billede heungsu Nybegynder
27. juni 2002 - 14:56 #2
Hvorfor virker dette så ikke???
$talsomvariabel = 100;
$result = mysql_query("SELECT * FROM database WHERE tal_i_databasde > $talsomvariabel
Avatar billede rasmus_larsen Nybegynder
27. juni 2002 - 14:58 #3
$talsomvariabel = 100;
$result = mysql_query("SELECT * FROM database WHERE tal_i_databasde > $talsomvariabel                                                  ^

$talsomvariabel = 100;
$result = mysql_query("SELECT * FROM database WHERE tal_i_database > $talsomvariabel
Avatar billede tipsen Nybegynder
27. juni 2002 - 14:59 #4
PHP benytter sig af såkaldt weak typing, hvilket betyder at du ikke behøver være så præcis når du deklarerer variable, som eksempelvis er tilfældet med C/C++ som benytter sig af strong typing.

Det fungerer generelt fint, men det kan vist nok i nogle få (meget gustne) tilfælde give problemer og hvis du meget gerne vil være sikker på at php bruger de rigtige typer, kan det angives på følgende måde:

$heltal = (int) 42;
$kommatal = (float) 42.234;
$kommatal2 = (float) 42; //!!!!

Læs mere om typecasting/type juggling på http://dk.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
Avatar billede ztyxx Nybegynder
27. juni 2002 - 15:00 #5
du mangler den en " inden din $result slutter$result = mysql_query("SELECT * FROM database WHERE tal_i_databasde">
Avatar billede tipsen Nybegynder
27. juni 2002 - 15:02 #6
Du kan forøvrigt i dette tilfælde være fløjtende ligeglad med, hvordan php behandler variablen da de oplysninger du sender frem og tilbage til mysql-db'en ALTID er i tekstformat (string) - det kan du også se fra anførselstegnene!

Du bør her i stedet være opmærksom på hvilken datatype du har brugt i mysql-db'en til at gemme tallene i!
Avatar billede heungsu Nybegynder
27. juni 2002 - 15:03 #7
i mit tilfælde er $talsomvariabel dette: $idag = date( "m" )
Hvad skal jeg så skrive for at være sikker på at den opfatter den som tal?
Avatar billede tipsen Nybegynder
27. juni 2002 - 15:08 #8
date("m") giver resultaterne "01", "02", ..., "12" mens date("n") giver "1", "2", ..., "12" som er bedre i dette tilfælde - men det afhænger som sagt også af hvilen felttype du bruger i databasen og selvfølgelig af hvordan data ser ud i databasen!
Avatar billede Slettet bruger
27. juni 2002 - 16:23 #9
$result = set_type($tal, "integer");
if ($result)
  echo "Nu er variablen tal med garanti en integer";

Se endvidere: http://dk.php.net/manual/en/function.settype.php
Avatar billede knas Nybegynder
27. juni 2002 - 18:01 #10
Kan det skulle se sådanne ud?

$talsomvariabel = 100;
$sql = mysql_query("SELECT * FROM database WHERE tal_i_databasde > $talsomvariabel");

while ($result = mysql_fetch_array($sql)){
    echo $result['noget'];
}

Det som tipsen siger er også en faktor der kan spille ind, da (01 != 1) så hvis det er måneden uden foranstående 0, skal du bruge n istedet for m...
Avatar billede tipsen Nybegynder
27. juni 2002 - 19:14 #11
hvis du fortæller, hvad der ligger i din database og viser hvordan dit script ser ud - kan du få rettet fejlene uden alt dette gætteri, som ikke rigtigt fører nogle vegne...
Avatar billede heungsu Nybegynder
28. juni 2002 - 11:59 #12
OK! sådan ser det ud:

$idag = date( "nd" );
$db = mysql_connect("localhost", "bruger", "password");
mysql_select_db("database");

$result = mysql_query("SELECT * FROM tbl_bday order by birthday WHERE birthday > $idag LIMIT 0,4");   
while ($row = mysql_fetch_object($result)) {

Birthday er defineret som Integer i tabellen.

Den kommer med denne fejl-besked: Warning: Supplied argument is not a valid MySQL result resource ... on line 117
I linje 117 står dette: while ($row = mysql_fetch_object($result)) {

Kan i se en fejl?
Avatar billede heungsu Nybegynder
28. juni 2002 - 13:36 #13
nå...fik det til at virke. Tak for hjælpen
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