Timestamp mysql

Status
Niet open voor verdere reacties.

jacobboersma

Gebruiker
Lid geworden
11 sep 2007
Berichten
428
Hoe kan ik de timestamp laten werken in mysql. Moet ik dan nog wat aangeven in php? En hoe moet ik een radiobutton wegschrijven in mysql?

Hier is het script.
PHP:
<body bgcolor="#c1fcc1">
<h2></h2>
<h3>6 juni 2009<h3/>
<script type='text/javascript'>
function notEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus();
		return false;post1.php
	}
	return true; sqlconnect.php
}
</script>
<form action="sqlconnect.php" method="post" name="form1">  >
<fieldset><legend>Persoonsgegevens</legend>
Voornaam:&nbsp;<input name="requiredVoornaam" type="text" id="req1"><br>
Tussenvoegsel:&nbsp;<input name="Tussenvoegsel" type="text" id="tussenvoegsel"><br>
Achternaam:&nbsp;<input name="Achternaam" type="text" id="reg1"><br>
Straatnaam:&nbsp;<input name="Straatnaam" type="text" id="req1"><br>
Huisnummer:&nbsp;<input name="Huisnummer" type="text" id="req1"><br>
Postcode:&nbsp;<input name="Postcode" type="text" id="req1"><br>
Woonplaats:&nbsp;<input name="Woonplaats" type="text" id="req1"><br>
Telefoonnummer:&nbsp;<input name="Telefoonnummer" type="text" id="req1"><br>
E-mailadres:&nbsp;<input name="Emailadres" type="text" id="e-mailadres"><br>
Geboortedatum:&nbsp;<input name="Geboortedatum" type="text" id="req1"><br>
</fieldset>
<BR>
<fieldset><legend>Aantallen</legend>
Aantal kaarten lange route:&nbsp;<input name="Aantal_L" type="text" id="req1" VALUE="0"><br>
Aantal kaarten korte route:&nbsp;<input name="Aantal_K" type="text" id="req1" VALUE="0"><br>
</fieldset>
<BR>
<fieldset><legend>Betalingsgegevens</legend>
Automatische incasso<br>
Ja:<input name="Automincasso" value="Ja" onclick="javascript:document.getElementById('specialfield').style.display='inline';" type="radio" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Nee:<input name="Automincasso" value="Nee" onclick="javascript:document.getElementById('specialfield').style.display='none';" type="radio" /><BR>
<span id="specialfield">Bankrekeningnummer:&nbsp;<input name="Bankrekeningnummer"type="text" id="riq1" /></span>
<BR>
Vraag a:<input name="vraag" value="antwoord1" onclick="javascript:document.formuliernaam.knipperveld.disabled=false" type="radio" />
Vraag b:<input name="vraag" value="antwoord2" onclick="javascript:document.formuliernaam.knipperveld.disabled=true" type="radio" />

Het fantastische veld dat aan of uit moet: <input name="knipperveld" disabled="disabled" type="text" />
</fieldset>
<BR>
<fieldset>
Opmerkingen:<br>
<textarea name="opmerkingen" cols="40" rows="5" id="opmerkingen"></textarea>
</fieldset>
<br>
<input name="Reset "type="reset" id="Reset" Value="Leegmaken">
<input type='submit' 
	onclick="notEmpty(document.getElementById('req1'), 'U moet één of meerdere verplichte velden invullen!')"
	value='Volgende' />



</form>
<body>
 
Laatst bewerkt:
Een timestamp hoort doorgaans niet thuis in een database. Gebruik DATETIME, dat werkt een stuk prettiger.
 
Een timestamp hoort doorgaans niet thuis in een database. Gebruik DATETIME, dat werkt een stuk prettiger.

Het is de bedoeling dat de datum en de tijd worden weggeschreven als de rest ook wordt weggeschreven. Moet ik dan ook gewoon DATETIME gebruiken?
 
Laatst bewerkt:
Het verschil tussen DATETIME en TIMESTAMP is dat je DATETIME zelf moet vullen en dus een aanpassing moet doen in php. Bij TIMESTAMP hoeft dat niet en wordt dit door mysql zelf gevuld. Wat het handigste is kun je het beste zelf bepalen.

