Just nu i M3-nätverket
Jump to content

måste vara text i rutan?


cybot

Recommended Posts

Hej har en databas php+mysql ...

 

iaf varför kan jag inte lägag till en post om inte alla rutorna är ifyllda har ett formulär.. för att skapa inlägg ibland ska man inte behöva fylla i alla rutor men när man lämnar en ruta tom går det inte att skapa en post ??????

 

jag vill kunna skapa poster utan att ha fyllt i alla rutor.. så här ser databasen ut nu ... det är meddelanderutan jag vill kunna ha helt tom..

 

-----------------------------------------------

 

Field Type Attributes Null Default Extra

---------------------------------------------

datum varchar(100) Yes NULL

id int(11) No auto_increment

namn varchar(100) Yes NULL

arbetstid varchar(100) Yes NULL

arbetstid2 varchar(100) Yes NULL

meddelande varchar(200) No

 

tack !!

Link to comment
Share on other sites

Borde väl räcka med att lägga till NOT NULL islutet.

 

 

------------------------------------------------

Självlärd (MSSQL & VB & ASP)

 

Link to comment
Share on other sites

Att använda NULL i databaser ger onödig overhead tid. Om du använder '' runt texten spelar det ingen roll om variabeln från din form är tom eller inte.

 

 

--------------------------------------------- - -

Microsoft Certified Professional (MSSQL & VB)

 

Link to comment
Share on other sites

Kan du utveckla det där med "overhead tid"?

 

Själv är jag allergisk mot folk som använder tomma strängar för att representera "inget" när man kan ha ett NULL-value till det. NULL och en tom sträng är _inte_ samma sak!

Men hackar man VB, så vet man kanske inte bättre...

 

 

 

 

 

Link to comment
Share on other sites

Magnus Ahlkvist

Nja, eftersom han vill att det _ska_ gå att lägga till null verkar NOT NULL som en dålig idé :)

 

Eftersom jag inte ser koden (och inte skulle kunnat läsa den ändå eftersom jag inte kan php) så är det svårt att lista ut var det blir fel. Tabelldefinitionen ser bra ut om det ska vara möjligt att lägga in tomma värden.

Posta det felmeddelande du får och den kod som körs på sidan så kan du säkert få lite hjälp.

 

 

 

Link to comment
Share on other sites

NULL i databaser är inte samma sak som NULL i textsträngar, dvs asciikod 0. Och givetvis vet jag att tom sträng och null inte är samma sak när det gäller databaser, varför skulle jag annars säga att man inte ska använda NULL? Jag är certifierad i MSSQL o VB, det betyder inte att jag inte programmerar annat. C++ är det jag gillar bäst. Programmerat har jag gjort i 10 år och ser fram emot C#.

 

Men angående att inte använda null i databaser.

"The value NULL means the data value for the column is unknown or not available. NULL is not synonymous with zero (numeric or binary value), a zero-length string, or blank (character value). Rather, null values allow you to distinguish between an entry of zero (numeric columns) or blank (character columns) and a nonentry (NULL for both numeric and character columns)."

 

du vill kanske att jag ska översätta till svenska eller förstår du engelska?

 

--------------------------------------------- - -

Microsoft Certified Professional (MSSQL & VB)

 

 

[inlägget ändrat 2002-02-21 09:17:41 av JonasGauffin]

Link to comment
Share on other sites

Vet inte om jag kan engelska, men det du citerar är ju precis vad jag menar.

Ett NULL-value är samma som "unknown". Man har alltså ingen data. En tom sträng ÄR data. Det kan vara stor skillnad!

 

Ex. vis. COUNT() räknar inte NULL-values, men dock tomma strängar.

 

Att man sen inte ska tillåta NULLs överallt är ju en helt annan sak...

 

Sorry för VB-påhoppet, men ärligt talat tycker jag inte det är något att skryta med...

 

---------------------------------------

Femma i engelska på gymnasiet

 

Link to comment
Share on other sites

Overheadtiden är att att databasen måste göra en speciell jämförelse för att se om värdet är null. Att jämföra mot en tom textsträng går fortare. Sedan lär du själv hantera NULL när du ska visa datat. OK. default som en tom textsträng är inte så smart utan man ska väl ha ett värde som går att presentera för användaren i slutändan, exempelvis "n/a"

 

skryta gör jag inte. Då skulle jag ha radat upp allt jag kan och hur länge jag programmerat, right? Däremot är MS certifieringar en pain in the ass..

 

--------------------------------------------- - -

Microsoft Certified Professional (MSSQL & VB)

 

Link to comment
Share on other sites

litet tillägg. Om man har definerat en kolumn med NULL så spelar det ingen roll ifall man har '' på alla tomma rader för databasmotorn gör endåså NULL kontrollen på alla rader eftersom kolumnen är definerad att kunna använda NULL.

 

 

--------------------------------------------- - -

Microsoft Certified Professional (MSSQL & VB)

 

Link to comment
Share on other sites

Overheadtiden är att att databasen måste göra en speciell jämförelse för att se om värdet är null.

 

DBMS använder en extra byte (eller bit) i kolumnen för att markera att något är null. Hur det skulle vara mer kostsamt att se om en byte är 0 än att jämföra två strängar har jag svårt att se.

 

Om man har definerat en kolumn med NULL så spelar det ingen roll ifall man har '' på alla tomma rader för databasmotorn gör endåså NULL kontrollen på alla rader eftersom kolumnen är definerad att kunna använda NULL.

 

Jag förstår inte vad du menar.

 

Link to comment
Share on other sites

hehe det har du rätt i! Så kan det gå när man läser lite snabbt.

 

----------------------------------------

Självlärd (MSSQL & VB & ASP)

 

Link to comment
Share on other sites

Tomas Nilsson

asciikod(0) är inte samma sak som NULL.

 

Ex (VB)

 

dim apa

apa = chr(0) & chr(0)

msgbox len(apa)

 

returnerar "2"

 

Dvs, chr(0) räknas som en textsträng. Om man tittar på hur en vartype-struktur ser ut (för VB) finns det en flagga som säjer när informationen är NULL. Jag misstänker att det är samma sak i C#, dvs en sträng kan vara NULL, chr(0) eller annat.

 

/Tomas

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...