Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pętla dwa zapytania
nikestylex7
post 23.01.2014, 17:09:22
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Witam dotychczasowo pobieram dane oddzielnie tzn pojazdy oddzielnie są wyświetlane oraz ładunki oddzielnie. Chciałbym to zmienić i jakoś urozmaicić robiąc przeróbkę aby na jednej stronie pokazywało mi i ładunki i pojazdy czasem do końca w dół.

chodzi mi o taki efekt


Myślę że wystarczy przerobić zapytania mysql lub użyć jakoś pętli.
Moje oddzielne zapytania

Pojazdy:
  1. $sql = "select * from vehicleAdd join user on user.id_log=vehicleAdd.userID join vehicleAddInfo on vehicleAddInfo.uniqID=vehicleAdd.id join payment on payment.userID=user.id_log where vehicleActive = 1 AND vehicleDatetime >= NOW() AND leftTime >= NOW() AND ".$where.$whereSecond.$whereThird." ORDER by vehicleDatetime ASC LIMIT 0,50";


Ładunki:
  1. $sql = "select * from cargoAdd join user on user.id_log=cargoAdd.userID join cargoAddInfo on cargoAddInfo.uniqID=cargoAdd.id join payment on payment.userID=user.id_log where cargoActive = 1 AND cargoDatetime >= NOW() AND leftTime >= NOW() AND ".$where.$whereSecond.$whereThird." ORDER by cargoDatetime ASC LIMIT 0,50";


Gdzie jest ten haczyk?
Go to the top of the page
+Quote Post
Turson
post 23.01.2014, 18:22:33
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


GROUP BY
Go to the top of the page
+Quote Post
nikestylex7
post 23.01.2014, 19:43:37
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


hmm no tak ale mówisz o grupowaniu a ja bym chciał wyniki z jednego zapytania połączyć z drugim i dać na jedną stronę tylko nie wiem jak połączyć oba zapytania. Na razie wywołując zapytania mam tak

-pojazdy
-pojazdy
-pojazdy
-pojazdy
-pojazdy

potem drugie zapytanie

-ładunki
-ładunki
-ładunki
-ładunki
-ładunki

co na stronie widać tak

-pojazdy
-pojazdy
-pojazdy
-pojazdy
-pojazdy
-ładunki
-ładunki
-ładunki
-ładunki

widoczna jest ta różnica w tym że nie są to wyniki z jednego zapytania tylko z dwóch
Go to the top of the page
+Quote Post
nospor
post 23.01.2014, 21:31:47
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




UNION


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 23.01.2014, 21:43:49
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Czyli co :

  1. $sql = "
  2.  
  3. select * from vehicleAdd join user on user.id_log=vehicleAdd.userID join vehicleAddInfo on vehicleAddInfo.uniqID=vehicleAdd.id join payment on payment.userID=user.id_log where vehicleActive = 1 AND vehicleDatetime >= NOW() AND leftTime >= NOW() AND ".$where.$whereSecond.$whereThird." ORDER by vehicleDatetime ASC LIMIT 0,50
  4.  
  5. UNION
  6.  
  7. select * from cargoAdd join user on user.id_log=cargoAdd.userID join cargoAddInfo on cargoAddInfo.uniqID=cargoAdd.id join payment on payment.userID=user.id_log where cargoActive = 1 AND cargoDatetime >= NOW() AND leftTime >= NOW() AND ".$where.$whereSecond.$whereThird." ORDER by cargoDatetime ASC LIMIT 0,50
  8.  
  9. ";

a jak w php potem się do tego odwoływać np w pętli for albo while?

  1. //cos
  2. }

Go to the top of the page
+Quote Post
nospor
post 23.01.2014, 21:56:51
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Normalnie, jak w przypadku zwyklego zapytania.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 23.01.2014, 22:17:27
Post #7





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


przyznam że jeszcze tak z bazą nie kombinowałem.

hmm normalnie tylko jak potem to rozdzielić z tego zapytania żeby wypełnić jeden ładunek i jeden pojazd tzn jak miałem dwa zapytania to dawałem dwa zapętlenia a teraz muszę jedno zapętlenie lecz pobierane dane się różnią tzn

przykład ładunek:
  1. <div id='cargoSearchInfo'>".$row['cargoCountry']."<br />".$row['cargoPlace']."<br />".$row['cargoCode']."<br /></div>


przykład pojazd:
  1. <div id='vehicleSearchInfo'>".$row['vehicleCountry']."<br />".$row['vehiclePlace']."<br />".$row['vehicleCode']."<br /></div>
