Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kropka w przecinek (mysql)
Forum PHP.pl > Forum > Bazy danych > MySQL
Salik
Witam smile.gif

Od razu informuję że skorzystałem już z 'Search'a winksmiley.jpg, żeby nie było smile.gif

Mam nastepujący problemik:

I

zrobiłem sobie kilka skryptów, które miały mi pomóc w spisie remanentowym. Jednakże wartości dziesiętne cen, są ładowane z kropką, czyli nie w standardzie polskim, za pomocą niestety kropki (przy użyciu przecinka wartości po nim podane po prostu nie pojawiają się w bazie).

Próbowałem użyć ereg_replace, w postaci:
$wiersz[value] = ereg_replace(".", ",", $wiersz[value]);

(urywek kodu:
[php:1:c6a3c11839]<?php

$wykonaj = mysql_query("SELECT * FROM baza ORDER BY id DESC");
while($wiersz = mysql_fetch_array($wykonaj))
{ $wiersz[value] = ereg_replace(".", ",", $wiersz[value]);
$i++;
if($i % 2 == 0)
{
echo ("<tr bgcolor="#F7F4F4">
<td ...?>[/php:1:c6a3c11839]
)

jednakże to zamieniało mi całą liczbę w przecinki (za każdy znak pojawiał się przecinek).

nie mam juz pojęcia jak to zrobić. Może ktoś ma jakiś pomysł...

Druga rzecz to problem z dodawaniem rekordów:

mianowicie, jeśli podaje liczbę bez wartości dziesiętnych, to jest ona dodawana bez kropki/przecinka i bez dwóch zer (dziesietne).

A to w połączeniu z problem I daje ogólny problem z sumowaniem wartości value ze wszytskich wierszy tabeli....


poniżej kod sql
[sql:1:c6a3c11839]CREATE TABLE `lucille`.`baza` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` text NOT NULL ,
`symbol` text NOT NULL ,
`jm` text NOT NULL ,
`ilosc` int( 11 ) NOT NULL default '0',
`cnetto` float NOT NULL default '0',
`vat` int( 11 ) NOT NULL default '0',
`sww` text NOT NULL ,
`value` float NOT NULL default '0',
UNIQUE KEY `id` ( `id` )
) TYPE = MYISAM ;[/sql:1:c6a3c11839]

kod sumowania:

[php:1:c6a3c11839]<?php

$q=mysql_query("SELECT SUM(value) AS suma FROM baza");
$r=mysql_fetch_array($q);
echo $r["suma"];


?>[/php:1:c6a3c11839]

i część kodu formularza dodawania wpisów:

[php:1:c6a3c11839]<?php

if($where=='magazyn')
{ if($what=='remanent')
{if($year=='2003')
{if($_POST[ok]=='Dodaj')
{
mysql_query("INSERT INTO $baza SET name='$name', symbol='$symbol', ilosc='$ilosc', jm='$jm', vat='$vat', cnetto='$cnetto', sww='$sww', value='$cnetto'*'$ilosc'");
echo ('Wpis został dodany! <br><meta http-equiv="refresh" content="0;URL=xxx_admin_xxx.php">');
}
else
{
echo('
<center>
<form method=post name=dodaj action="">
<table width=550 cellspacing=1 cellpadding=1 border=0 class=table align=center>
<tr>
<td width=40%>Nazwa</td>
<td width=60%><input type="text" name="name" size="60" class=input></td>
</tr>
<tr>
<td width=40%>Symbol</td>
<td width=60%><input type="text" name="symbol" size="60" class=input></td>
</tr>
<tr>
<td width=40%>Ilo?ć</td>
<td width=60%><input type="text" name="ilosc" size="60" class=input></td>
</tr>
<tr>
<td width=40%>Cena netto</td>
<td width=60%><input type="text" name="cnetto" size="60" value="." class=input></td>
</tr>
<tr>
<td width=40%>J.m.</td>
<td width=60%>
<select name="jm">
<option>szt.
<option>kpl.
</select>
</td>
</tr>
<tr>
<td width=40%>VAT</td>
<td width=60%>
<select name="vat">
<option>7
<option>22
</select>
%</td>
</tr>
<tr>
<td width=40%>SWW</td>
<td width=60%><input type="text" name="sww" size="60" class=input></td>
</tr>

<tr>
<td colspan=2 align=center><input class="submit" type="submit" name="ok" value="Dodaj"></td>
</tr>
</table>
</form>
</center>
');
}
}
elseif($year=='2002')
{}
}

?>[/php:1:c6a3c11839]
sivyer
Cytat
Próbowałem użyć ereg_replace, w postaci:
[php:1:0f70815d1e]
$wiersz[value] = ereg_replace(".", ",", $wiersz[value]);
[/php:1:0f70815d1e]

A spróbuj:
[php:1:0f70815d1e]
<?
$wiersz[value] = ereg_replace(".", ",", $wiersz[value]);
?>
[/php:1:0f70815d1e]

Edycja:
Wykorzystaj to, co podał Polvip smile.gif
POLVIP
uzyj number_format($numer,2,',','.');

zobacz http://us4.php.net/manual/en/function.numb...mber-format.php dla wiecej szczegolow
spenalzo
Z armatą na muchę?
[php:1:a32ec3d702]
<?
$wiersz[value] = str_replace(".", ",", $wiersz[value]);
?>
[/php:1:a32ec3d702]
Salik
Dzięki smile.gif wyświetla się już poprawnie. NAdal mam jednak problem z sumowaniem tego, co mam w bazie sad.gif

kod wyswietlania wyglada teraz tak:


<tr>
<td colspan=10>SUMA:
[php:1:7b2f19cae5]
<?php
$q=mysql_query("SELECT SUM(value) AS suma FROM baza");
$r=mysql_fetch_array($q);
echo $r["suma"];

?>
</td>
</tr>
<tr bgcolor="#C0C0C0">
<td width="20" align=center>L.p.</td>
<td width="120" align="center">Nazwa towaru</td>
<td width="40" align="center">Symbol</td>
<td width="30" align="center">J.m.</td>
<td width="30" align="center">Ilo?ć</td>
<td width="50" align="center">Cena netto</td>
<td width="30" align="center">VAT</td>
<td width="60" align="center">SWW</td>
<td width="70" align="center">Warto?ć netto</td>
<td width="70" align="center">Polecenia</td>
</tr>
<?
$wykonaj = mysql_query("SELECT * FROM baza ORDER BY id DESC");
while($wiersz = mysql_fetch_array($wykonaj))
{
$wiersz[value] = number_format($wiersz[value],2,',','.');
$i++;
if($i % 2 == 0)
{
echo ("<tr bgcolor="#F7F4F4">
<td ...


?>[/php:1:7b2f19cae5]

będę wdzięczny za dalsze podpowiedzi smile.gif
Salik
Cytat
Z armatą na muchę?
[php:1:ff2f80136b]
<?
$wiersz[value] = str_replace(".", ",", $wiersz[value]);
?>
[/php:1:ff2f80136b]


works also just fine 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.