Mocht je voor TIMESTAMP kiezen heb je hier een aantal variaties in:

  1. Om de timestamp alleen te laten aanpassen bij toevoegen (insert) van een rij aan de database moet de kolom de volgende eigenschap hebben:
    PHP:
    timestamp default CURRENT_TIMESTAMP
  2. Om de timestamp alleen aan te laten passen bij bijwerken (update) van een rij in de database moet de kolom de volgende eigenschap hebben:
    PHP:
    timestamp default 0 ON UPDATE CURRENT_TIMESTAMP
  3. Standaard is een combinatie van deze twee, dus timestamp wijzigen bij toevoegen en bijwerken van een rij in de database. Dan moet de kolom deze eigenschap hebben (dus zonder default waarde):
    PHP:
    timestamp
    of
    PHP:
    timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  4. Laatste optie geen automatische timestamp, dus dezelfde werking als datetime:
    PHP:
    timestamp default 0

Radiobuttons wegschrijven in de database kan op verschillende manieren, afhankelijk van wat je in de database wilt zetten:
boolean = true, false
tinyint = 0,1,2,enz.. (= nummeriek)
enum = '0','1','2','4' of 'veel','gemiddeld','weinig' of 'juist', 'onjuist' (= tekst)

Mogelijkheden genoeg dus. Mijn advies is om de oplossing te kiezen die jou het handigste lijkt. Succes!
 
Waar moet ik dat van timstamp weg zetten. Ik heb in de database nu dit staan.(zie Bijlage)
 

Bijlagen

  • sql.jpg
    sql.jpg
    80,5 KB · Weergaven: 49
Laatst bewerkt door een moderator:
Dit is genoeg, met het vinkje bij current_timestamp geef je aan dat je voor optie 1 kiest.
 
Wat werkt er niet? Wanneer je gegevens aan de tabel toevoegd en dit weer opvraagt, hoe ziet dat er dan uit?
 
Wat werkt er niet? Wanneer je gegevens aan de tabel toevoegd en dit weer opvraagt, hoe ziet dat er dan uit?

Als ik met het PHP formulier de gegevens naar MYSQL stuur. Krijg ik geen gegevens in de kolom timstamp. Als ik de gegevens in PHP myadmin invoer komt er wel een timstamp. Er zit dus ergens een foutje. Maar ik kom er nog niet achter
 