Go to the top of the page
+Quote Post
nospor
post 23.01.2014, 22:19:27
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i co z tego ze sie roznią? Od tego wymyslono takie konstrukcje jak IF by w zaleznosci od warunkow robic odpowiednie rzeczy.
Robisz IF i dla ladunku generujesz taki DIV, a dla samochodu inny DIV


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 24.01.2014, 01:43:33
Post #9





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Rozumiem że if ale co w tym ifie dać
Sprawdzać pierwsze zapytanie czy jest cargo czy vehicle?

Pojawił się błąd The used SELECT statements have a different number of columns

kod wygląda ok tylko martwi mnie to że chce liczbe kolumn jak pobieram wszystko * ale tez może mieć racje ponieważ vehicle zawiera 21 a cargo 24 kolumny. Jak to rozwiązać?

  1. $sql = "
  2. (select * from vehicleAdd join user on user.id_log=vehicleAdd.userID join vehicleAddInfo on vehicleAddInfo.uniqID=vehicleAdd.id join payment on payment.userID=user.id_log where vehicleActive = 1 AND vehicleDatetime >= NOW() AND leftTime >= NOW() ORDER by vehicleDatetime ASC LIMIT 0,50)
  3. UNION
  4. (select * from cargoAdd join user on user.id_log=cargoAdd.userID join cargoAddInfo on cargoAddInfo.uniqID=cargoAdd.id join payment on payment.userID=user.id_log where cargoActive = 1 AND cargoDatetime >= NOW() AND leftTime >= NOW() ORDER by cargoDatetime ASC LIMIT 0,50)";
Go to the top of the page
+Quote Post
nospor
post 24.01.2014, 08:53:13
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu zamiast * wyszczegolnij konkretne kolumny ktore cie interesuja. I w obu zapytaniach okresl te samą liczbe kolumn


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 24.01.2014, 18:55:05
Post #11





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


kurde a jak mam o 3 kolumny więcej w vehicle i są to dane potrzebne dlatego można jakoś je ściągnąć dodatkowo?

?

a jak bym chciał zliczyć wszystko to musiałbym wypisać kolumny w

  1. COUNT(tutaj)


ponieważ myślę że z pobraniem wszystkiego znowu będzie błąd ilości kolumn
Go to the top of the page
+Quote Post
nospor
post 24.01.2014, 19:56:05
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
kurde a jak mam o 3 kolumny więcej w vehicle i są to dane potrzebne dlatego można jakoś je ściągnąć dodatkowo?
No to dotworz tam gdzie brakuje
select 0 kolumnaktorejniema, 0 kolumnaktorejniema2, 0 kolumnaktorejniema3, normalnekolumnyktore sa


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 25.01.2014, 18:20:38
Post #13





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


kolejne dwa problemy pierwszy to taki że nawet jeśli w pętli mam if to i tak wszystko wyrzuca w divach kolorowanych pod ładunki , pojazdy powinny być w zielonych a są takie same jak ładunki.

