Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Z MySQL do tablicy, Zapełnienie tablicy wybranymi danymi z bazy MySQL.
maverickoti
post 11.05.2013, 14:45:11
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Witam.

Mam problem z zapisaniem tablicy danymi z bazy. Problem polega na tym , że nie wiem ile jest rekordów do zapisania w tablicy. Staram się to rozwiązać w następujący sposób:
1. Loguje się do bazy danych
2. Pobieram wszystkie rekordy gdzie występuje dana fraza :
  1. $query="SELECT `imienazwisko`, `pesel`, `cena`, `rodz_umowy`, `data` FROM `am_umowy` WHERE wystawca = '".$agent."'";

3. Wiem ile jest rekordów dzięki mysql_fetch_assoc($nazwa_zmiennej)
4. I tutaj jest problem jak to zapisać w tablicy, żeby móc potem sortować po jednej z kolumn np dacie.

Starałem się tym sposobem:
  1. $koszyk[] = array(
  2. 'index' => 'wartość',
  3. 'tytul' => $row['title'],
  4. 'idp' => $row['id']
  5. // [...]
  6. );


lub

  1. $tablica[$imienazwisko][$pesel][$cena][$rodz_umowy][$data]=array();


Reasumując poległem. Podejrzewam, że mam już wszystkie klocki do układanki, ale nie umiem ich połączyć. Ktoś pomoże?
Go to the top of the page
+Quote Post
_Borys_
post 11.05.2013, 15:27:37
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


  1. $koszyk['tytul'][] = $row['title'];
  2. $koszyk['idp'][] = $row['id'];
  3. ...

Posortuj sobie w MySQL.

Ten post edytował _Borys_ 11.05.2013, 15:33:51
Go to the top of the page
+Quote Post
--maverickoti--
post 11.05.2013, 20:51:05
Post #3





Goście







Borys mozesz trochę dokładniej?

Dokładnie to chcę zszytać z dwóch tabel MySQL do jednej tablicy i dopiero wtedy posortować.

Przykład:
Tabela MySQL XXX:
imienazwisko, pesel, cena, data
rekord1a
rekord2a
rekord3a

Tabela MySQL YYY:
imienazwisko, pesel, cena, data
rekord1b
rekord2b
rekord3b

tablica
rekord1a
rekord2a
rekord3a
rekord1b
rekord2b
rekord3b

i terach sortuje. Najlepsze, że każdy rekord na wsobie np hmm 4 wartości (imienazwisko, pesel, cena, data). Podejrzewam, że muszę jakąś wielowymiarową tablicę zastosować. Każdy rekord będzie miał tyle samo wartości ale nie wiem ile będzie w sumie rekordów. Rozpientość będzie się wachać od 1 do hmm 300 rekordów.

Go to the top of the page
+Quote Post
maverickoti
post 22.05.2013, 19:42:41
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


  1. $agent = 'agent1';
  2. $query="SELECT `imienazwisko`, `pesel`, `cena`, `rodz_umowy`, `data` FROM `am_umowy` WHERE wystawca = '".$agent."'";
  3. $r = mysql_query($query);
  4. echo '<ul>';
  5. for($lp=0; $lp < mysql_fetch_assoc($r); $lp++) // 4
  6. {
  7. echo '<li>'.$lp.' - '.$tablica['imienazwisko'].' - '.$row['pesel'].' - '.$row['cena'].' - '.$row['rodz_umowy'].' - '.$row['data'].'</li>';
  8. $tablica[$imienazwisko][$pesel][$cena][$rodz_umowy][$data]=$lp[$imienazwisko]*$lp[$pesel]*$lp[$cena]*$lp[$rodz_umowy]*$lp[$data];
  9. }
  10. echo '</ul>';
  11. mysql_close(); // 5


Wymodzilem cos takiego. Czy ktos wie gdzie są błędy. Ogólnie nie wykazuje żednych błędów, ale $tablica jest pusta a baza danych na 100% ma te dane.
Go to the top of the page
+Quote Post
nospor
post 22.05.2013, 19:45:27
Post #5





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




