Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] dodanie 1 do A001, A001+1=A002
PiiiT
post 21.11.2008, 15:25:44
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


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.
Go to the top of the page
+Quote Post
vokiel
post 21.11.2008, 15:46:18
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


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


--------------------
Go to the top of the page
+Quote Post
PiiiT
post 27.11.2008, 14:40:09
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


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);
}
Go to the top of the page
+Quote Post
nitek
post 27.11.2008, 15:33:40
Post #4





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


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

Ten post edytował nitek 27.11.2008, 15:34:09


--------------------
Go to the top of the page
+Quote Post
PiiiT
post 27.11.2008, 15:40:29
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


Ja chcę zapisać wszystkie elementy tej tablicy w bazie.
Go to the top of the page
+Quote Post
mike
post 27.11.2008, 15:46:35
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(PiiiT @ 27.11.2008, 15:40:29 ) *
Ja chcę zapisać wszystkie elementy tej tablicy w bazie.
To zapisz. W czym problem?
Go to the top of the page
+Quote Post
nitek
post 27.11.2008, 16:01:33
Post #7





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


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


--------------------
Go to the top of the page
+Quote Post
PiiiT
post 1.12.2008, 13:45:39
Post #8





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


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
Go to the top of the page
+Quote Post
nitek
post 1.12.2008, 21:43:20
Post #9





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


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


--------------------
Go to the top of the page
+Quote Post
PiiiT
post 2.12.2008, 14:25:12
Post #10





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


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.
Go to the top of the page
+Quote Post
q3d
post 2.12.2008, 14:40:25
Post #11





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


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.
Go to the top of the page
+Quote Post
PiiiT
post 2.12.2008, 14:52:11
Post #12





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 29.02.2008
Skąd: Poznań

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


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.

Ten post edytował PiiiT 3.12.2008, 20:14:38
Go to the top of the page
+Quote Post
q3d
post 2.12.2008, 15:47:45
Post #13





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


Tak mi się wydawało, że zadziała (; Powodzenia.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 17.05.2024 - 19:30