Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] Miejsca po przecinku i data
Forum PHP.pl > Forum > Przedszkole
pablosso
Poniższy program wyświetla mi tabelę z danymi. Mam problem, bo w tym momencie wyświetla mi liczby w taki sposób 2.00000, a potrzebuję 2.0 czyli jedno miejsce po przecinku. Również mam problem z datą, bo wyświetla Apr 14 2011 12:00AM, a chciałbym żeby wyświetlało albo datę po polsku, albo w formacie DD-MM-RRRR liczbowo.
Daję cały kod z jednego z plików programu.

CODE

<?php
$serwer = "localhost";
$login = "login";
$haslo = "haslo";
$baza = "baza";
$tabela = "Lista_Zamowien_v";
$tabela2 = "Zamowienia_listaProduktowDoZamowienProsta_v";

$link = mssql_connect($serwer, $login, $haslo);
mssql_select_db($baza, $link)
or die('Nie można połączyć się z bazą:'.mysql_error());

if(isset($_POST['Send']))
{
$size_chbox = count($_POST['chbox']);

for ($i = 0;$i < $size_chbox;$i++)
{
$tabela_zam_str = 'SELECT IdZamowienia, NrZamowienia, Producent, KodProduktu, NazwaProduktu, KodWariantu, NazwaWariantu, IloscZamowienie, Ilosc, Status, NrDostawy, PrzewidywanaDataWyslania FROM '.$tabela2.' WHERE ';
$tabela_zam_str .= "NrZamowienia Like '".$_POST['chbox'][$i]."' ";

$tabela_kody = mssql_query($tabela_zam_str)
or die('Nie znaleziono tabeli');

$size = mssql_num_rows($tabela_kody);


if($size != 0)
{
echo '<table border=1>
<tr>
<td id="tabhNR">'.$_POST['chbox'][$i].'</td>
</tr>
<tr>
<td>
<table border=1>
<tr id="tabh">
<td width="42px"></td>
<td>Producent</td>
<td>Kod produktu</td>
<td>Nazwa produktu</td>
<td>Kod wariantu</td>
<td>Nazwa wariantu</td>
<td>Ilość zamówienie</td>
<td>Ilość</td>
<td>Status</td>
<td>Numer dostawy</td>
<td>Przewidywana data wysłania</td>
</tr>';
}
for($j = 0;$j < $size;$j++)
{
echo '<tr id="tabb2">
<td><input type=checkbox class=largerCheckbox name="chbox[]" value=""></td>
<td>'.mssql_result($tabela_kody, $j, 2).'</td>
<td>'.mssql_result($tabela_kody, $j, 3).'</td>
<td>'.mssql_result($tabela_kody, $j, 4).'</td>
<td>'.mssql_result($tabela_kody, $j, 5).'</td>
<td>'.mssql_result($tabela_kody, $j, 6).'</td>
<td>'.mssql_result($tabela_kody, $j, 7).'</td>
<td>'.mssql_result($tabela_kody, $j, 8).'</td>
<td>'.mssql_result($tabela_kody, $j, 9).'</td>
<td>'.mssql_result($tabela_kody, $j, 10).'</td>
<td>'.mssql_result($tabela_kody, $j, 11).'</td>
</tr>';
}
echo '</table>
</td>
</tr>
</table>';
}
}
echo '<br>
<table>
<tr>
<td>
<form action="zamowienia.php">
<input type="submit" id="przycisk" value="WRÓĆ">
</form>
</td>
<td>
<form action="zamowienia.php">
<input type="submit" id="przycisk" value="DRUKUJ">
</form>
</td>
</tr>
</table>';
?>
pablosso
Z liczbami sobie poradziłem, z datą nie bardzo.
nospor
To chociaż pokaż jak próbowałeś.
pablosso
Kod
$data = mssql_result($tabela_kody, $j, 11);
$datazm = date('d-m-Y', $data);


Wyświetla mi w formacie jakim chce, ale wszędzie jest ta sama data 01-01-1970
nospor
Ale pierwszego linka:
http://pl2.php.net/manual/en/function.strtotime.php
naprawdę nie podałem ci bez powodu smile.gif
Do obróbki daty masz użyć obu tych funkcji
pablosso
Kod
$data = mssql_result($tabela_kody, $j, 11);
$str = strtotime($data);
$datazm = date('d-m-Y', $str);


Wyświetla datę poprawnie ale pojawia się błąd
CODE
Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in D:\Nowy folder\produkty.php on line 71

Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in D:\Nowy folder\produkty.php on line 72

Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in D:\Nowy folder\produkty.php on line 71

Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in D:\Nowy folder\produkty.php on line 72

Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in D:\Nowy folder\produkty.php on line 71

Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in D:\Nowy folder\produkty.php on line 72

Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in D:\Nowy folder\produkty.php on line 71

Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in D:\Nowy folder\produkty.php on line 72


71 linia - $str = strtotime($data);
72 linia - $datazm = date('d-m-Y', $str);
nospor
Zgodnie z komunikatem, którego chyba nie przeczytałeś, niekiedy strtotime() jest wywoływane z pustą wartością. Zapewne nie dla wszystkich rekordów masz ustawioną datę.
pablosso
No nie dla wszystkich rekordów jest podana data. Więc co zrobić żeby nie pojawiały się te komunikaty.

EDIT: ok, dałem @ przed zmiennymi i nie pojawiają się komunikaty.
nospor
Cytat
ok, dałem @ przed zmiennymi i nie pojawiają się komunikaty.
ałć.....
czy tak ciężko troszeczkę się zastanowić?

Formatowanie daty masz robić tylko i wyłącznie wtedy, gdy ta data jest podana. Gdy jej nie ma to masz tego formatowania nie robić.
O IF nie słyszał?
http://pl.php.net/manual/en/control-structures.if.php
pablosso
Słyszał, z pośpiechu nie wpadło mi to do głowy ..

Kod
if($data = mssql_result($tabela_kody, $j, 11))
            {
                $str = strtotime($data);
                $datazm = date('d-m-Y', $str);
            }


Teraz już działa normalnie.
nospor
1) Uzywaj poprawnego bbcode. Dla kodu php uzywa się bbcode PHP
2) No ale zjadłeś ELSE. Teraz Twój kod napewno generuje ci błędy NOTICE
  1. if($data = mssql_result($tabela_kody, $j, 11))
  2. {
  3. $str = strtotime($data);
  4. $datazm = date('d-m-Y', $str);
  5. }
  6. else
  7. $datazm = null;

pablosso
Ok, dzięki.
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.