for($lp=0; $lp < mysql_fetch_assoc($r); $lp++) // 4
Co to niby jest?

Zajrzyj do manuala do funkcji mysql_fetch_assoc() a dowiesz się jak to ma wyglądać a nie zgadujesz i cuda tworzysz ...


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

"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
-Andrzej.W.-
post 22.05.2013, 20:01:15
Post #6





Goście







mysql_num_rows jeśli już chcesz tak podstawiać do for.

Ten post edytował Andrzej.W. 22.05.2013, 20:02:38
Go to the top of the page
+Quote Post
maverickoti
post 22.05.2013, 23:20:04
Post #7





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Z góry przepraszam za moj wczorajszy post. Wstyd i tragedia. Ok napisałem to już trochę lepiej, ale nadal mam problem. Mianowicie w kodzie poniżej nie zapisuje mi do tablicy $tablica[].
  1. $agent = 'agent1';
  2. $query="SELECT * FROM `am_umowy` WHERE wystawca = '".$agent."'";
  3. $r = mysql_query($query);
  4.  
  5. $tablica[] = array();
  6. $row = mysql_num_rows($r);
  7. echo '<ul>';
  8. for($lp=0; $lp < $row; $lp++) // 4
  9. {
  10. $imienazwisko=mysql_result($r,$lp,"imienazwisko");
  11. $pesel=mysql_result($r,$lp,"pesel");
  12. $cena=mysql_result($r,$lp,"cena");
  13. $rodz_umowy=mysql_result($r,$lp,"rodz_umowy");
  14. $data=mysql_result($r,$lp,"data");
  15. echo '<li>'.$lp.' - '.$imienazwisko.' - '.$pesel.' - '.$cena.' - '.$rodz_umowy.' - '.$data.'</li>';
  16. $tablica[] = array($lp, $imienazwisko, $pesel, $cena, $rodz_umowy, $data);
  17. }
  18. echo '</ul>';
  19. mysql_close(); // 5
Go to the top of the page
+Quote Post
-Andrzej.W.-
post 23.05.2013, 05:05:02
Post #8





Goście







Nie lepiej sortować to odrazu w bazie jak wspomniał Borys, przekazując odpowiednio spreparowane zapytanie, zależne od tego, co zaznaczy klient, np. od opcji w select? Dodajesz tylko do zapytania klauzulę ORDER BY I LIMIT/DESC LIMIT w zależności od tego, czy ma być malejąco czy rosnąco.
np:
  1. 'SELECT*FROM 'am_umowy' WHERE wystawca = '.$agent.' ORDER BY '.$column.' LIMIT '.$limitmin.', '.$limitmax.'


Zmienna $column przyjmuje odpowiednio wartości 'nazwa_kolumny' lub 'nazwa kolumny DESC'

Przy tak skonstruowanym zapytaniu pozostaje Ci tylko wyświetlenie wyniku. smile.gif
Pozdrawiam.
Andrzej.

Ten post edytował Andrzej.W. 23.05.2013, 06:19:41
Go to the top of the page
+Quote Post
maverickoti
post 23.05.2013, 08:28:49
Post #9





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Niestety nie mogę sortować po tablicy MySQL. Ponieważ w ostatecznym wyniku muszę dostać wartości z dwóch tabel MySQL i nie mogę wyświetlić pierw pierwszej taeli a potem drugiej. One będą się przeplatać (ich wartości.)

