ik will gegevens uit mijn formulier opslaan in een database,
dat lukt allemaal aardig, alleen als ik in een veld niets invul, wordt er een 0 in mijn database gezet,in plaats van de standaard NULL.
moet ik ergens bij het input value="" een bepaalde waarde zetten in mijn formulier?
Pascal, je kunt een standaardwaarde invullen bij de structuur van de tabel in myphpadmin
Dat klopt, die staat op NULL.
Maar als ik nu een veld leeg laat bij het formulier, van zet ie in de tabel het cijfer 0 en laat deze niet op NULL staan
Als ik handmatig de value in mijn query op NULL zet schrijft ie het wel goed weg, als ik de $_POST controleer of die leeg is en dan op NULL zet werkt dat niet,
de query ziet er dan anders uit

SQL = "INSERT INTO status (idusers, idhond, aandacht, teamwork)VALUES ('".$_POST['idusers']."', '".$_POST['idhond']."','".$_POST['aandacht']."', NULL)";

als ik bovenstaande gebruik werkt het wel

SQL = "INSERT INTO status (idusers, idhond, aandacht, teamwork)VALUES ('".$_POST['idusers']."', '".$_POST['idhond']."','".$_POST['aandacht']."', '".$_POST['teamwork']."');

bovenstaande niet, als ik $_POST['teamwork'] op NULL zet wordt de waarde in de query '"NULL"' en niet NULL

iemand een idee?
een NULL is heel iets anders als een "NULL". De tweede is een string of een lap tekst. Je moet php scheiden van sql. Echo je query eens. Dat is dan sql waarin je de values niet tussen qoutes hoeft te plaatsen tenzij het een string is
ik heb de query eens ge-echoed
dan krijg ik het volgende:
INSERT INTO status (datum, idusers, idhond, aandacht, spelen) VALUES (STR_TO_DATE('23-03-2013', '%d-%m-%Y'), '1', '1', '34', '')

als waarde voor aandacht heb ik 34 op gegeven en voor spelen heb ik niets ingevuld in het formulier.
sql ziet '' als 0, maar om een lege waarde te krijgen moet ik daar NULL op de plaats van '' krijgen.

de query moet dan worden:
INSERT INTO status (datum, idusers, idhond, aandacht, spelen) VALUES (STR_TO_DATE('23-03-2013', '%d-%m-%Y'), '1', '1', '34', NULL)

Even terug naar de basis, want volgens mij probeer je een probleem op te lossen dat je helemaal niet hoeft op te lossen.

Het gebruik van NULL in een (relationele) database is in principe iets dat je zou moeten vermijden. Ik zal er geen hele bespiegeling over schrijven (maar er zijn boeken vol over geschreven), dus voor nu zal ik het houden bij het advies om niet NULL te gebruiken, maar een standaard 'lege' waarde, bijvoorbeeld 0.

Dan over je tabel, wat voor type is het veld 'spelen' (INT als ik zou moeten gokken?) en wat is de data die erin staat? Wat houdt het bij, wat zou 0 in dat veld betekenen en waarom is het hebben van 0 daar blijkbaar een probleem voor je?
het type veld is inderdaad INT, in de tabel wordt de status van de oefeningen bijgehouden, in mijn voorbeeldje heb ik er maar een paar genomen omdat ik anders teveel velden moet opschrijven.
per oefening worden punten toegekend, dit kan 0 zijn als de oefening helemaal fout gaat, maar het kan ook zijn dat een oefening niet gedaan is, dan moet er namelijk geen punt worden toegekend aan die oefening ( vandaar de waarde NULL)
als ik dan de statistieken ga bekijken krijg ik een mooie tabel en kan zo zien welke punten per oefening zijn gegeven en welke oefeningen er nog niet zijn gedaan
Begrijp ik dan nu goed dat je per oefening een kolom hebt in je tabel? Dan lijkt het er meer op dat je je database niet goed hebt opgebouwd. Volgens mij kan je beter kijken naar normalisering dan naar het oplossen van dit probleem. Je zou namelijk niet per oefening een kolom moeten hebben, maar een record in een andere tabel. Zo weet je dat een oefening gedaan is doordat er een record voor die oefening (en gebruiker) is. Is er geen record, dan is de oefening niet gedaan. Heb je ook geen probleem meer met die NULL waarde.
ik heb inderdaad per oefening een aparte kolom.
mijn database bestaat uit 4 tabellen: users, geleiders, honden en status, de tabel users is voor de inlog gegevens, de geleiders voor de naam, honden voor naam van de honden en de daaraan gekoppelde geleider

als die persoon inlogt worden de gegevens opgehaald die bij het inlog id horen, dan kan die (mogelijk) kiezen uit de namen van zijn/haar honden en haalt dan de gegevens op uit de tabel status, behorende bij het userid en hondid

zo heb ik de tabel opgebouwd? maar begrijpt dat dit niet juist is.
kun je me dan uitleggen hoe de opbouw dan wel moet zijn, want ik zie even niet hoe ik dat moet gaan doen
Het gaat voornamelijk over die oefeningen. Ik neem aan dat elke hond dus bepaalde oefeningen kan doen en dat die daar punten voor krijgt. Als je goed normaliseert betekent dat een one-to-many relatie: 1 hond, meerdere oefeningen. Je hebt dus een extra tabel nodig die de scores bijhoudt van de oefeningen (en mogelijk ook nog een tabel met de oefeningen zelf). Elk record in die scores tabel krijgt dan het id van de hond, het id van de oefening, de score, datum en wat je mogelijk nog meer moet bijhouden.
Elke keer dat de hond dan een oefening heeft gedaan maak je een record in die scores tabel aan met de genoemde gegevens. Zo weet je precies welke oefeningen zijn gedaan en welke nog niet. Ook hoef je je geen zorgen meer te maken over null waardes, want elk veld in die scores tabel is gedefinieerd op het moment dat je een nieuw record aanmaakt.

Reageren