Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] dodanie 1 do A001
Forum PHP.pl > Forum > Przedszkole
PiiiT
Witam, mam pytanie odnośnie dodawania dwóch cyfr które zawierają literę i trzy cyfry np. A001+1=A002 A002+1=A003 itd. w jaki sposób można dodać takie ciągi? Z góry dziękuję za pomoc.
vokiel
Musisz rozbić ciąg, oddzielic literę o cyfr, dodać do cyfry wartość, dopisać zera, dołączyć literke.

substr" title="Zobacz w manualu PHP" target="_manual
str_pad" title="Zobacz w manualu PHP" target="_manual

operatory dodawania (+) i łączenia ciągów (.) pewnie znasz winksmiley.jpg
PiiiT
Mam teraz taki kod, pobieram z formularza liczbę i razy, pętla dodaje do liczby kolejne liczby w ilości wskazanej przez razy i cyfry są wyświetlone kolejno po "," np. podaje liczba=5 i razy=3 wyświetla 5,6,7,8. Nie wiem jednak jak te wyświetlone liczby dodać do bazy w kolejnych rekordach. Próbowałem tablicy ale wyświetla tylko Array a nie kolejne liczby.. Jak dodać print_r($suma.") do bazy? Z góry dziękuję za podpowiedź.

Kod
$serial=$_POST["liczba"];
$razy=$_POST["razy"];

$i=0;
while($i<=$_POST["razy"] )
  {
  $suma= $serial + $i ;
  print_r($suma.",");
  $i++;
  }  
  
$tablica=array($suma);
print $tablica;

$number=$liczba;
n=3;
function number_pad($number,$n) {
return str_pad((int) $number,$n,"0",STR_PAD_LEFT);
}
nitek
jeśli chcesz odwołać sie do konkretnego elementu tablicy, to nie możesz dać print $tablica - to zawsze zwróci ci "array". Musisz odwołać się do konkretnego jej elementu $tablica[0], $tablica[1] itd...
PiiiT
Ja chcę zapisać wszystkie elementy tej tablicy w bazie.
mike
Cytat(PiiiT @ 27.11.2008, 15:40:29 ) *
Ja chcę zapisać wszystkie elementy tej tablicy w bazie.
To zapisz. W czym problem?
nitek
Cytat(PiiiT @ 27.11.2008, 15:40:29 ) *
Ja chcę zapisać wszystkie elementy tej tablicy w bazie.


'przelatujesz' całą tablicę w pętli i w każdym wykonaniu robisz insert do bazy.

pętla rodzaju
  1. <?php
  2. for($i=0;$i<=sizeof($tablica);$i++)
  3. {
  4. //tutaj wstawiasz kolejne elementy do bazy, odwołując się do tablicy - $tablica[$i]
  5. }
  6. ?>
PiiiT
Jak zmienię na poniższy kod dodaje się tylko ostatnia cyfra mimo iż tablica wyświetla poprawne dane..
Kod
$tablica=array($suma);
print $tablica[$i];

for($i=0;$i<=sizeof($tablica);$i++)
{
mysql_query("insert into sonda set serial= $tablica[$i], stans=0"); // zapisywanie rekordu do bazy
//tutaj wstawiasz kolejne elementy do bazy, odwołując się do tablicy - $tablica[$i]
}


Z góry dziękuję za pomoc
nitek
hmm.. dziwne. jeśli tablica ma więcej elementów, to powinno być ok i powinno wstawić wszystkie..
a co da ci
Kod
echo sizeof($tablica);

questionmark.gif

i może wklej cały kod skryptu, bo coś tu na pewno nie gra...
PiiiT
Wstawiłem zapytanie do bazy w pętle while i rekordy zaczęły się dodawać, ale pojawił się kolejny problem, nie wiem jak przed zapisaniem do bazy przekształcić cyfrę 1 na 001 i dopiero zapisać w bazie.
Kod
if($_POST["send"]==1){    //sprawdzanie czy formularz został wysłany

$serial=$_POST["serial"];
$razy=$_POST["razy"];
//print $serial;
$i=0;
while($i<=$_POST["razy"] )
  {
  $suma= $serial + $i ;
  print_r($suma.",");
  $i++;
//  $sum=$suma[$i];
// funkcja zmieniająca 1 na 001
$n=3;
function number_pad($serial,$n) {
return str_pad((int) $serial,$n,"0",STR_PAD_LEFT);
}

  mysql_query("insert into sonda set serial='$suma'");
  //echo "<meta http-equiv=\"refresh\" content=\"0;URL=dodaj_ktest.php\">";
  }

}


przy próbie zapisu pojawia się błąd:
Fatal error: Cannot redeclare number_pad() (previously declared in i chodzi o linijkę "function number_pad($serial,$n) {"
Z góry dziękuję za podpowiedzi.
q3d
ad 1
  1. <?php
  2. $s = 'monkey';
  3.  
  4. printf("[%010s]\n",   $s); // zero-padding works on strings too
  5. ?>


rezultat:
0000monkey, czyli dodaje Ci tyle zer by ciag w tym przypadku uzyskal dlugosc 10 znaków

ad 2
Chyba masz dwa razy definicje funkcji number_pad.
PiiiT
Usunąłem funkcję i zostawiłem tak:
Kod
if($_POST["send"]==1){    //sprawdzanie czy formularz został wysłany

$serial=$_POST["serial"];
$razy=$_POST["razy"];

$i=0;
while($i<=$_POST["razy"] )
   {
   $suma= $serial + $i;
   print_r($suma.",");
   $i++;


$n=3;
$zmiana= str_pad((int) $suma,$n,"0",STR_PAD_LEFT);


   mysql_query("insert into sonda set serial='$zmiana'");
  
   }

}


i działa smile.gif ) dziękuję wszystkim za pomoc.

q3d twoja metoda sprawdziła ale ona dopisuje zawsze podaną ilość podanych znaków znaków. Mi chodziło o zachowanie maksymalnie trzech cyfr czyli 011, 199 itd. u ciebie zawsze jest 001, 0011, 00199 itd.
q3d
Tak mi się wydawało, że zadziała (; Powodzenia.
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-2024 Invision Power Services, Inc.