Rozwiązałem mój problem. Jak by komuś były potrzebne takie wyniki to podaje code.
  1. $agent = 'agent1';
  2. $query="SELECT * FROM `am_umowy` WHERE wystawca = '".$agent."'";
  3. $r = mysql_query($query);
  4.  
  5. $tablica[] = array();
  6. $row = mysql_num_rows($r);
  7. echo '<ul>';
  8. for($lp=0; $lp < $row; $lp++) // 4
  9. {
  10. $imienazwisko=mysql_result($r,$lp,"imienazwisko");
  11. $pesel=mysql_result($r,$lp,"pesel");
  12. $cena=mysql_result($r,$lp,"cena");
  13. $rodz_umowy=mysql_result($r,$lp,"rodz_umowy");
  14. $data=mysql_result($r,$lp,"data");
  15. echo '<li>'.$lp.' - '.$imienazwisko.' - '.$pesel.' - '.$cena.' - '.$rodz_umowy.' - '.$data.'</li>';
  16. $tablica[] = array($lp, $imienazwisko, $pesel, $cena, $rodz_umowy, $data);
  17. $tablica[] = array('lp'=>$lp, 'ImieNazwisko'=>$imienazwisko, 'Pesel'=>$pesel, 'Cena'=>$cena, 'RodzUmowy'=>$rodz_umowy, 'Data'=>$data);
  18. }
  19. echo '</ul>';
  20. mysql_close(); // 5
  21.  
  22. foreach($tablica as $i => $linia) {
  23. $tablica[i]['lp'];
  24. }
  25.  
  26. print '<pre>';
  27. print_r($tablica);
  28. print '</pre>';
Go to the top of the page
+Quote Post
alegorn
post 23.05.2013, 10:09:06
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


Cytat
Niestety nie mogę sortować po tablicy MySQL. Ponieważ w ostatecznym wyniku muszę dostać wartości z dwóch tabel MySQL i nie mogę wyświetlić pierw pierwszej taeli a potem drugiej. One będą się przeplatać (ich wartości.)

join... ?


Cytat
foreach($tablica as $i => $linia) {
$tablica[i]['lp'];
}


co to ma robic....... ?
Go to the top of the page
+Quote Post
maverickoti
post 28.05.2013, 19:54:47
Post #11





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


  1. $agent = 'agent1';
  2. $names = array();
  3. $query1="SELECT * FROM `am_umowy` WHERE wystawca = '".$agent."'";
  4. $r = mysql_query($query1);
  5. $row = mysql_num_rows($r);
  6. echo '<ul>';
  7. for($lp=0; $lp < $row; $lp++) // 4
  8. {
  9. $imienazwisko=mysql_result($r,$lp,"imienazwisko");
  10. $pesel=mysql_result($r,$lp,"pesel");
  11. $cena=mysql_result($r,$lp,"cena");
  12. $rodz_umowy=mysql_result($r,$lp,"rodz_umowy");
  13. $data=mysql_result($r,$lp,"data");
  14. echo '<li>'.$imienazwisko.' - '.$pesel.' - '.$cena.' - '.$rodz_umowy.' - '.$data.'</li>';
  15. $names[] = $lp;
  16. $names = ('imienazwisko', 'pesel', 'cena', 'rodz_umowy', 'data');
  17. }
  18. echo '</ul>';


Kto wie co tu jest nie tak?
Go to the top of the page
+Quote Post
nospor
post 28.05.2013, 20:03:27
Post #12





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




Cytat
Kto wie co tu jest nie tak?
A może byś tak łaskawie raczył napisać czym teraz objawia się błąd.... mamy zgadywaćquestionmark.gif

Lektura obowiązkowa dla Ciebie:
Temat: Jak poprawnie zada pytanie


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

"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
maverickoti
post 29.05.2013, 11:42:33
Post #13





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Racja nospar. Poprostu brak mi sil do tego kodu. Wyskakuje mi taki błąd:
Parse error: syntax error, unexpected ',' in /home/......../examples/finanse_agenta.php on line 16.

Zmieniłem linijkę 15 i 16 na coś takiego:
  1. $names[$lp] = ('imienazwisko'=>$imienazwisko, 'pesel'=>$pesel, 'cena'=>$cena, 'rodz_umowy'=>$rodz_umowy, 'data'=>$data);

i teraz mam taki błąd:
  1. Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/eab29082/public_html/automarket.co.pl/tcpdf/examples/finanse_agenta.php on line 15



