Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP]Format daty
Forum PHP.pl > Forum > Przedszkole
pablosso
  1. <?php
  2. $serwer = "localhost";
  3. $connect = array ("UID" => "login", "PWD" => "haslo", "Database" => "baza");
  4. $tabela = "tabela";
  5.  
  6. $link = sqlsrv_connect($serwer, $connect);
  7.  
  8. $tabela_kody = sqlsrv_query($link,'SELECT * FROM '.$tabela)
  9. or die('Nie znaleziono tabeli');
  10.  
  11. while($row = sqlsrv_fetch_array($tabela_kody, SQLSRV_FETCH_ASSOC))
  12. {
  13.  
  14. if($data = $row['DataUtworzenia'])
  15. {
  16. $str = strtotime($data);
  17. $datazm = date('m-d-Y', $str);
  18. }
  19. else
  20. $datazm = null;
  21. ?>
  22. <tr id="tabb1">
  23. <td><?php echo $datazm?></td>
  24. </tr>
  25. <?php }
  26. echo '</tbody>
  27. </table>
  28. </div>
  29. </form>';
  30. ?>
  31. </body>
  32. </html>


Wyświetla mi wszędzie datę 01-01-1970 oraz błąd
Kod
PHP Warning:  strtotime() expects parameter 1 to be string, object given in D:\tst\asd.php on line 124
.

Co trzeba zrobić żeby to działało normalnie?
ult
Jak sam błąd wskazuje - to, co przekazujesz w linii 16. do funkcji strtotime nie jest stringiem. Zobacz np. za pomocą var_dump, czym jest $data i wtedy zobaczysz co z nią można zrobić, żeby była stringiem.
pablosso
Kod
object(DateTime)#1 (0) { } object(DateTime)#2 (0) { }
object(DateTime)#3 (0) { } object(DateTime)#4 (0) { }

To pokazuje.

Tylko, że najdziwniejsze jest to, że przy łączeniu przez mssql działa normalnie, a przy łączeniu przez sqlsrv świruje. Nie wiem w ogóle czemu na serwerze mi nie działa mssql, a mam poinstalowane wszystko dobrze, dlatego muszę używać sqlsrv :/
zawodnik
Może w pliku php.ini nie odkomentowałeś wiersza
;extension=php_mssql.dll
?
pablosso
W php.ini jest wszystko ok.
Tak dla jasności
Windows Server 2008, IIS 7, php 5.2.17 zainstalowane przez Microsoft Web Platform Installer 3.0. Jest nawet zainstalowany tam Microsoft SQL Server 2008 i wyskakuje błąd, że komenda mssql_connect jest nieznana.
kaem
W zapytaniu select użyj funkcji convert albo cast na kolumnie z datą do zmiany obiektu DateTime na Date.
pablosso
Kod
PHP Catchable fatal error:  Object of class DateTime could not be converted to string

Fatalna sprawa :| ...
Noidea
Nowy sterownik microsoftu automatycznie tworzy obiekty DateTime dla pól przechowujących datę. Z jakiegoś powodu pehapowe DateTime nie zdobyło popularności i pewnie stąd te problemy.

Żeby wyświetlić datę użyj metody format():
  1. while($row = sqlsrv_fetch_array($tabela_kody, SQLSRV_FETCH_ASSOC))
  2. {
  3. if( $row['DataUtworzenia'] != null )
  4. {
  5. $datazm = $row['DataUtworzenia']->format('m-d-Y');
  6. }
  7. else
  8. {
  9. $datazm = "";
  10. }
  11.  
  12. // wyświetlanie
  13. ?>
pablosso
Ok, dzięki wielkie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.