Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Operacje na danych z bazy
Forum PHP.pl > Forum > Przedszkole
xziomas
Witam uprzejmie,

mam problem z wykonaniem operacji na danych ktore zczytuje z bazy.

Opis:

Posiadam tabele (przepisy) z pozycjami: nazwa_produktu, data, waga_opakowania, skladnik, jednostka, waga.


Dane pobieram z formularza i zapisuje do bazy - nazwa_produktu, data i waga opakowania sa 'stale' tzn wpisane w formularzu tylko raz natomiast dla kazdego skladnika jest tworzony nowy wiersz zawierajacy rowniez nazwy_produktu itd....

pobieranie danych dla danego przepisu z bazy danych jesty proste (wybieram po nazwie produtku ktora sie nie powtarza - przy wprowadzaniu nowego przepisu skrypt sprawdza czy juz nie ma takiej nazwy pola).


Chcialbym stworzyc skrypt, ktory nie tylko pobiera dane z tabeli, ale rowniez wykonac na tych swiezo pobranych danych operacje i dopiero wtedy wyswietlic:

np.

pole x (tworzone na podstawie danych z bazy) = pole y * pole z.




problem w tym ze po pobraniu (znanymi mi funkcjami) danych z tabeli nie potrafie sie odwolac do danej 'komorki' w tablicy tymczasowej, szukalem i nie moge odnalezc informacji.



prosze o pomoc, mam nadzieje ze dosc jasno opisalem problem.




KOD:

Zapisywanie w bazie danych z przepisu(by pomoc w zobrazowaniu struktury tabeli):
  1.  
  2.  
  3. <?php
  4. if ($_SESSION['access']=='2') {
  5. include 'connect.php';
  6.  
  7.  
  8.  
  9. if( strlen($_POST['product_name'])>0 && strlen($_POST['date'])>0 && strlen($_POST['product_code'])>0 && strlen($_POST['pack_weight'])>0 && strlen($_POST['ingredient'][0])>0) {
  10.  
  11. $product = $_POST['product_name'];
  12. $check = "SELECT * FROM recipes WHERE product_name='$product'";
  13. $sql = mysqli_query($connect, $check);
  14. //$r = mysqli_fetch_assoc($sql);
  15. $check2 = mysqli_num_rows($sql);
  16. if($check2 > 0) {
  17.  
  18. echo 'You already have a Product with this name! Please change!';
  19.  
  20. }
  21. else {
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. $count = count(array_filter($_POST['ingredient']));
  30. $owner = $_SESSION['username']." ".$_SESSION['surname'];
  31. $query = "INSERT INTO recipes (product_name, date, product_code, pack_weight, ingredient, weight, units, size_cut, supplier, number, instructions, allergens, mixing, owner ) VALUES ";
  32. for($i = 0; $i < $count; $i++) {
  33. $query .= "('" . $_POST['product_name'] . "','" . $_POST['date'] . "','" . $_POST['product_code'] . "','" . $_POST['pack_weight'] . "','" . $_POST['ingredient'][$i] . "','" . $_POST['weight'][$i] . "','" . $_POST['units'][$i] . "','" . $_POST['size_cut'][$i] . "','" . $_POST['supplier'][$i] . "','" . $_POST['number'] . "','" . $_POST['instructions'] . "','" . $_POST['allergens'] . "','" . $_POST['mixing'] . "','" . $owner . "')";
  34. if($i < $count - 1)
  35. $query .= ", ";
  36.  
  37.  
  38. mysqli_query($connect,$query);
  39.  
  40.  
  41.  
  42.  
  43. }
  44. echo 'Recipe added!';
  45. ?>
  46. <a href="menu.php"><button>Go Back!</button></a>
  47.  
  48. <?php
  49. }}
  50.  
  51. else { echo 'No neccesary positions in form'; };
  52.  
  53.  
  54.  
  55. }
  56. else {
  57. echo "You're not allowed to be here!";
  58. $url = 'index.php';
  59. echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
  60. }
  61.  
  62. ?>
  63.  
  64.  
  65.  
  66.  
  67.  





p.s. moze latwiej poprostu zrobic operacje na danych przy zapisywaniu do tabeli? Tak czy inaczej prosze o opinie, zawsze chetnie sie czegos nowego naucze smile.gif
nospor
Pobranie danych robisz przy pomocy tego
http://pl1.php.net/manual/en/mysqli-result.fetch-array.php
zapoznaj sie z tym manualem bo pytasz o naprawde proste rzeczy
xziomas
Dzieki za szybka odpowiedz, pobieram dane ta funkcja,
natomiast problem mam po pobraniu, jedyne co umiem (jak narazie smile.gif ) to wyswietlic dane funkcja while. ale pytanie jest - czy da sie - jakos odwolac do danej komorki w tych pobranych danych.



.. | 1 | 2 | 3 |
--------------------------
A | x | y | z |
---------------------------
B | a | s | d |




przypuszczam ze tak wyglada tablica po wczytaniu ja przez w/w funkcje, jak teraz mam sie odwolac do tych danych i zrobic operacje np: B3*A2 (d*y).


Jesli pytanie trywialne to przepraszam, pomozcie bede wdzieczny bo poki co odpowiedzi nie znalazlem smile.gif
nospor
No to skoro juz umiesz pobrac dane, czyli je masz, to jaki masz problem z przemnozeniem jednej wartoci przez druga... ?
xziomas
Ano taki ze nie wiem jak sie odwolac do 'komorki' B3 smile.gif


Podpowiesz? smile.gif
soochy1
  1. $index=1;
  2. while ($row = mysql_fetch_assoc($baza))
  3. {
  4.  
  5. $komórka["B"]["$index"]=$row["B"];
  6. $index++;
  7. }


zakladam ze robisz w ten sposób

wiec utworzy CI się tablica asocjacyjna posiadająca zaciągniete dane z bazy gdzie z wartosciami $komórka["B"]["1"], $komórka["B"]["2"], $komórka["B"]["3"] itd

czyli odwołanie do b3 to będzie $komórka["B"]["3"]
xziomas
Dziekuje,
nie sprawdzalem jeszcze co prawda ale wyglada to prosto i porzadnie - tak jak chcialem wink.gif

Odbiegajac od tematu, czy forma w jakiej zapisuje dane do tabeli jest ok? Czy ktos z doswiadczenia zna inne sposoby, zeby potem latwiej bylo przeprowadzac operacje?




Jeszcze raz dzieki za pomoc,
pozdrawiam
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.