Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wykonywanie działania na tablicach.
Forum PHP.pl > Forum > Przedszkole
Detro
Jeszcze raz wielkie dzięki za pomoc w poprzednim temacie:
Temat: php mysql Pobieranie kolumny z mysql i zapisanie kazdej wartosci w odrebnej zmiennej

Teraz jestem krok dalej. Mój kod PHP aktualnie to:
  1. <?php
  2.  
  3. include 'connect.php';
  4.  
  5.  
  6. if($formula == ''){
  7. $query = "SELECT * FROM products WHERE ink = '$ink' AND width = $width AND length = $length";
  8. if($ink == '') {
  9. $query = "SELECT * FROM products WHERE width = $width AND length = $length";
  10. if($width == 0){
  11. $query = "SELECT * FROM products WHERE length = $length";
  12. }
  13. }
  14. if($width == 0){
  15. $query = "SELECT * FROM products WHERE ink = '$ink' AND length = $length";
  16. }
  17. if($length == 0){
  18. $query = "SELECT * FROM products WHERE ink = '$ink' AND width = $width";
  19. }
  20. }
  21.  
  22. elseif($ink == ''){
  23. $query = "SELECT * FROM products WHERE formula = '$formula' AND width = $width AND length = $length";
  24. if($formula == ''){
  25. $query = "SELECT * FROM products WHERE width = $width AND length = $length";
  26. }
  27. if($width == 0){
  28. $query = "SELECT * FROM products WHERE formula = '$formula' AND length = $length";
  29. }
  30. if($length == 0){
  31. $query = "SELECT * FROM products WHERE formula = '$formula' AND width = $width";
  32. }
  33. }
  34.  
  35. elseif($width == 0){
  36. $query = "SELECT * FROM products WHERE formula = '$formula' AND ink = '$ink' AND length = $length";
  37. if($length == 0){
  38. $query = "SELECT * FROM products WHERE formula = '$formula' AND ink = '$ink'";
  39. }
  40. }
  41.  
  42. elseif($length == 0){
  43. $query = "SELECT * FROM products WHERE formula = '$formula' AND ink = '$ink' AND width = $width";
  44. }
  45.  
  46. else{
  47. $query = "SELECT * FROM products WHERE formula = '$formula' AND ink = '$ink' AND width = $width AND length = $length";
  48. }
  49.  
  50. $result = mysql_query($query) or die ("0");
  51. if (!mysql_num_rows($result)) die("0");
  52.  
  53. $symbols = array();
  54. while($row = mysql_fetch_array($result))
  55.  
  56. {
  57.  
  58. $symbols[]=$row['symbol'];
  59. $widths[]=$row['width'];
  60. $lengths[]=$row['length'];
  61.  
  62. }
  63.  
  64. echo $symbols[0] . " ";
  65. echo $widths[0] . " ";
  66. echo $lengths[0] . " ";
  67.  
  68. $type = $symbols[0];
  69.  
  70. $query = "SELECT $type FROM acc WHERE user = '$user'";
  71. $result = mysql_query($query) or die ("error");
  72. if (!mysql_num_rows($result)) die("0");
  73.  
  74. while($row = mysql_fetch_array($result))
  75. {
  76. $msi = "{$row[0]}";
  77. }
  78.  
  79. $roolp = $widths[0] / 1000 * $lengths[0] * $msi * 1.56;
  80.  
  81. echo " " . $roolp;
  82.  
  83. ?>


Wynik:
  1. B121 273 300 17.7336432


Jak wykonać powyższe działanie na wszystkich wartościach w kolumnach?

Celem jest wyświetlanie się jedna pod drugą (przykład):
  1. B121 273 300 17.7336432
  2. B121 273 300 17.7336432
  3. B121 273 300 17.7336432
  4. B121 273 300 17.7336432
  5. B121 273 300 17.7336432


pomijając rozwiązanie:
  1. echo $widths[1];
  2. echo $widths[2];
  3. etc.
nospor
FOREACH - patrz manual
Detro
Cytat(nospor @ 24.02.2015, 11:29:24 ) *
FOREACH - patrz manual


Podasz przykład jak zastosować FOREACH w moim przypadku?