Dat is vreemd, komen de rest van de gegevens wel in de tabel te staan wanneer je het php formulier gebruikt? Geeft het formulier een foutmelding? Misschien kun je dat stukje php hier eens plaatsen? Het gaat dan vooral om het stuk: mysql_query(" insert into......enz....
 
Dat is vreemd, komen de rest van de gegevens wel in de tabel te staan wanneer je het php formulier gebruikt? Geeft het formulier een foutmelding? Misschien kun je dat stukje php hier eens plaatsen? Het gaat dan vooral om het stuk: mysql_query(" insert into......enz....

de rest van de gegevens komen wel in de database. Hier bij de php code voor het verbinden met SQL.
PHP:
<?php
$con = mysql_connect("","","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("", $con);
$sql="INSERT INTO Inschrijvingen (Timestamp, Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Postcode, Woonplaats, Telefoonnummer, Emailadres, Aantal_L, Aantal_K, Automincasso, Bankrekeningnummer)
VALUES
('$_POST[Timestamp]','$_POST[Voornaam]','$_POST[Tussenvoegsel]','$_POST[Achternaam]','$_POST[Straatnaam]','$_POST[Huisnummer]','$_POST[Postcode]','$_POST[Woonplaats]','$_POST[Telefoonnummer]','$_POST[Emailadres]','$_POST[Aantal_L]','$_POST[Aantal_K]','$_POST[Automincasso]','$_POST[Bankrekeningnummer]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";
mysql_close($con)
?>

En nog het script van het formulier.
PHP:
<body bgcolor="#c1fcc1">
<h2></h2>
<h3>6 juni 2009<h3/>
<script type='text/javascript'>
function notEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus();
		return false;post1.php
	}
	return true; sqlconnect.php
}
</script>
<form action="sqlconnect.php" method="post" name="form1">
<fieldset><legend>Persoonsgegevens</legend>
Voornaam:&nbsp;<input name="Voornaam" type="text" id="req1"><br>
Tussenvoegsel:&nbsp;<input name="Tussenvoegsel" type="text" id="tussenvoegsel"><br>
Achternaam:&nbsp;<input name="Achternaam" type="text" id="reg1"><br>
Straatnaam:&nbsp;<input name="Straatnaam" type="text" id="req1"><br>
Huisnummer:&nbsp;<input name="Huisnummer" type="text" id="req1"><br>
Postcode:&nbsp;<input name="Postcode" type="text" id="req1"><br>
Woonplaats:&nbsp;<input name="Woonplaats" type="text" id="req1"><br>
Telefoonnummer:&nbsp;<input name="Telefoonnummer" type="text" id="req1"><br>
E-mailadres:&nbsp;<input name="Emailadres" type="text" id="e-mailadres"><br>
Geboortedatum:&nbsp;<input name="Geboortedatum" type="text" id="req1"><br>
</fieldset>
<BR>
<fieldset><legend>Aantallen</legend>
Aantal kaarten lange route:&nbsp;<input name="Aantal_L" type="text" id="req1" VALUE="0"><br>
Aantal kaarten korte route:&nbsp;<input name="Aantal_K" type="text" id="req1" VALUE="0"><br>
</fieldset>
<BR>
<fieldset><legend>Betalingsgegevens</legend>
Automatische incasso<br>
Ja:<input name="Automincasso" value="Ja" onclick="javascript:document.getElementById('specialfield').style.display='inline';" type="radio" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Nee:<input name="Automincasso" value="Nee" onclick="javascript:document.getElementById('specialfield').style.display='none';" type="radio" /><BR>
<span id="specialfield">Bankrekeningnummer:&nbsp;<input name="Bankrekeningnummer"type="text" id="riq1" /></span>
</fieldset>
<BR>
<fieldset>
Opmerkingen:<br>
<textarea name="opmerkingen" cols="40" rows="5" id="opmerkingen"></textarea>
</fieldset>
<br>
<input name="Reset "type="reset" id="Reset" Value="Leegmaken">
<input type='submit' 
	onclick="notEmpty(document.getElementById('req1'), 'U moet één of meerdere verplichte velden invullen!')"
	value='Volgende' />



</form>
<body>
 
Laatst bewerkt:
In je eerste stukje php-code staat de timestamp opgenomen. Dat hoeft niet, de timestamp wordt door mysql zelf gevuld zodra er een regel in de database gezet wordt. Je krijgt dan dit:
PHP:
<?php 
$con = mysql_connect("","",""); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("Inschrijving09", $con); 
$sql="INSERT INTO Inschrijvingen (Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Postcode, Woonplaats, Telefoonnummer, Emailadres, Aantal_L, Aantal_K, Automincasso, Bankrekeningnummer) 
VALUES 
('$_POST[Voornaam]','$_POST[Tussenvoegsel]','$_POST[Achternaam]','$_POST[Straatnaam]','$_POST[Huisnummer]','$_POST[Postcode]','$_POST[Woonplaats]','$_POST[Telefoonnummer]','$_POST[Emailadres]','$_POST[Aantal_L]','$_POST[Aantal_K]','$_POST[Automincasso]','$_POST[Bankrekeningnummer]')"; 
if (!mysql_query($sql,$con)) 
  { 
  die('Error: ' . mysql_error()); 
  } 
echo "1 record added"; 
mysql_close($con) 
?>
 
In je eerste stukje php-code staat de timestamp opgenomen. Dat hoeft niet, de timestamp wordt door mysql zelf gevuld zodra er een regel in de database gezet wordt. Je krijgt dan dit:
PHP:
<?php 
$con = mysql_connect("","",""); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("Inschrijving09", $con); 
$sql="INSERT INTO Inschrijvingen (Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Postcode, Woonplaats, Telefoonnummer, Emailadres, Aantal_L, Aantal_K, Automincasso, Bankrekeningnummer) 
VALUES 
('$_POST[Voornaam]','$_POST[Tussenvoegsel]','$_POST[Achternaam]','$_POST[Straatnaam]','$_POST[Huisnummer]','$_POST[Postcode]','$_POST[Woonplaats]','$_POST[Telefoonnummer]','$_POST[Emailadres]','$_POST[Aantal_L]','$_POST[Aantal_K]','$_POST[Automincasso]','$_POST[Bankrekeningnummer]')"; 
if (!mysql_query($sql,$con)) 
  { 
  die('Error: ' . mysql_error()); 
  } 
echo "1 record added"; 
mysql_close($con) 
?>

Heel erg bedankt. De timstamp doet het nu. Nu heb ik nog een vraagje. Hij maakt de verplichte velden niet verplicht. Wat doe ik fout?
 
Je laat een javascript-functie notEmpty over een enkele ID draaien.

Aangezien je elk veld zowat die ID hebt gegeven wordt hij telkens overschreven.
Volgens mij hoef je alleen maar wat bij "Geboortedatum" in te vullen.
 
Het verschil tussen DATETIME en TIMESTAMP is dat je DATETIME zelf moet vullen en dus een aanpassing moet doen in php. Bij TIMESTAMP hoeft dat niet en wordt dit door mysql zelf gevuld. Wat het handigste is kun je het beste zelf bepalen.

Mocht je voor TIMESTAMP kiezen heb je hier een aantal variaties in:

  1. Om de timestamp alleen te laten aanpassen bij toevoegen (insert) van een rij aan de database moet de kolom de volgende eigenschap hebben:
    PHP:
    timestamp default CURRENT_TIMESTAMP
  2. Om de timestamp alleen aan te laten passen bij bijwerken (update) van een rij in de database moet de kolom de volgende eigenschap hebben:
    PHP:
    timestamp default 0 ON UPDATE CURRENT_TIMESTAMP
  3. Standaard is een combinatie van deze twee, dus timestamp wijzigen bij toevoegen en bijwerken van een rij in de database. Dan moet de kolom deze eigenschap hebben (dus zonder default waarde):
    PHP:
    timestamp
    of
    PHP:
    timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  4. Laatste optie geen automatische timestamp, dus dezelfde werking als datetime:
    PHP:
    timestamp default 0

Radiobuttons wegschrijven in de database kan op verschillende manieren, afhankelijk van wat je in de database wilt zetten:
boolean = true, false
tinyint = 0,1,2,enz.. (= nummeriek)
enum = '0','1','2','4' of 'veel','gemiddeld','weinig' of 'juist', 'onjuist' (= tekst)

Mogelijkheden genoeg dus. Mijn advies is om de oplossing te kiezen die jou het handigste lijkt. Succes!

Waar in de het script moet staan dat ik ja en nee wil?

Je laat een javascript-functie notEmpty over een enkele ID draaien.

Aangezien je elk veld zowat die ID hebt gegeven wordt hij telkens overschreven.
Volgens mij hoef je alleen maar wat bij "Geboortedatum" in te vullen.

Bedankt hij doet het nu goed. Alleen zodra ik een of meerder velden niet heb ingevuld. Geeft hij een foutmelding als ik die wegklik schrijft hij alsnog de gegevens weg in de database.
 
Laatst bewerkt door een moderator:
Waar in de het script moet staan dat ik ja en nee wil?



Bedankt hij doet het nu goed. Alleen zodra ik een of meerder velden niet heb ingevuld. Geeft hij een foutmelding als ik die wegklik schrijft hij alsnog de gegevens weg in de database.

Nog even een vraagje. Hoe kan ik de velden uitlijnen
 
Uitlijnen zul je met CSS gaan doen.

Heb je daar geen zin of tijd voor dan kun je altijd nog gebruik maken van tabellen.
 
Uitlijnen zul je met CSS gaan doen.

Heb je daar geen zin of tijd voor dan kun je altijd nog gebruik maken van tabellen.

Ik heb de velden nu uitgelijnd. Met css. Kan ik met css ook gewoon tekst uitlijnen. Dus op deze manier:

Voornaam: Jacob
Achternaam: Boersma

Dat de waarden recht onder elkaar staan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan