Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]dopisywanie zer
Forum PHP.pl > Forum > Przedszkole
trucksweb
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 ?
Crozin
Ale po co wyważać otwarte drzwi? Masz funkcję sprintf, która służy do takiego czegoś winksmiley.jpg
Grzyw
  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. ?>
trucksweb
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
Grzyw
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ść.
Crozin
<?php

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

?>
nospor
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 smile.gif
trucksweb
ok, faktycznie zle doczytalem o tej funkcji mozna to zrobic w jednym zapytaniu-linii smile.gif

a mozna te zera zapisac do bazy ? bo sprintf powoduje tylko formatowanie przy wyswielaniu, a przy zapisie do bazy ucinane sa zera
nospor
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.
trucksweb
blinksmiley.gif
mam tak i nie zapisuje
  1. <?php
  2. $kod= sprintf('%04d', $liczba);
  3. ?>



//edit no tak sciana.gif
zamiast UNSIGNED ZEROFILL ustawilem ON UPDATE...

dzieki
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.