Tijd meegeven en weer ophalen uit sql

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Goedemiddag,

Wie kan me helpen om het volgende te doen,
Ik wilde wanneer je (in dit geval) een geboed aanmaakt ook de tijd van aanmaken laten zien en opslaan in de tabel, maar ik weet niet goed hoe.
PHP:
	if ($_GET['action'] == 1) {
			// Laat gebieden zien
			if (!isset($_GET['sortorder'])) {
				$sortorder = 'gebied';
			} else {
				$sortorder = $_GET['sortorder'];
			}
			$sql = "SELECT * FROM `reizen_gebieden` ORDER BY `".$sortorder."` ASC";
			$result = $modx->db->query($sql);
			$num = mysql_num_rows($result);
			if ($num > 0) {
			$list = '<script type="text/javascript">
			<!--
			function delete_subscriber(a,b,c,d)
			{
			answer = confirm("'.$lang_gebieden_gebiedverwijder.'\n"+b+" "+c+" - "+d)
			if (answer !=0)
				{
				location = "index.php?a=112&id='.$modId.'&action=4&nid="+a
				}
				}
				//-->
				</script>';
				$list .= '<table style="font-size: 12px;" width="700">';
				$list .= '<tr>';
				$list .= '<td><a href="index.php?a=112&id='.$modId.'&action=1&sortorder=gebied"><strong>'.$lang_gebieden_gebied.'</strong></a></td><td><a href="index.php?a=112&id='.$modId.'&action=1&sortorder=gebied"><strong>'.$lang_gebieden_actie.'</strong></a></td><td><a href="index.php?a=112&id='.$modId.'&action=1&sortorder=gebied"><strong>'.$lang_gebieden_gemaakt.'</strong></a></td><td><strong>'.$lang_gebieden_action.'</strong></td>';
				$list .= '</tr>';
				$i=0;	
				while($i < $num){		
					$row = $modx->db->getRow($result);	
					$list .=	'<tr>';
					$list .= '<td>'.mysql_result($result,$i,"gebied").'</td><td><a href="index.php?a=112&id='.$modId.'&action=2&nid='.mysql_result($result,$i,"id").'">'.$lang_reis_edit.'</a> | <a href="index.php?a=112&id='.$modId.'&action=4&nid='.mysql_result($result,$i,"id").'" onclick=" delete_subscriber(\''.mysql_result($result,$i,"id").'\',\''.mysql_result($result,$i,"gebied").'\'); return false;">'.$lang_reis_verwijder.'</a></td><td>'.mysql_result($result,$i,"datum").'</td>';
					$list .= '</tr>';
					$i++;
				}
				$list .= '</table>';
				echo $list;
			} else {
				echo $lang_gebieden_geengebied;
			}
		} elseif ($_GET['action'] == 2) {
			// 
			$sql = "SELECT * FROM `reizen_gebieden` WHERE id = '".$_GET['nid']."'";
			$result = $modx->db->query($sql);
			echo '<div class="content_">
					<p><br />'.$lang_gebieden_bewerk_gebied.'</p>
					<form action="index.php?a=112&id='.$modId.'&action=3&nid='.$_GET['nid'].'" method="post">
					<b>'.$lang_gebieden_gebied.'</b><br /><input type="text" size="50" maxlength="50" name="gebied" value="'.mysql_result($result,$i,"gebied").'"></input><br />
					<input type="submit" value="'.$lang_gebieden_opslaan.'"></input></div>';
		} elseif ($_GET['action'] == 3) {
	
			// Bewerk
			$sql = "INSERT INTO reizen_gebieden VALUES('','".$_POST['gebied']."' ,'".$_POST['datum']."')";
			$result = $modx->db->query($sql);
			echo $lang_gebieden_opgeslagen;
		} elseif ($_GET['action'] == 4) {
			// Verwijder
			$sql = "DELETE FROM reizen_gebieden WHERE id='".$_GET['nid']."'";
			$result = $modx->db->query($sql);
			echo $lang_gebieden_verwijderd;
		}
}
Kan iemand me hiermee helpen?
Alvast mijn dank
Groetjes
 
Laatst bewerkt:
Als je de huidige datum/tijd wil hebben, kun je de php functie time gebruiken, eventueel in combinatie met date()

PHP:
time(); // geeft je een "timestamp", een getal dat een bepaalde tijd voorsteld
date( 'Y', $time ); // gegeven een "timestamp", geeft je het bijbehorende jaartal terug

Als je op date klikt, krijg je een lijst te zien met formatters voor dagen, maanden, uren, minuten, seconden, etc.

Als je zo'n timestamp opslaat in de database, kun je hem later dus met de date() functie weer omzetten in een leesbare tijd.
 
Dank voor je antwoord,

Ik heb ooit eens begrepen dat je SQL de tijd kan laten weergeven, terugsturen.
Het enige wat ik met dit wil doen is, dat er een tijd van aanmaken achter de records komen te staan in mijn backend.

ik maak dus in dit geval een gebied aan en daarchter staat dan datum en dat moet dan datum van aanmaak zijn, nu krijg ik bij de kolom datum alleen dit te zien 0000-00-00.
 
Als je de tijd in SQL wil tonen in de database zelf dan moet je idd een DATE gebruiken...

Maar daar kun je geen timestamp in doen, dan moet je hem met de php date() functie (of die van SQL zelf) zo formatteren dat hij er in past. Maar dat moet je even proberen, ik weet zo het juiste format niet.
 
Wederom bedankt voor je antwoord:)

ik ga even proberen , ik meende namelijk dat ik bijv. met een hidden field een commando kon meesturen die de directe tijd aangeeft en meestuurt.

Maar het is dus schijnbaar moeilijker dan gedacht:(
 
Dat is niet nodig, in mysql kun je aangeven dat een datum veld gevuld moet worden met de "CURRENT_TIMESTAMP". Bij een insert of update query wordt het datum/tijd veld meteen aangepast zodat het de actuele tijd bevat.

edit: ook de automatische update moet je aangeven bij het maken van de kolom:[sql]create table iets (
id int not null auto_increment primary key ,
datumtijd timestamp on update current_timestamp not null default current_timestamp ,
tekst text not null
)[/sql](dit kun je uiteraard ook via bijv. phpmyadmin kiezen)
 
Laatst bewerkt:
Dank voor je antwoord,

Brengt me weer een stapje dichterbij, ;)
Maar waar geef ik dit in, geef ik het mee in php, of doe ik dit in de database zelf?
Ik heb veld nu als type "DATE" gegeven.Maar het type heb je ook als "TIMESTAMP".

EDIT: had je edit nog niet gezien
 
Laatst bewerkt:
Ok, nu in PHPMyadmin type TIMESTAMP en attribuut onupdate_currenttimestamp meegegeven en dat werkt als een trein:)
Dank je wel:)

Als ik het nog een stapje verder wil doen, en een tijd van aanmaken en een wijzigingstijd wil laten zien, kan dat ook?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan