• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datum und ´Zeit wird nicht richtig gespeichert

Status
Für weitere Antworten geschlossen.

meGa

Neues Mitglied
Servus Jungs,

ich habe in meiner tabelle 2 fields Date und Time mit jeweils beie Modus INT(11)

in php will ich sie so speichern

Code:
$date = $_POST['date_day'].".".$_POST['date_month'].".".$_POST['date_year'];              
          $time = $_POST['time_hour'].":".$_POST['time_minute'];

Aber es wird so fetzen gespeichert. wie

16, 20

Wieso ?
 
Werbung:
Werbung:
Einfacher ist es das ganze als Timestamp zu speichern. Das benötigt nur einen Datenbank-Spalte (Als Typ statt Int Timestamp angeben).

Du erzeugst einen Timestamp eines Datums mittels mktime().

Den übergibst du dann der Datenbank.

Das gute ist, diesem timestamp kannst du mittels date() oder strftime() frei formatieren.

Edit:
Zu deinem Problem:

Du sagst selber, dass der Datenbank-Typ ein Int ist. Dein Code oben erzeugt aber einen String. Wird ein String als Int übergeben wird er ab dem ersten nicht numerischen Zeichen abgeschnitten. Die "Fehler" sind also sehr logisch.
 
Ich will das aber selbst auswählen können: Datum Tag ....

Wenn ich den modus zu varchar ändere hat sich das problem eigentlich erledigt oder nicht ?
 
ich versteh' deinen ansatz immernoch nicht. wieso benutzt du das $_POST-array? kommt doch nur be formularelementen zum einsatz. ich wüsste nicht, wo bei denem vorhaben formularelemente vorkommen sollen.

Nils aka XraYSoLo
 
Werbung:
Weil ich das so mache

Code:
<tr class="text">
                             <td width="50px">Tag</td>
                             <td width="50px">Monat</td>
                           <td width="50px">Jahr</td>
                         </tr>
                         <tr>
                             <td width="50px"><select name="date_day">
                  <option value="1">1</option>
                     <option value="2">2</option>
                     <option value="3">3</option>
                     <option value="4">4</option>
                     <option value="5">5</option>
                     <option value="6">6</option>
                     <option value="7">7</option>
                     <option value="8">8</option>
                     <option value="9">9</option>
                     <option value="10">10</option>
                     <option value="11">11</option>
                     <option value="12">12</option>
                     <option value="13">13</option>
                     <option value="14">14</option>
                     <option value="15">15</option>
                     <option value="16">16</option>
                     <option value="17">17</option>
                     <option value="18">18</option>
                     <option value="19">19</option>
                     <option value="20">20</option>
                     <option value="21">21</option>
                     <option value="22">22</option>
                     <option value="23">23</option>
                     <option value="24">24</option>
                     <option value="25">25</option>
                     <option value="26">26</option>
                     <option value="27">27</option>
                     <option value="28">28</option>
                     <option value="29">29</option>
                     <option value="30">30</option>
                     <option value="31">31</option>
                     <option value="32">32</option>                 
              </select></td>                   
               <td><select name="date_month">
                      <option value="1">1</option>
                         <option value="2">2</option>
                        <option value="3">3</option>
                         <option value="4">4</option>
                         <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                        <option value="10">10</option>
                        <option value="11">11</option>
                        <option value="12">12</option>
                    </select></td>
                <td><select name="date_year">
                      <option value="2004">2004</option>
                         <option value="2005">2005</option>
                        <option value="2006">2006</option>
                         <option value="2007">2007</option>
                         <option value="2008">2008</option>                                                
                    </select></td>
 
@XraYSoLo: hat der doch in seinen vorherigen Posts schon gesagt...

@meGa: Du scheinst dir die Funktion mktime() nicht wirklich angesehen zu haben. Du kannst dieser FUnktion deine Auswahl aus dem Formular übergeben und den zurückgegebenen Zeitstempel dann in der Datenbank speichern
PHP:
mktime($_POST['time_hour'], $_POST['time_minute'], 0, $_POST['date_month'], $_POST['date_day'], $_POST['date_year']);
 
