Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Operacje na danych z mysql przez php
Forum PHP.pl > Forum > Przedszkole
pablo663
Witam, jestem dosyć początkujący i nie mogę ruszyć pewnego tematu.
Jak w php robić obliczenia na danych z bazy danych?
Przykładowo:

W bazie danych mam
-id
-nazwa ciasta
-ilość jajek
-ilość mąki

Jak to obsłużyć w php żebym np. po wybraniu nazwy ciasta i wpisaniu ilości tego ciasta (np. 5 serników) dodawało mi potrzebne składniki i je wyświetlało?
Ucze się z książki "Tworzenie stron internetowych w php. Vademecum profesionalisty"
Z góry dzięki i pozdrawiam.
tog
skoro wydales kase na ksiazke i takich prostych rzeczy nie umiesz zrobic... heh snitch.gif

http://webmade.org/kursy-online/mysq_fetch...-kurs-mysql.php
dalej juz sobie poradzisz... mam nadzieje
pablo663
Dzięki, spróbuje coś zadziałać:)
Eagle
Najpierw pobierasz potrzebne Ci dane (ilosć mątki i jajka)
  1. SELECT `maka`, `jajka` FROM `przepisy` WHERE `nazwa` LIKE 'sernik'


(Zakładam że w bazie masz zawsze dane dla jednego ciasta)

Później już tylko w php mnożysz;

  1. $ileSernikow = 5;
  2. $przepis <-- tu pobierasz dane z sql
  3. $ileJajek = $ileSernikow * $przepis['jajka'];
  4. $ileMaki = $ileSernikow * $przepis['maka'];


Pisane z palca
pablo663
Napisałem coś takiego:


  1. CREATE TABLE `ciasto` (
  2. `id` INT NOT NULL AUTO_INCREMENT,
  3. `nazwa` VARCHAR(50),
  4. PRIMARY KEY (`id`)
  5. );


  1. CREATE TABLE `składnik` (
  2. `id` INT NOT NULL AUTO_INCREMENT,
  3. `nazwa` VARCHAR(50),
  4. `id_ciasta` INT,
  5. PRIMARY KEY (`id`)
  6. );



  1. <?php
  2. // połączenie z bazą
  3. $polaczenie = mysql_connect('localhost', 'xxxx', '12345') or die("Brak połączenia: " . mysql_error());
  4. $baza = mysql_select_db('cukiernia',$polaczenie) or exit("Nie wybrano bazy, błąd: " . mysql_error());
  5. ?>
  6.  
  7. <?php
  8.  
  9.  
  10.  
  11. //Odbieram dane
  12.  
  13. $_POST['ciasto_id'];
  14. $_POST['liczba'];
  15.  
  16. //Zapytanie o produkty
  17. $q="SELECT nazwa FROM składnik WHERE id_ciasta=$_POST['ciasto_id']";
  18. $r=mysql_query($q);
  19.  
  20. //wyciągam z bazy i wypisuje
  21. echo "Składniki potrzebne do upieczenia".$_POST['liczba']."ciast";
  22. while($sql=mysql_fetch_assoc($r) {
  23.  
  24. echo $_sql['nazwa']." ilosc : ".$_POST['liczba'];
  25.  
  26. }
  27.  
  28. ?>
  29.  


Co jest nie tak? Pozdrawiam i z góry dziękuje za odpowiedzi.
kingofspace
<?php
// połączenie z bazą
$polaczenie = mysql_connect('localhost', 'xxxx', '12345') or die("Brak połączenia: " . mysql_error());
$baza = mysql_select_db('cukiernia',$polaczenie) or exit("Nie wybrano bazy, błąd: " . mysql_error());
?>

<?php



//Odbieram dane

$ciasto=$_POST['ciasto_id'];
$liczba=$_POST['liczba'];

//Zapytanie o produkty
$q="SELECT * FROM składnik WHERE id_ciasta=$ciasto";
$r=mysql_query($q);



//wyciągam z bazy i wypisuje
echo "Składniki potrzebne do upieczenia";
echo($liczba);
echo"ciast";

$r=mysql_fetch_assoc($r);
$nazwa=$r['nazwa'];

echo($nazwa);
echo('ilosc : ');
echo('$liczba');
}

