Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]dopisywanie zer
trucksweb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tworze wlasnie mechanizm generacji kodow dla produktow, i wymyslilem taki sposob- firma ma metkownice 4liczbowa wiec ustawilem e kod max bedzie mial 4 liczby, jesli tworzony kod bedzie mial np 2 to na poczatku dopisuje sie 00

czyli:
  1. <?php
  2. if($row7['kod'] <=9) {
  3. $kod='000'.$row['kod']+1;
  4. }elseif ($row7['kod'] <=99) {
  5. $kod='0'.$row7['kod']+1;
  6. }elseif ($row7['kod'] <=999) {
  7. $kod='0'.$row7['kod']+1;
  8. }else { $kod=0000;}
  9. ?>


ale cos nie dziala z tymi zerami :/ jak je przerobic na int ?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ale po co wyważać otwarte drzwi? Masz funkcję sprintf, która służy do takiego czegoś (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Grzyw
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $dlugoscKoduJakoString = strlen($row7['kod']);
  3.  
  4. $liczbaZerDoDopisania =- $dlugoscKoduJakoString;
  5.  
  6. while ($liczbaZerDoDopisania>0)
  7. {
  8. $row7['kod'] = '0'.$row7['kod'];
  9. $liczbaZerDoDopisania--;
  10. }
  11. echo $row7['kod'];
  12. ?>


Ten post edytował Grzyw 14.03.2008, 13:42:26
Go to the top of the page
+Quote Post
trucksweb
post
Post #4





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tylko ze jest to pole int w bazie- bo kazdy produkt robi update nr katalogowego o 1

//
dzieki @Grzyw o to wlasnie chodzilo, to wyzej co napisalem odnosi sie do pomyslu Crozina

Ten post edytował trucksweb 14.03.2008, 13:47:09
Go to the top of the page
+Quote Post
Grzyw
post
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie szkodzi. PHP przekonwertuje.
A gdyby nie poszło - a powinno, bo ta elastyczność co do typów zmiennych w php jest masakryczna, to:
  1. <?php
  2. $lipa = (string)$lipa;
  3. ?>

na początku. To musi pójść.

Ten post edytował Grzyw 14.03.2008, 13:47:37
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


<?php

$liczba = 23;
echo sprintf('%04d', $liczba);

?>
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to wyzej co napisalem odnosi sie do pomyslu Crozina
i co ze to int? dla sprintf to bez roznicy. Tyle zescie splodzili lini a mozna to jednym sprintf zastapic...

edit: o, przyklad powyzej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
trucksweb
post
Post #8





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


ok, faktycznie zle doczytalem o tej funkcji mozna to zrobic w jednym zapytaniu-linii (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

a mozna te zera zapisac do bazy ? bo sprintf powoduje tylko formatowanie przy wyswielaniu, a przy zapisie do bazy ucinane sa zera
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zamiast echo sprintf
daj: $zmienna = sprintf
i sobie te zmienna zapisz do bazy

A jesli w bazie to pole jest intem to nie dziw sie ze ci zera obcina. zmien to pole na varchar lub ustaw dla inta by pozwalal na zapisywanie zer na poczatku.
Go to the top of the page
+Quote Post
trucksweb
post
Post #10





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
mam tak i nie zapisuje
  1. <?php
  2. $kod= sprintf('%04d', $liczba);
  3. ?>



//edit no tak (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)
zamiast UNSIGNED ZEROFILL ustawilem ON UPDATE...

dzieki

Ten post edytował trucksweb 14.03.2008, 14:12:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:39