Werbung:
Ok also dann einfach beim inserten date=mktime oder wie ? Das mit der 0 ist ja so ne sache ab 10. ... .Wie kann ich denn den Type von INT ändern also wie du gesagt hattest ?

Edit: Irgendwie geht es nicht so recht:

MEin Query

Code:
$sql_war_add="INSERT INTO $db_war (catID, opponent, opponent_hp, date, xonx, maps, players, description, result1, result2) VALUES ('{$_POST['category']}', '{$_POST['opponent']}', '{$_POST['opponent_hp']}', '{mktime}', '{$_POST['xonx']}', '{$_POST['maps']}', '{$_POST['lineup']}', '{$_POST['description']}', '{$_POST['result1']}', '{$_POST['result2']}')";    
          $result_war_add=mysql_query($sql_war_add) OR die(mysql_error());

mktime

Code:
[COLOR=#000000][COLOR=#0000bb]mktime[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'time_hour'[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'time_minute'[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'date_month'[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'date_day'[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'date_year'[/COLOR][COLOR=#007700]]);
[/COLOR][/COLOR]
 
Zuletzt bearbeitet:
Ok also dann einfach beim inserten date=mktime oder wie ?
Korrekt.
Das mit der 0 ist ja so ne sache ab 10.
Was für eine 0 und was für eine 10? Wenn du den dritten Parameter in der Funktion mktime() meinst, wird dieser für die Angabe der Sekunden verwendet. Da du aber in deinem Formular keine Angaben bezüglich der Sekunden übergibst, kann man diesen Parameter auf 0 setzen. Weiss grad nicht was du da mit >10 willst...
Wie kann ich denn den Type von INT ändern
Du kannst den Zeitstempel auch als INT(10) in der Datenbank speichern. Analog geht das mit dem Feldtyp TIMESTAMP, wie Artemis schon geschrieben hat. Wenn du den PMA verwendest sollte die Änderung des Feldtyps doch keine Probleme bereiten.
 
Ich meine bei den Monaten 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12.

Das meine ich mit der 0
 
Werbung:
Du kannst doch die value Angaben deiner Selectbox ändern
PHP:
<select name="date_month">
     <option value="1">01</option>
     ...
oder du schreibst in der mktime()-Funktion (int)$_POST['date_month'].
 
Durch das Voranstellen von int vor eine Variable erzwingst du eine Typkonvertierung zum Variablentyp integer. Wenns um den Monat geht sieht das woe folgt aus:
PHP:
mktime($_POST['time_hour'], $_POST['time_minute'], 0, (int)$_POST['date_month'], $_POST['date_day'], $_POST['date_year']);
 
Werbung:
Ok. Wenn ich mktime in die MySQl eintragen lassen will trägt er nichts ein wieso ?
 
also komm', ein bisschen eigeninitiative muss auch sein. experimentier' halt 'rum, dann wird vieles klarer.

Nils aka XraYSoLo
 
also ich will es in date INT (11) speicher mysq query

Code:
$sql_war_add="INSERT INTO $db_war (catID, opponent, opponent_hp, date, xonx, maps, players, description, result1, result2) VALUES ('{$_POST['category']}', '{$_POST['opponent']}', '{$_POST['opponent_hp']}', '{mktime}', '{$_POST['xonx']}', '{$_POST['maps']}', '{$_POST['lineup']}', '{$_POST['description']}', '{$_POST['result1']}', '{$_POST['result2']}')";

finde es net
 
Werbung:
@Artemis: Die Klammern sind dafür da, damit die Hochkommas der Arrayelemente im String vom Parser akzeptiert werden. Ist aber kein guter Stil wie ich finde.

@MeGa: Liest und verstehst du überhaupt was man dir schreibt? Mir scheint du hast sehr viel Nachholebedarf. Ich rede die ganze Zeit davon, das mktime() eine _Funktion_ ist und versuche dir die Parameter dafür aufzuzeigen und du kapierst garnix von dem.
Code:
...'{$_POST['opponent_hp']}', '{mktime}', '{$_POST['xonx']}'...
Was zum Teufel soll das denn werden? Logisch das hier nichts eingetragen wird. Setz dich erstmal intensiv mit dem auseinander was du vor hast ;-)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben