• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[PHP] DateTime zu Timestamp (Automatisch)

Chriis

Dithmarscher Paradiesapfel
Registriert
25.01.10
Beiträge
1.467
Liebe ATer,

ich habe ein Problem. Und zwar habe ich ein Script (siehe unten), mit dem ich MySQL Daten hinzufügen, bearbeiten, und löschen kann. Ich muss dabei eine DateTime Feld in MySQL ansprechen, welches gleichzeitig aber auch ein Unique Index ist. Anhand diesem Index soll geordnet und indiziert werden, sodass man die einzelnen Datensätze ansprächen kann...
Leider funktioniert das mit den DateTime Feld nicht - nur wenn ich eine INT Zahl eingebe, kann das Script indizieren.

Kann mir jemand von Euch helfen, die Datensätze mit DateTime anzusprechen?

Code:
<html>
<head>
  <link rel="stylesheet" type="text/css" href="layout.css">


<script type="text/javascript">
function send(ak,id)
{
   if(ak==0)
       document.f.ak.value = "in";
   else if(ak==1)
       document.f.ak.value = "up";
   else if(ak==2)
   {
       if (confirm("Datensatz mit id " + id + " löschen?"))
          document.f.ak.value = "de";
       else
          return;
   }
   document.f.id.value = id;
   document.f.submit();
}
</script>
</head>


<body>
<?php
   //Die LogIn Daten behalte ich natürich für mich :-)
   mysql_select_db("art_db");


   /* Aktion ausführen */
   if(isset($_POST["ak"]))
   {
      /* neu eintragen */
      if($_POST["ak"]=="in")
      {
         $sqlab = "insert sign1"
           . "(ueberschrift, untertitel, beginn,"
           . " info) values ('"
           . $_POST["na"][0] . "', '"
           . $_POST["vo"][0] . "', '"
           . $_POST["pn"][0] . "', '"
           . $_POST["gh"][0] . "')";
         mysql_query($sqlab);
      }


      /* ändern */
      else if($_POST["ak"]=="up")
      {
         $id = $_POST["id"];
         $sqlab = "update sign1 set "
           . "ueberschrift = '" . $_POST["na"][$id] . "', "
           . "untertitel = '" . $_POST["vo"][$id] . "', "
           . "beginn = '" . $_POST["pn"][$id] . "', "
           . "info = '" . $_POST["gh"][$id] . "'"
           . " where beginn = $id";
         mysql_query($sqlab);
      }


      /* löschen */
      else if($_POST["ak"]=="de")
      {
         $sqlab = "delete from sign1 where beginn = " . $_POST["id"];
         mysql_query($sqlab);
      }
   }


   /* Formular-Beginn */
   echo "<form name='f' action='p420.php' method='post'>";
   echo "<input name='ak' type='hidden' />";
   echo "<input name='id' type='hidden' />";


   /* Tabellen-Beginn */
   echo "\n\n<table border>"
    . "<tr>"
    . "<td>Überschrift</td>"
    . "<td>Untertitel</td>"
    . "<td>Beginn</td>"
    . "<td>Infos</td>"
    . "<td>Aktion</td>"
    . "</tr>";


   /* Neuer Eintrag */
   echo "\n\n<tr>"
    . "<td><input name='na[0]' size='8' /></td>"
    . "<td><input name='vo[0]' size='6' /></td>"
    . "<td><input name='pn[0]' size='6' /></td>"
    . "<td><input name='gh[0]' size='6' /></td>"
    . "<td><a href='javascript:send(0,0);'>neu eintragen</a></td>"
    . "</tr>";


   /* Anzeigen */
   $res = mysql_query("select * from sign1");




   /* Alle vorhandenen Datensätze */
   while ($dsatz = mysql_fetch_assoc($res))
   {
      $id = $dsatz["beginn"];
      echo "\n\n<tr>"
       . "<td><input name='na[$id]' value='" . $dsatz["ueberschrift"] . "' size='8' /></td>"
       . "<td><input name='vo[$id]' value='" . $dsatz["untertitel"] . "' size='6' /></td>"
       . "<td><input name='pn[$id]' value='" . $dsatz["beginn"] . "' size='6' /></td>"
       . "<td><input name='gh[$id]' value='" . $dsatz["info"] . "' size='6' /></td>"
       . "<td><a href='javascript:send(1,$id);'>ändern</a>"
       . " <a href='javascript:send(2,$id);'>löschen</a></td>"
       . "</tr>";
   }
   echo "</table>";
   echo "</form>";
?>
</body>
</html>

Update: Natürlich ist das Feld "beginn" jenes Feld mit der Eigenschaft DateTime!

Bin ja noch gar nicht auf das Thema eingegangen... Ich hatte daran gedacht, die DateTime direkt in einen Timestamp umzuwandeln... Und diesen dann in einem neuen Feld abzuspeichern.
Oder gibt es da eine bessere Idee? Wie würdet ihr das hier am sinnigsten realisieren?
 
Zuletzt bearbeitet:

Chriis

Dithmarscher Paradiesapfel
Registriert
25.01.10
Beiträge
1.467
Ich frage mich auch, wieso das indizieren nicht einfach mit dem DateTime-Feld funktioniert?
 

Chriis

Dithmarscher Paradiesapfel
Registriert
25.01.10
Beiträge
1.467
Ich habs schon gelöst, mit dem timestamp! Funktioniert einwandfrei!

Der Code für den Abschnitt neu eintragen:

Code:
 /* neu eintragen */
      if($_POST["ak"]=="in")
      {
		   
		$val = explode(" ",$_POST["pn"][0]);
       	$date = explode("-",$val[0]);
       	$time = explode(":",$val[1]);
       	$timestamptemp = mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
		  
         $sqlab = "insert sign1"
           . "(ueberschrift, untertitel, beginn,"
           . " info, timestamp) values ('"
           . $_POST["na"][0] . "', '"
           . $_POST["vo"][0] . "', '"
           . $_POST["pn"][0] . "', '"
		   . $_POST["gh"][0] . "', '"
           . $timestamptemp . "')";
         mysql_query($sqlab);

Beste Grüße,
Chris