Z góry dzięki, jestem zielooony w PHP.
Boshi
  1. foreach ($widths as $key=>$value)
  2. {
  3. echo $key. ' => ' . $value. '<br/>';
  4. }


Nie wiem po co się za to bierzesz jak nie masz zielonego pojęcia o podstawach php.
Detro
Czy mogę wyświetlić zmienną foreach poza funkcję foreach?

Np.

  1. foreach ($symbols as $symbol)
  2. {
  3. $symbolsdata = $symbol . " ";
  4. }
  5. foreach ($widths as $width)
  6. {
  7. $widthsdata = $width . " ";
  8. }
  9. foreach ($lengths as $length)
  10. {
  11. $lengthsdata = $length . " ";
  12. }
  13.  
  14. $roolp = $widthsdata / 1000 * $lengthsdata * 0.0800 * 1.56;
  15.  
  16. echo " " . $roolp;


Potrzebuję zrobić działanie
  1. $roolp = $widthsdata / 1000 * $lengthsdata * 0.0800 * 1.56;
na każdej z wartości w tabelach
  1. $widths, $lengths
oraz wyniki wyświetlić również w kolumnie obok wraz z poprzedzającymi wartościami z tabeli
  1. $symbols
.
Przykład:
  1. B121 273 300 4.1184
  2. B128 312 123 5.1232
  3. C140 153 234 2.4213
  4. itd...
ilidir
wyświetlenie zmiennej do której przypisujesz wartości uzyskane przy pomocy pętli FOREACH poza tą pętlą da ci ostatni wynik jaki przypisała pętla. A zamiast robić 3 tabele nie lepiej ci zrobić jedną na przykład taką:

  1. $tab = array();
  2. $tab = array('symbol'=>$symbols, 'widths'=>$widths, 'lenght'=>$lenghts);


taką tabelę będzie ci łatwiej obsłużyć w pętli na przykład:

  1. foreach($tab as $tabelka=>$wartosc){
  2. $sym = $wartosc[symbol];
  3. $wid = $wartosc[widths];
  4. $len = $wartosc[lenght];
  5. }


teraz masz wszsytkie zmienne w jednej petli

nie wiem czy działa bo pisałem z palca

pozdro
Detro
Cytat(Detro @ 25.02.2015, 03:05:15 ) *
Potrzebuję zrobić działanie
  1. $roolp = $widthsdata / 1000 * $lengthsdata * 0.0800 * 1.56;
na każdej z wartości w tabelach
  1. $widths, $lengths
oraz wyniki wyświetlić również w kolumnie obok wraz z poprzedzającymi wartościami z tabeli
  1. $symbols
.
Przykład:
  1. B121 273 300 4.1184
  2. B128 312 123 5.1232
  3. C140 153 234 2.4213
  4. itd...


Czy jest to możliwe?
ilidir
patrz post powyżej
Detro
Nie działa...
ilidir
pokarz kod
nospor
@ilidir Twoj kod nie ma prawa dzialac... Patrz troche co piszesz.

@Detro:
Jedna petla
  1. foreach ($symbols as $k => $symbol)
  2. {
  3. $width = $widths[$k];
  4. $length = $lengths[$k]
  5.  
  6. }

I masz wszystkie zmiennej jakie potrzebujesz w jednej petli. Teraz rob z nimi co ci sie zywnie podoba
ilidir
@Nospor wydaje mi się że będzie działał jeżeli zamiast $wartość wpiszemy $tabelka i tu jest mój błąd i nie dopatrzenie za które przepraszam
nospor
@ilidir prosze cie, nie strzelaj bo co strzal to coraz gorszy... Odpal swoj kod, zrob co mowisz, a potem pisz posty.
ilidir
dobra już wiem co miałem źle ;p Nie denerwuj się tak smile.gif Człowiek całe życie się uczy smile.gif
Detro
@nospor nie zastąpiony!

Nie wiem jak Ty to robisz ale wszystko śmiga aż miło.
Jestem mega wdzięczny za pomoc.

Apka może być gotowa na czas, jeszcze raz DZIĘKI!
nospor
Cytat
Nie denerwuj się tak
Wskaz prosze fragment mojej wypowiedzi, ktory wskazuje ze jestem zdenerwowany... To ze mowie, ze gadasz głupoty, nie znaczy ze jestem zdenerwowany tongue.gif
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.