DESC en ASC? Getal fout?
van: -4.2 of 3.0 graden enz. alleen wat het probleem is,
Als ik probeer het laagste getal te pakken , dan pakt hij 0.0 graden :O en niet -4.2
Heeft iemand een iedee hoe ik dit kan aanpassen?
Ik heb een iedee dat het aan de database structuur ligt, Kan iemand mij misschien verder helpen?
Dit is nu de tabel die ik nu gebruik:
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
Heel erg bedankt alvast.
Groetjes, Grongere
En wanneer je het zou laten zien zou je met php altijd nog -4.2 van kunnen maken.
Het is wel mogelijk, alleen ik weet niet of je ook in de - kunt gaan bij Php?
Quote:
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,[/quote
Wat ben je hier van plan? Windkracht "pannekoek"? En windsnelheid "hamburger"? En wacht je van datum "Frankrijk" ? Dit zijn volgens jouw datamodel allemaal geldige waardes, jij wilt tenslotte text opslaan.
Geen wonder dat het dan fout gaat. Kies de JUISTE datatypes en jouw problemen verdwijnen als sneeuw voor de zon.
@Kima: Sinds wanneer zou een database niet met negatieve getallen kunnen werken?
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,[/quote
Wat ben je hier van plan? Windkracht "pannekoek"? En windsnelheid "hamburger"? En wacht je van datum "Frankrijk" ? Dit zijn volgens jouw datamodel allemaal geldige waardes, jij wilt tenslotte text opslaan.
Geen wonder dat het dan fout gaat. Kies de JUISTE datatypes en jouw problemen verdwijnen als sneeuw voor de zon.
@Kima: Sinds wanneer zou een database niet met negatieve getallen kunnen werken?
Ik zal dan toch maar even moeite doen om het uit te leggen. Je veldtypes zijn helemaal fout. Een getal moet als een inttype aangegeven worden (BIGINT, INT, TINYINT, etc.). Een string moet met CHAR of VARCHAR aangegeven worden en een datum met DATETIME of DATE. Pas als je veldtypes goed staan, kun je optimaal gebruik maken van SQL.
ik had het zelfde probleem. Je veld type ( datatype ) is nu text.. Hierdoor leest ie het niet goed uit. Maar er eens INT van of, nee je hebt komma`s dus je moet er waarschijnlijk DOUBLES van maken. Hierdoor kun je het wel opslaan.
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.
Want als ik het met int doe, als ik bijv. -1.1 invoer, rond hij af op -2? Hoe kan dat?
En doubles geeft een error
wil je misschien die tabel maken zodat het wel werkt?
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
id , graden , plaats, windkracht, windsnelheid en datum moet er inzitten.
pgFrank schreef op 16.02.2009 22:13:
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.
Bij Decimal , pakt hij het ook niet goed, Want dan rond hij telkens af op 1 getal
Grongere schreef op 16.02.2009 22:13:
Ik kom er nog niet helemaal uit.
Want als ik het met int doe, als ik bijv. -1.1 invoer, rond hij af op -2? Hoe kan dat?
En doubles geeft een error
wil je misschien die tabel maken zodat het wel werkt?
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
id , graden , plaats, windkracht, windsnelheid en datum moet er inzitten.
Want als ik het met int doe, als ik bijv. -1.1 invoer, rond hij af op -2? Hoe kan dat?
En doubles geeft een error
wil je misschien die tabel maken zodat het wel werkt?
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
id , graden , plaats, windkracht, windsnelheid en datum moet er inzitten.
Jezpur:
Ik zal dan toch maar even moeite doen om het uit te leggen. Je veldtypes zijn helemaal fout. Een getal moet als een inttype aangegeven worden (BIGINT, INT, TINYINT, etc.). Een string moet met CHAR of VARCHAR aangegeven worden en een datum met DATETIME of DATE. Pas als je veldtypes goed staan, kun je optimaal gebruik maken van SQL.
pgFrank:
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.
DECIMAL(4,2)
4 cijfers waarvan 2 decimalen. Wat heb jij er van gemaakt?
TEXT, CHAR en VARCHAR gebruik je alleen wanneer er geen betere datatypes zijn en die zijn er vrijwel altijd. In jouw tabelletje mag je alle kolommen met TEXT gaan omzetten naar betere datatypes, TEXT slaat hier echt nergens op. De kolom "plaats" maak je een VARCHAR van en de rest geef je passende datatypes.
Ps. Onthou het woord "pannekoek" en vul deze eens in. Bevat jouw tabel dan nog bruikbare data? Lijkt me sterk...
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Waarom rond hij het getal bij Doubles af? en bij int, Decimal enz.
CREATE TABLE weer (
id int(150) NOT NULL auto_increment,
graden decimal collate latin1_general_ci,
plaats varchar collate latin1_general_ci,
windkracht int collate latin1_general_ci,
windsnelheid int collate latin1_general_ci,
datum datetime collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
Klopt dit wel?
Grongere schreef op 16.02.2009 22:18:
Hij rondt niks af, jij maakt een fout en wil deze niet laten zien. Hoe denk je dat wij jou nu kunnen helpen???Waarom rond hij het getal bij Doubles af? en bij int, Decimal enz.
En heb je al eens in de handleiding gekeken hoe je nu het juiste datatype moet aanmaken?
Quote:
graden decimal collate latin1_general_ci,
Zie mijn reactie van 16.02.2009 22:18, daar staat de oplossing al.
Voortaan zelf even in de handleiding kijken, daar staat dit allemaal in.
Edit:
id int(150) NOT NULL auto_increment,
Die INT is ook weer een bijzonder datatype, 150, wat moet dat voorstellen? Je hebt een INT en een INT, maar een INT(150) ?
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Sorry hoor. Ik ben niet goed in php, en heb het nog niet doorgelezen.
Grongere schreef op 16.02.2009 22:23:
Komt goed uit, dit heeft ook helemaal niets met PHP te maken.Sorry hoor. Ik ben niet goed in php, en heb het nog niet doorgelezen.
SQL is compleet wat anders dan PHP, heeft er niets mee te maken.
:P dat bedoel ik niet xd Nouwja verkeerd getypt :)