[PHP] dodanie 1 do A001, A001+1=A002 |
[PHP] dodanie 1 do A001, A001+1=A002 |
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.
|
|
|
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 -------------------- |
|
|
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); } |
|
|
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 -------------------- |
|
|
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.
|
|
|
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%) |
|
|
|
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%) |
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.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 |
|
|
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); i może wklej cały kod skryptu, bo coś tu na pewno nie gra... -------------------- |
|
|
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. |
|
|
2.12.2008, 14:40:25
Post
#11
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 7 Dołączył: 10.01.2006 Ostrzeżenie: (0%) |
|
|
|
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 ) 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 |
|
|
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.
|
|
|
Wersja Lo-Fi | Aktualny czas: 17.05.2024 - 19:30 |