Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]tworzenie tablicy as.
Forum PHP.pl > Forum > Przedszkole
sci201
Witam
musze stowrzyć taką o sobie tablice as.
  1. array('paczki'=>array( 'paczka'=> array(
  2. array('typ'=>'Standardowa','gab1'=>'62','gab2'=>'47','gab3'=>'22','waga'=>'30','ksztalt'=>'Paczka'),
  3. array('typ'=>'Standardowa','gab1'=>'62','gab2'=>'47','gab3'=>'22','waga'=>'27','ksztalt'=>'Paczka')
  4. )));


Dane są pobierane z bazy MySQL

rowiązałem to tak:
  1. $data = "array('paczki'=>array(
  2.  
  3. 'paczka'=> array(
  4.  
  5. <br> ";
  6.  
  7. $zapytanie6="SELECT * FROM paczki WHERE `id_z` ='226'";
  8. $wykonaj6=mysql_query($zapytanie6,$db) or die(mysql_error());
  9. $rekordow = mysql_num_rows($wykonaj6);
  10. $limit=$rekordow-1;
  11. if($rekordow==1){
  12. while($p=mysql_fetch_array($wykonaj6)){
  13. $data.="array('typ'=>'$p[2]','gab1'=>'$p[4]','gab2'=>'$p[5]','gab3'=>'$p[6]','waga'=>'$p[7]','ksztalt'=>'$p[3]')";
  14. }
  15. $data.=")));";
  16. }
  17.  
  18. if($rekordow>1){
  19. $zapytanie7="SELECT * FROM paczki WHERE `id_z` ='226' order by `id` limit $limit";
  20. $wykonaj7=mysql_query($zapytanie7,$db) or die(mysql_error());
  21. if(mysql_num_rows($wykonaj7)>0){
  22.  
  23.  
  24. while($p=mysql_fetch_array($wykonaj7)){
  25.  
  26. $data.="array('typ'=>'$p[2]','gab1'=>'$p[4]','gab2'=>'$p[5]','gab3'=>'$p[6]','waga'=>'$p[7]','ksztalt'=>'$p[3]'),<br>";
  27. }
  28. $zapytanie9="SELECT * FROM paczki WHERE `id_z` ='226' order by `id` DESC Limit 1";
  29. $wykonaj9=mysql_query($zapytanie9,$db) or die(mysql_error());
  30. if (mysql_num_rows($wykonaj9)>0){
  31. while($g=mysql_fetch_array($wykonaj9)){
  32. $data.="array('typ'=>'$g[2]','gab1'=>'$g[4]','gab2'=>'$g[5]','gab3'=>'$g[6]','waga'=>'$g[7]','ksztalt'=>'$g[3]')<br>";
  33. }}
  34. $data.=")));";
  35. }}
  36. echo"$data";
i tworzy to taka tablice...tylko czy nie da się tego jakoś bardziej zoptymalizować bo taka ilosć selectów nie bardzo mi sie widzi. // <br > dla czytelnosci kodu tymczasowo sa wstawione//
Greg0
Lepiej podaj tutaj strukturę bazy danych, co w tej bazie jest i co chcesz z tymi danymi zrobić.
bo tutaj widze że coś pobierasz potem znów pobierasz ale limitujesz i nic z tego nie kumam.
sci201
Struktura
id |id_z | typ | rodzaj | dl | sz | wy | waga


dane w bazie:

25 224 Standardowa Paczka 20 20 20 10
26 225 Standardowa Paczka 35 30 20 8
27 226 Standardowa Paczka 62 47 22 30
28 226 Standardowa Paczka 62 47 22 27

id jest na A_I jest takz unikatowym id paczki
id_z jest identyfikatorem zamowienia ( do kotrego zamowienia dana paczka)
reszta to opis paczki
Qvazar
moim zdaniem robisz bład bo chcesz utworzyć zapis tekstowy tablicy zamiast tworzyć tablice w php, np.
$paczki['paczka'][]['typ']=$p[2];
$paczki['paczka'][]['gab1']=$p[4]; itp;
sci201
potrzebuje własnie to utworzyc jako zapis txt bo potem takie podzapytania stworze z paru w 1 całość i pojdzie jako jedno. // zapytanie do SOAP. siódemki
Qvazar
rozumiem, że problem masz z przecinkiem pomiędzy poszczególnymi array() jeśli jest ich więcej. Może zastosuj zmienną, np.
  1.  
  2.  
  3.  
  4. }
  5. $data = "array('paczki'=>array(
  6.  
  7. 'paczka'=> array(
  8.  
  9. <br> ";
  10.  
  11.  
  12.  
  13.  
  14.  
  15. $zapytanie6="SELECT * FROM paczki WHERE `id_z` ='226'";
  16. $wykonaj6=mysql_query($zapytanie6,$db) or die(mysql_error());
  17. $rekordow = mysql_num_rows($wykonaj6);
  18.  
  19. $przecinek=', ';
  20. $index=0;//musisz sprawdzić bo może trzeba ustawić startową wartość 1
  21. if($rekordow==1){$przecinek='';}
  22. if($rekordow>1){$przecinek=', ';
  23.  
  24.  
  25. $limit=$rekordow-1;
  26.  
  27. while($p=mysql_fetch_array($wykonaj6)){
  28.  
  29.  
  30. //potem zwiększasz
  31. $index++;
  32. //sprawdzasz czy
  33. if($index==$rekordow){$przecinek='';}
  34.  
  35.  
  36. $data.="array('typ'=>'$p[2]','gab1'=>'$p[4]','gab2'=>'$p[5]','gab3'=>'$p[6]','waga'=>'$p[7]','ksztalt'=>'$p[3]')".$przecinek;
  37. }
  38. $data.=")));";
  39.  
  40.  
sci201
Ciekawe rozwiązanie. wrecz idealne bo odciąży mi bazę poprawiłem tylko żeby jeszcze poprawnie się wyświetlało dla 1 wpisu

  1. <?php
  2.  
  3. /**
  4.  * @author
  5.  * @copyright 2012
  6.  */
  7. $id_z='225';
  8. include('baza.php');
  9. $data = "array('paczki'=>array(
  10.  
  11.  
  12.  
  13. 'paczka'=> array(
  14.  
  15.  
  16.  
  17. <br> ";
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. $zapytanie6="SELECT * FROM paczki WHERE `id_z` ='228'";
  30.  
  31. $wykonaj6=mysql_query($zapytanie6,$db) or die(mysql_error());
  32.  
  33. $rekordow = mysql_num_rows($wykonaj6);
  34.  
  35.  
  36.  
  37. $przecinek=', ';
  38.  
  39. $index=0;//musisz sprawdzić bo może trzeba ustawić startową wartość 1
  40.  
  41. if($rekordow==1){$przecinek='';
  42. while($p=mysql_fetch_array($wykonaj6)){
  43. $data.="array('typ'=>'$p[2]','gab1'=>'$p[4]','gab2'=>'$p[5]','gab3'=>'$p[6]','waga'=>'$p[7]','ksztalt'=>'$p[3]')<br>".$przecinek;}
  44. $data.=")));";
  45. }
  46. if($rekordow>1){$przecinek=', ';
  47.  
  48.  
  49.  
  50.  
  51.  
  52. $limit=$rekordow-1;
  53.  
  54.  
  55.  
  56. while($p=mysql_fetch_array($wykonaj6)){
  57.  
  58.  
  59.  
  60.  
  61.  
  62. //potem zwiększasz
  63.  
  64. $index++;
  65.  
  66. //sprawdzasz czy
  67.  
  68. if($index==$rekordow)
  69. {
  70. $przecinek='';
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77. $data.="array('typ'=>'$p[2]','gab1'=>'$p[4]','gab2'=>'$p[5]','gab3'=>'$p[6]','waga'=>'$p[7]','ksztalt'=>'$p[3]')<br>".$przecinek;
  78.  
  79. }
  80.  
  81. $data.=")));";}
  82. echo"$data";
  83. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.