Ten post edytował maverickoti 29.05.2013, 11:43:45
Go to the top of the page
+Quote Post
nospor
post 29.05.2013, 11:45:56
Post #14





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




Skoro chcesz zapisać tablice, to musisz powiedziec ze zapisujesz tablice.... php jak my wróżką nie jest :/

$names[$lp] = array('imienazwisko'=>$imienazwisko, 'pesel'=>$pesel, 'cena'=>$cena, 'rodz_umowy'=>$rodz_umowy, 'data'=>$data);


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

"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
maverickoti
post 29.05.2013, 19:51:43
Post #15





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


Dzięki wielkie. Tak jest. Oczywiscie działa biggrin.gif

Oczywiście napotkałem na kolejny problem. Mianowicie posiadam kod który działa. Pobiera on dane z dwóch tablel z bazy SQL po czym sumuje je w jedną tablicę (array). Wynikiem mam dwuwymiarową tablicę. Teraz chcę zsumować wartości liczbowe z 4 kolumny.
LP| imie | nazwisko | wartosc | data
0 | Aa | BBb | 23 | 20.09.12
1 | FL | We | 34 | 23.11.12


Chcę zsumować kolumnę wrtość czyli 23 + 34.

  1. $umowy_array = array();
  2. $zapytanie_faktury = array();
  3. $umowy_total = array();
  4. $agent = 'klimczyk';
  5. $query_umowy="SELECT * FROM `am_umowy` WHERE wystawca = '".$agent."'";
  6. $zapytanie_umowy = mysql_query($query_umowy);
  7. $row = mysql_num_rows($zapytanie_umowy);
  8. for($lp=0; $lp < $row; $lp++) // 4
  9. {
  10. $imienazwisko=mysql_result($zapytanie_umowy,$lp,"imienazwisko");
  11. $pesel=mysql_result($zapytanie_umowy,$lp,"pesel");
  12. $cena=mysql_result($zapytanie_umowy,$lp,"cena");
  13. $rodz_umowy=mysql_result($zapytanie_umowy,$lp,"rodz_umowy");
  14. $data=mysql_result($zapytanie_umowy,$lp,"data");
  15. $umowy_array[$lp] = array($imienazwisko, $pesel, $cena, $rodz_umowy, $data);
  16. }
  17. $query_faktury="SELECT * FROM `am_faktury` WHERE wystawca = '".$agent."'";
  18. $zapytanie_faktury = mysql_query($query_umowy);
  19. $row = mysql_num_rows($zapytanie_faktury);
  20. for($lp=0; $lp < $row; $lp++) // 4
  21. {
  22. $imienazwisko=mysql_result($zapytanie_faktury,$lp,"imienazwisko");
  23. $pesel=mysql_result($zapytanie_faktury,$lp,"pesel");
  24. $cena=mysql_result($zapytanie_faktury,$lp,"cena");
  25. $rodz_umowy=mysql_result($zapytanie_faktury,$lp,"rodz_umowy");
  26. $data=mysql_result($zapytanie_faktury,$lp,"data");
  27. $faktury_array[$lp] = array($imienazwisko, $pesel, $cena, $rodz_umowy, $data);
  28. }
  29. $umowy_total = array_merge($umowy_array, $faktury_array);
  30. foreach ( $umowy_total as $pozycja => $wartosc_komorki ){
  31. $suma += $umowy_total[$wartosc_komorki][4];
  32. $liczba_p = $pozycja + 1;
  33. echo '<tr><td><b>' . $liczba_p. '</b></td>';
  34.  
  35. for ( $i = 0; $i < count($wartosc_komorki); $i++ )
  36. {
  37. echo '<td>' .$wartosc_komorki[$i]. '</td>';
  38. }
  39.  
  40. echo '</tr>';
  41. }
  42. print_r($suma);


W wierszu 32 coś tam uskuteczniałem ale nic nie wyszło. Wyskakuje błąd: Warning: Illegal offset type in /home/......

Ten post edytował maverickoti 29.05.2013, 19:53:21
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 - 12:53