?>

daj tak powinno działać
pablo663
Zrobiłem taki formularz [formularz.html] :

  1. <form action="cuk3.php" method=post>
  2. <table border=0>
  3. <tr bgcolor=#CCCCCC>
  4. <td width="150">Program obliczeniowy</td>
  5. <td width="15">Skladniki ciast</td>
  6. </tr>
  7.  
  8. <tr>
  9.  
  10. <td>Numer ciasta</td>
  11. <td align="center"><input type="text" name="ciasto_id" size="3" maxlength="3"></td>
  12. </tr>
  13. <tr>
  14. <td>Ilosc</td>
  15. <td align="center"><input type="text" name="liczba" size="3" maxlength="3"></td>
  16. </tr>
  17. <tr>
  18. <td colspan="2 align="center"> <input type="submit" value="Oblicz"></td>
  19. </tr>
  20. </form>



Skrypt obliczający [cuk3.php] :

  1. <?php
  2.  
  3. $polaczenie = mysql_connect('localhost', 'xxxxx', '12345') or die("Brak połączenia: " . mysql_error());
  4. $baza = mysql_select_db('cukiernia',$polaczenie) or exit("Nie wybrano bazy, błąd: " . mysql_error());
  5. ?>
  6.  
  7. <?php
  8.  
  9.  
  10.  
  11.  
  12.  
  13. $ciasto=$_POST['ciasto_id'];
  14. $liczba=$_POST['liczba'];
  15.  
  16.  
  17. $q="SELECT * FROM składnik WHERE id_ciasta=$ciasto";
  18. $r=mysql_query($q);
  19.  
  20.  
  21.  
  22. //wyciągam z bazy i wypisuje
  23. echo "Składniki potrzebne do upieczenia ";
  24. echo($liczba);
  25. echo" ciast";
  26.  
  27. $nazwa=$r['nazwa'];
  28.  
  29. echo($nazwa);
  30. echo('ilosc : ');
  31. echo('$liczba');
  32.  
  33.  
  34. ?>


Nadal nie mogę sobie z tym poradzić

Tabele w bazie danych i inne informacje są we wcześniejszych postach.
Mephistofeles
Po co dublować w bazie składniki? Zrób jeszcze trzecią tabelę, w której zapiszesz id ciasta, id składnika i jego ilość, a ze składników wywal id ciasta.

Poza tym pamiętaj zawsze o filtrowaniu wszelkich danych od użytkownika. Jeśli masz możliwość, to polecam używanie PDO zamiast starych funkcji mysql_.
pablo663
A jeśli mam taką baze danych:

  1. CREATE TABLE `cukiernia`.`ciasto` (
  2. `id` INT( 100 ) NOT NULL ,
  3. `nazwa` VARCHAR( 25 ) NOT NULL ,
  4. `skladniki` VARCHAR( 4294967295 ) NOT NULL
  5. ) ENGINE = MYISAM ;
  6.  
  7. CREATE TABLE `cukiernia`.`Skladniki` (
  8. `id` INT( 100 ) NOT NULL ,
  9. `id_skladnika` INT( 100 ) NOT NULL ,
  10. `wartosc` VARCHAR( 4294967295 ) NOT NULL ,
  11. `jednostka` VARCHAR( 50 ) NOT NULL
  12. ) ENGINE = MYISAM ;
  13.  
  14. CREATE TABLE `cukiernia`.`skladnik` (
  15. `id` INT( 100 ) NOT NULL ,
  16. `nazwa` VARCHAR( 25 ) NOT NULL
  17. ) ENGINE = MYISAM ;


Pomoże ktoś zrobić zapytanie lub podpowie jak obsłużyć to w php aby liczyło listę składników na wybrane ciasta?
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.