![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Panowie,
Obszukałem się po necie i nie znalazłem żadnego przykładu z którego mógłbym skorzystać (nigdzie nie spotkałem przykładu wprost opisującego - jeśli to wogóle możliwe - dodawania kolejnych elementów do tablicy w sposób jak sobie wymyśliłem a mianowicie: (tak to sobie wymyśliłem) $tablica = array(wartość_x, wartość_y, kolejna wartość po rzejściu pętli odczytującej, i tak dalej); czyli po zakonczeniu odczytu z bazy w mojej tablicy powinno się znajdować np 20 'id' określonych w zapytaniu do bazy. czyli przykładowo coś takiego: array(3, 14, 25, 26, 28, 36, 44, 45, 75, 122, 543, ...) czy dobrze kombinuję czy to chore wymysły dinozaura ? A może poprostu podchodzę do tematu jak chłop do "kombajna" ? Może powinienem te dane o które mi chodzi zapisać jako string w jakiejś zmiennej ? - Potem będę się martwił jak go stamtąd wyciągnąć ![]() Potrzebuję podpowiedzi, jak rozwiązać taki problem. odczytuje dane z bazy, buduje tabele i przy okazji chcialbym zbudować tablice (array) z określonym jedny elementem (id) ktory pozniej wykorzystam do odczytania wybranych rekordow z bazy.
po zakończeniu do odczytania kolejnych zapisanych w tablicy ID'ów użyję pętli 'for' a co dalej jeszcze nie wiem, pewnie gdziecto będę zapisywał ![]() W każdym razie utknąłem na tworzeniu zbioru z ID'ami ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Dobrze robisz tylko nie rozumiem po co tworzysz drugi wymiar tablicy umieszczając w nim jeden element - id. Lepiej od razu czyli:
i wtedy pętlą foreach lub while. Można też ominąć całkowicie tą pętlę i od razu mysql_fetch_row() i po tej tablicy liczbowej pętlami foreach lub while. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
No właśnie to nie było do końca dla mnie jasne
![]() Wszak amator jestem ![]() Dziękuję za podpowiedź Ważniaku ![]() ![]() ![]() Ważniaku pomóż ![]() Wprowadziłem w czyn i ładnie tworzy mi tablice z wybranymi danymi, pięknie wyświetla ale juz pobierać kolejno .... nie bardzo chce. Gdzie robię błąd ?
Ten post edytował phpamator 8.12.2013, 17:58:37 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
$array[$i] nie wiem co
pętlę if otwiera się jak każdą inna { a zamyka } a masz średnik. $x co to? Chyba, ze to wycinek kodu |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
OMG ale baran ze mnie
![]() Dzięki turson i tu fragment kodu ...
Ma to jakiś sens ? (To chyba skutek zmęczenia ![]() Dzięki Ten post edytował phpamator 8.12.2013, 21:38:46 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
a nie musi
![]() Myslalem ze aby odczytac kolejne elementy z tablicy $array musi byc ta petla ![]() Wiec petla while zrobi to samo ![]() i tylko mam dodac $i++ na koncu ? Moje zalozenie bylo takie, ze po pierwszym odczytaniu danych z bazy drukuje liste z ktorej pozniej wybieram co mi potrzebne i tworze tablice tych elementow a nastepnie z tej tablicy odczytuje po kolei aby wygenerowac kolejna liste. Wiem, bez sensu, dlaczego nie zrobic tego od razu podajac w zapytaniu szczegolowe informacje zeby dostac od razu potrzebne rzeczy .... to dlatego, ze jesli zapytasz baze o jedna informacje np model dostaniesz cala mase informacji z okreslona nazwa czy modelem wiec zeby byla mozliwosc wybrac poprostu dodatkowo tylko to co cie interesuje .... itd. A moze masz jakas koncepcje jak to zrobic inaczej ? Lepiej ? Pozdrawiam Ten post edytował phpamator 9.12.2013, 15:05:44 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
No jasne, że po prostu zwiększasz w pętli while zmienną przez $zmienna++
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Czyli tak powinno dzialac ?
pokazuje mi tylko ilosc elementow w tablicy ... [php] $rez = "SELECT * FROM stock WHERE id = $array[$p] ORDER BY id"; echo '<div id="wynik">Results:<hr size="0"><br>'; while ($row = mysql_fetch_array($rez)) { echo "Lp. ".$row['brand_id'].', Item: '.$row['item_id'].' '.$row['model_id'].' element '.$ar.'<br>';} $p++; echo '</div>'; [/php/ Czy w dalszym ciagu nie zrozumialem bo w dalszym ciagu mi nie drukuje wyniku pobierania z bazy danych z tablicy ![]() ![]() ![]() Ten post edytował phpamator 9.12.2013, 15:29:00 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
$array[$p] - powiedz mi co to jest i skąd się bierze?
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
nieco wczesniej zadeklarowalem zmienna z nadzieja ze zadziala.
$array = array(); i w nastepnym kroku aby odczytac element z tablicy $array[$p] i pozniej juz w petli mam $p++ w celu zinkrementowania wartosci odpowiadajacej kolejnemu elementowi w tablicy Cos bredze prawda ? Ten post edytował phpamator 9.12.2013, 15:32:07 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widzę to $p inkrementujesz później niż pojawia się w zapytaniu.
Na wszelki przypadek włącz sobie wyświetlanie błędów jak nie masz |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Przed zapytaniem zmienna $p ustawiana jest na '0' i w zasadzie gdzies powinna byc porownywana z $x co by zrobic okreslona ilosc obrotow petli.
ale mowiac szczerze .... zrobilem tak i dalej ... ku....rcze nie dziala ![]() Jak powinienem to zrobic ? Jak zrobie var_dump($array) widzie, ze wszystko jest jak trzeba tablica zawiera dane ale w petli while nie chce czytac kolejnych elementow z tej tablicy ... teoretycznie powinno to wygladac tak:
czy sie myle ? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Jakkolwiek zmienie w dalszym ciagu nie dostaje tego czego oczekuje.
Podrzuce wiekszy kawalek kodu to moze cos podpowiesz. W międzyczasie znalazłem jedną ciekawostkę o ile miało to jakieś znaczenie, otóż: wcześniej zmienna kwyglądała tak: $res = ("SELECT * FROM stock WHERE id = $array[$p]"); teraz ![]() w wyniku czego pokazuje mi pierwszy rekord o id zapisanym w array'u w dalszym ciągu jednak nie kontynuuje tylko poprzestaje na odczytaniu tylko tego jednego bo ... zmienna $p = 0; ![]() ![]() ![]() ![]() Jak zmusić skrypt aby przeleciał wszystkie ID'y zapisane w array'u ? czyli aby pętla while działała jak należy ? powiedzmy, że w tablicy mam 5 elementów i chciałbym je wszystkie. ghdzie umiescic i w jaki sposob zeby mi petla obracala tyle razy ile wynosi $x ?
poza tym wszystko OK Pozdrawiam Any sugestions ? Ten post edytował phpamator 10.12.2013, 01:10:34 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
w wyniku czego pokazuje mi pierwszy rekord o id zapisanym w array'u w dalszym ciągu jednak nie kontynuuje tylko poprzestaje na odczytaniu tylko tego jednego bo ... zmienna $p = 0; ![]() ![]() ![]() ![]() Dlatego też zaleciłem użycie LIMIT 10 zamiast warunku. Powiedzmy, że chcesz pokazać wszystkie rekordy o id 1-10, więc można
Pokaże 10 pierwszych. Ewentualnie możesz użyć offset by pokazać np. od 31 do 93 etc. Pytasz o to co zrobić, żeby przeleciało rekordy wg. $array[p] Logiczne jest, że p musi się inkrementować.
Ten post edytował Turson 10.12.2013, 17:21:58 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Dlatego też zaleciłem użycie LIMIT 10 zamiast warunku. Powiedzmy, że chcesz pokazać wszystkie rekordy o id 1-10, więc można
Pokaże 10 pierwszych. Ewentualnie możesz użyć offset by pokazać np. od 31 do 93 etc. Pytasz o to co zrobić, żeby przeleciało rekordy wg. $array[p] Logiczne jest, że p musi się inkrementować.
Nie przecze, ze byloby logocznie ![]() ![]() A mi jak pewnie zauwazyles chodzi o te rekordy dla ktorych buduje array ![]() Czyli pobiera element 0 => 13 i zapytanie pobiera z bazy rekord 13, w nastepnym przejsciu pobiera element tablicy 1=> 19 i pobieram z bazy rekord o tym numerze itd itd az do ostatniego elementu z array'a. Wiec jak to tutaj wkleic ? A moze skrypt sam "wie" ze ma pobierac tylko te rekordy ktorych ID zapisalem w array ![]() ![]() ![]() ![]() clever ![]() AAAA i zalapalem, dlaczego dopiero teraz ![]() Faktycznie, nie wiem dlaczego uparlem sie do petli while, zamiast od razu uzyc for i ......z glowy. ale ze mnie baran .... sorry ![]() Doszedlem, w koncu !
Noo i tak dziala jak chcialem, dlaczego nikt mnie barana nie poprawil i nie powiedzial ze zmienna $res wraz z calym zapytaniem powinna sie znajdowac wewnatrz petli ![]() A ja sie motam i motam bo nie wiedzialem, bylem przekonany, ze jesli zadeklaruje $res = .... to bedzie dzialalo a to ...nie chcialo ![]() ![]() Bardzo dziekuje za pomoc wszystkim ktorzy wzieli udzial. Pozdrawiam i ostrzegam .... bedzie wiecej pytan ![]() ![]() ![]() Ten post edytował phpamator 10.12.2013, 17:44:36 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 1 Dołączył: 26.05.2011 Skąd: Moon Ostrzeżenie: (10%) ![]() ![]() |
Ooops, sorry, nie dotarlo do mnie najwyrazniej albo nieuwaznie przeczytalem albo moje zdolnosci analityczne ..... sa do bani
![]() ![]() ![]() faktycznie i dopiero po tym poscie cos mi zaswitalo. Niemniej, dzieki ![]() Kolejna lekcja z ktorej cos wyciagnalem. Od teraz bede wiedzial jak to powinno wygladac ![]() A przy okazji, jak ty rozwiazal bys taki problem: wyciagasz z bazy liste produktow okreslonych w wyszukiwaniu i nastepnie poniewaz nie wszystko jest ci potrzebne chcialbys wybrac tylko konkretne rzeczy i wyrzucic na osobna liste. (zastosowalem formularz i radio buttony, generuje nowa liste z warunkiem jesli radio button=1 ok jesli nie omin) Ale moze jest jakis inny patent ? a propo's szukam tez rozwiazania jak zrobic jakis sensowny wyszukiwacz, w tej chwili mam calkiem sprawny ale denerwuje mnie, ze mam kilka pol wzgledem ktorych budowane jest zapytanie, czy nie dalo by sie tego zrobic w formie np jednego pola. Z drugiej strony mysle, ze musialbym wtedy dosc precyzyjnie wpisywac czego szukam. Ale czy mozliwe jest aby do wyszukania podac np tylko fragmenty nazwy np zamiast dell powiedzmy de i numer modelu ale w jednym inpucie a nie w kilku ? Tak jak pisalem w tej chwili mam zrobione tak: Model: <input> numer: <input> itd chyba ze 7 pozycji z tego dopiero jest generowana zmienna do zapytania $where Wyszukuje calkiem dobrze tak na marginesie.) Ten post edytował phpamator 10.12.2013, 18:33:05 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
A przy okazji, jak ty rozwiazal bys taki problem: wyciagasz z bazy liste produktow okreslonych w wyszukiwaniu i nastepnie poniewaz nie wszystko jest ci potrzebne chcialbys wybrac tylko konkretne rzeczy i wyrzucic na osobna liste. (zastosowalem formularz i radio buttony, generuje nowa liste z warunkiem jesli radio button=1 ok jesli nie omin) Ale moze jest jakis inny patent ? Jeśli to użytkownik z poziomu strony wybiera co ma być dalej przetwarzane to chyba innego rozwiązania nie ma, ew. takie bardziej estetyczne jak np. 1 checkbox dla każdego wyniku i w zależności czy kliknięty czy nie robisz coś. Co do wyszukiwarki, to by działało tak, że rozbijasz explodem wyszukiwaną frazę po spacjach i w pętli szukasz wyniku dla każdego elementu tablicy (oczywiście w zapytaniu nie "=", a LIKE) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 06:15 |