zapytanie

  1. $sql = "(select cargoActive,cargoAddingTime,cargoCountry,cargoCode,cargoPlace,cargoDatetime,carg
    oCountrySecond,cargoCodeSecond,cargoPlaceSecond,cargoDatetimeSecond,
  2.  
  3. id_log,uniqID,cname,cowner,cstreet,cplace,name,surname,direct,phone,direct2,fax,
    email,
  4.  
  5. cargoTypeBuild,cargoCargo,cargoLoadCargo,cargoPalette,cargoBid,cargoCurrency,car
    goCheckCargo,cargoWidth,cargoHeight,cargoLenght,cargoVolume,cargoLoadType,cargoCa
    rgoType,cargoWhat1,cargoWhat2,cargoWhat3,cargoWhat4,cargoWhat5,cargoWhat6,cargoWh
    at7,cargoWhat8,cargoText
  6.  
  7. from cargoAdd join user on user.id_log=cargoAdd.userID join cargoAddInfo on cargoAddInfo.uniqID=cargoAdd.id join payment on payment.userID=user.id_log where cargoActive = 1 AND cargoDatetime >= NOW() AND leftTime >= NOW() LIMIT 0,50)
  8. UNION
  9. (select vehicleActive,vehicleAddingTime,vehicleCountry,vehicleCode,vehiclePlace,vehicleD
    atetime,vehicleCountrySecond,vehicleCodeSecond,vehiclePlaceSecond,vehicleDatetime
    Second,
  10.  
  11. id_log,uniqID,cname,cowner,cstreet,cplace,name,surname,direct,phone,direct2,fax,
    email,
  12.  
  13. vehicleTypeBuild,vehicleCargo,vehicleLoadCargo,0,vehicleBid,vehicleCurrency,0,ve
    hicleWidth,vehicleHeight,vehicleLenght,vehicleVolume,vehicleLoadType,0,vehicleWha
    t1,vehicleWhat2,vehicleWhat3,vehicleWhat4,vehicleWhat5,vehicleWhat6,vehicleWhat7,
    vehicleWhat8,vehicleText
  14.  
  15. from vehicleAdd join user on user.id_log=vehicleAdd.userID join vehicleAddInfo on vehicleAddInfo.uniqID=vehicleAdd.id join payment on payment.userID=user.id_log where vehicleActive = 1 AND vehicleDatetime >= NOW() AND leftTime >= NOW() ORDER by cargoDatetime, vehicleDatetime ASC)
  16. ";
  17. //potem robie //
  18. $result=mysql_query($sql)or die (mysql_error());
  19. while($row=mysql_fetch_assoc($result))
  20. {
  21. if (isset($row['cargoActive'])) {
  22. //jeśli są ładunki//
  23. }else{
  24. //jeśli pojazdy//
  25. }


Drugi błąd to zliczanie danych w bazie bląd Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /newsearch.php on line 1181

  1. $sql = "(select COUNT(*) from cargoAdd join user on user.id_log=cargoAdd.userID join cargoAddInfo on cargoAddInfo.uniqID=cargoAdd.id join payment on payment.userID=user.id_log where cargoActive = 1 AND cargoDatetime >= NOW() AND leftTime >= NOW())
  2. UNION
  3. (select COUNT(*) from vehicleAdd join user on user.id_log=vehicleAdd.userID join vehicleAddInfo on vehicleAddInfo.uniqID=vehicleAdd.id join payment on payment.userID=user.id_log where vehicleActive = 1 AND vehicleDatetime >= NOW() AND leftTime >= NOW())
  4. ";


?

Ten post edytował nikestylex7 25.01.2014, 17:56:02
Go to the top of the page
+Quote Post
nospor
post 25.01.2014, 18:42:09
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Manual naprawde nie gryzie:
http://dev.mysql.com/doc/refman/5.0/en/union.html
Cytat
The column names from the first SELECT statement are used as the column names for the results returned.


Jesli chcesz wiedziec ktore jest ktore, to robisz tak:
select 1 as typ,.....
union
select 2 as typ

A potem w petli:
if ($row['typ']==1) //to pochodzi z pierwszego select
else //to pochodzi z drugiego select

zas co do drugiego bledu, to naucz sie pisac w jednej linii mysql_query a w drugiej mysql_fetch_array. W programowaniu naprawde im mniej nie znaczy lepiej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
com
post 25.01.2014, 18:51:59
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Jak już to tak:
  1. $count = mysql_fetch_row(mysql_query($sql)) or die (mysql_error());


Ale tak jak napisał nospor tak się tego nie powinno robić tu masz pokazane jak to ma wyglądać http://pl1.php.net/mysql_fetch_row

Ten post edytował com 25.01.2014, 18:52:22
Go to the top of the page
+Quote Post
nikestylex7
post 26.01.2014, 19:49:59
Post #16





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


hmm dzięki za słuszne rady zapamiętam na przyszłość co do ifa to działa lecz problem istnieje teraz w tym że jak w
  1. while($row=mysql_fetch_assoc($result))

pobiorę wartości z mojego zapytanie które podałem wyżej to wszystkie dane $row['wszystkie z cargo'] działają poprawnie lecz gdy przyjdzie pobrać wszystko z $row['wszystko z vehicle'] to nic nie zostaje wyświetlone tak jakby te dane w ogóle w bazie nie istniały. Być może problem istnieje w zapytaniu z UNION lecz żadnego błędu nie pokazuje.
Go to the top of the page
+Quote Post
nospor
post 26.01.2014, 20:47:04
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez ci napisalem, ze nazwy kolumn beda takie jak w pierwszym zapytaniu...
Ciezko zrobic
print_r($row);
i samemu na wlasne oczy zobaczyc jak wyglada rekord na ktorym aktualnie pracujesz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 27.01.2014, 01:07:22
Post #18





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


hmm no już rozumiem śmiga.

Następny problem to sortowanie chciałbym żeby posortowało wyniki od najniższego czyli dopisuje ORDER BY cargoDatetime,vehicleDatetime DESC lecz bez rezultatu.

Kolejny to gdzie umieścić limit 0,50 tak aby działał w 1 selekcie czy 2
Go to the top of the page
+Quote Post
nospor
post 27.01.2014, 09:07:00
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wszystko to masz opisane w linku, ktory ci podalem. Zacznijk w koncu do niego zagladac. Masz tam ladnie opisane na czym polega rola nawiasow by uzyskac rozne efekty


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 27.01.2014, 11:17:24
Post #20





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Dzięki nospor za wszystko
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: 14.08.2025 - 00:52