Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP & MySQL]Arytmetyka z danymi z bazy oraz zmiennymi z formularza metodą POST, jak?
Forum PHP.pl > Forum > Przedszkole
walldeck
Niedawno poruszalem ten temat lecz tam był przyadek z jedna daną z jednej tabeli i dopisałem kolejne zapytania do mojego tematu ale do tej pory nikt mi nie odpowiedział tak więc zakldam nowy topic. ...Wracając do tematu , chciałbym pobrac 3 dane z formularza metodą POST oraz podzielić bądź pomnozyć te dane z dwoma lub więcej danymi z róznych tabel z jednej bazy. Próbowalem zrobi coś takiego ale nie wiem czy skladnia jest dobra i czy w dobrym kierunku myślę...
  1. <?php
  2.  
  3. (include "polaczenie.php");
  4.  
  5. $liczba = $_POST['rozmiar media'];
  6. $liczba1 = $_POST['przerwa'];
  7. $liczba5 = $_POST['ilosc_raport'];
  8.  
  9. $query = mysql_query("SELECT rozmiar_wysokosc FROM zlecenia WHERE id='1' ");
  10. $query2 = mysql_query("SELECT ilosc_sztuk FROM zlecenia WHERE id='1' ");
  11.  
  12.  
  13. while (($row = mysql_fetch_array($query)) || ($row2 = mysql_fetch_array($query2))) {
  14. echo (($row['rozmiar_wysokosc']*($row1['ilosc_sztuk']/$liczba5+$liczba1))/100);
  15. echo "<br />";
  16. }
  17. ?>


Dzieki za odpowiedzi
potreb
Ja bym zastosował mysql_fetch_row, skoro pobierasz tylko jeden rekord o jakimś id.
walldeck
Chciałbym pobrać dwa rekordy z jednej tabeli...
chodzi mi o to czy składnia która mam powyżej jest prawidłowa. Chodzi mi o zapytanie z bazy ($query1,$query2) oraz to wyrażenie arytmetyczne.

Stworzylem coś takiego ale wywala błąd :

  1. <?php
  2.  
  3. (include "polaczenie.php");
  4.  
  5.  
  6. $liczba1 = $_POST['przerwa'];
  7. $liczba5 = $_POST['ilosc_raport'];
  8.  
  9. $query = mysql_query("SELECT rozmiar_wysokosc FROM zlecenia");
  10. $query1 = mysql_query("SELECT ilosc_sztuk FROM zlecenia");
  11.  
  12.  
  13.  
  14. while (($row = mysql_fetch_row($query)) || ($row1 = mysql_fetch_row($query1))) {
  15. echo (((($row['rozmiar_wysokosc']*$row1['ilosc_sztuk'])/$liczba5+$liczba1)/100);
  16. echo "<br />";
  17. }
  18. ?>
nevt
spóbuj tak:
  1. <?php
  2. include 'polaczenie.php';
  3.  
  4. $liczba1 = $_POST['przerwa'];
  5. $liczba5 = $_POST['ilosc_raport'];
  6.  
  7. $query = mysql_query('SELECT ilosc_sztuk, rozmiar_wysokosc FROM zlecenia;');
  8.  
  9. while ($row = mysql_fetch_assoc($query))
  10. echo ((($row['rozmiar_wysokosc'] * $row['ilosc_sztuk'] / $liczba5) + $liczba1) / 100) . '<br />';
  11. ?>
walldeck
Nie daje rady, wywala bład typu:
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\przelicznik.php on line 14"
nevt
no to jest błąd w zapytaniu SQL... pokaż co zwróci: echo mysql_error($query); pokaż strukturę (kod sql) swojej tabeli... no i pokaż dokładnie ten kod który generuje błąd - może masz jakąś literówkę - staraj się współpracować - pisząc tylko "nie działa" oczekujesz z naszej strony jasnowidztwa...
Kethrax
Spróbuj w zapytaniu usunąć średnik ....

Cytat
$query = mysql_query('SELECT ilosc_sztuk, rozmiar_wysokosc FROM zlecenia;');


na

  1. <?php
  2. $query = mysql_query('SELECT ilosc_sztuk, rozmiar_wysokosc FROM zlecenia');
  3. ?>
walldeck
Wiec tak, QUERY wywala coś takiego:
"Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\przelicznik.php on line 10

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\przelicznik.php on line 14"

Średnik usunąłem bo zapytanie napisałem sam od nowa wiec go nie ma.

struktura tabeli:

  1. Struktura tabeli dla `zlecenia`
  2. --
  3.  
  4. CREATE TABLE `zlecenia` (
  5. `zlecenia_id` int(255) NOT NULL AUTO_INCREMENT,
  6. `rozmiar_grafiki` varchar(200) DEFAULT '" "',
  7. `material` varchar(255) DEFAULT NULL,
  8. `technologia` varchar(255) DEFAULT NULL,
  9. `ilosc_grafik` smallint(50) DEFAULT NULL,
  10. `nazwa_zlecenia` varchar(255) DEFAULT NULL,
  11. `wykonczenie` varchar(255) DEFAULT NULL,
  12. `ilosc_sztuk` int(200) DEFAULT NULL,
  13. `data_wysylki` date DEFAULT NULL,
  14. `data_dostawy` date DEFAULT NULL,
  15. `wysylka` varchar(255) DEFAULT NULL,
  16. `adres_klienta` varchar(255) DEFAULT NULL,
  17. `status_obecny` char(5) DEFAULT NULL,
  18. `komentarz` varchar(255) DEFAULT NULL,
  19. `wyk_id` int(255) DEFAULT NULL,
  20. `numer_zlecenia` int(255) UNSIGNED DEFAULT NULL,
  21. `data_zlecenia` date DEFAULT NULL,
  22. PRIMARY KEY (`zlecenia_id`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;


Jaka różnica w fukcji mysql_fetch_assoc() a mysql_fetch_row() dla tego przykładu?snitch.gif
Kethrax
Cytat(walldeck @ 18.02.2008, 15:51:00 ) *
  1. Struktura tabeli dla `zlecenia`
  2. --
  3.  
  4. CREATE TABLE `zlecenia` (
  5. `zlecenia_id` int(255) NOT NULL AUTO_INCREMENT,
  6. [b] `rozmiar_grafiki` varchar(200) DEFAULT NULL,[/b]
  7. `material` varchar(255) DEFAULT NULL,
  8. `technologia` varchar(255) DEFAULT NULL,
  9. `ilosc_grafik` smallint(50) DEFAULT NULL,
  10. `nazwa_zlecenia` varchar(255) DEFAULT NULL,
  11. `wykonczenie` varchar(255) DEFAULT NULL,
  12. `ilosc_sztuk` int(200) DEFAULT NULL,
  13. `data_wysylki` date DEFAULT NULL,
  14. `data_dostawy` date DEFAULT NULL,
  15. `wysylka` varchar(255) DEFAULT NULL,
  16. `adres_klienta` varchar(255) DEFAULT NULL,
  17. `status_obecny` char(5) DEFAULT NULL,
  18. `komentarz` varchar(255) DEFAULT NULL,
  19. `wyk_id` int(255) DEFAULT NULL,
  20. `numer_zlecenia` int(255) UNSIGNED DEFAULT NULL,
  21. `data_zlecenia` date DEFAULT NULL,
  22. PRIMARY KEY (`zlecenia_id`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;


  1. <?php
  2. $query = mysql_query('SELECT ilosc_sztuk, rozmiar_grafiki FROM zlecenia');
  3. ?>
nevt
Cytat
Jaka różnica w fukcji mysql_fetch_assoc() a mysql_fetch_row() dla tego przykładu?

zasadnicza - ta druga nie będzie działać - masz google - dala bozia paluszki i oczy - to wklep zapytanie i przeczytaj 3 pierwsze rezultaty...
za to jesteś przekonany o własnej nieomylności
Cytat
Średnik usunąłem bo zapytanie napisałem sam od nowa wiec go nie ma.

jeśli wiesz lepiej jak napisać to zapytanie - to po co sie pytasz?
walldeck
zmieniłem i to samo:(

Dodam tylko ze przy jednym rekordzie wszytko działa, błąd pojawia się tylko jak próbuje zapodać dwa rekordy.
Kethrax
Cytat(walldeck @ 18.02.2008, 15:58:56 ) *
zmieniłem i to samo:(

Dodam tylko ze przy jednym rekordzie wszytko działa, błąd pojawia się tylko jak próbuje zapodać dwa rekordy.


  1. <?php
  2. $query = mysql_query("SELECT ilosc_sztuk, rozmiar_grafiki FROM zlecenia WHERE ilosc_sztuk='.$jakaś_wartość.'");
  3. ?>
walldeck
Cytat
jeśli wiesz lepiej jak napisać to zapytanie - to po co sie pytasz?

To było w ramach wyjaśnień co nie znaczy że wiem jak to napisać...

Cytat
<?php
$query = mysql_query("SELECT ilosc_sztuk, rozmiar_grafiki FROM zlecenia WHERE ilosc_sztuk=' . $jakaś_wartość . '");
?>

Rozumiem że ta wartość [$jakas_wartosc] ma byc wpisana z formularza tak? Bo nie wiem za bardzo czemu ma to słuzyć...

Tak czy inaczej pobrałem ta wartośc z formularza:
  1. <?php
  2. <center>
  3. <h1><u>test-formularz</h1></center></u>
  4. <form action="przelicznik.php" method="post">
  5. <table border="0" align="center">
  6.  
  7.  
  8. <tr><td>rozmiar media</td><td><input type="text" name="rozmiar_media" maxlength="20" size="13" ><br></td></tr>
  9.  
  10. <tr><td>przerwa miedzy raportem</td><td><input type="text" name="przerwa" maxlength="20" size="13" ><br></td></tr>
  11. <tr><td>ilosc</td><td><input type="text" name="jakas_wartosc" maxlength="20" size="13" ><br></td></tr>
  12. <tr><td>Ilosc sztuk na raport</td><td><input type="text" name="ilosc_raport" maxlength="20" size="13" ><br></td></tr>
  13. <tr><td colspan="2"><input type="submit" value="Zapis"></td></tr>
  14.  
  15. </table>
  16. ?>


i wpisalem ja tutaj:

  1. <?php
  2.  
  3. (include "polaczenie.php");
  4.  
  5.  
  6. $liczba1 = $_POST['przerwa'];
  7. $liczba5 = $_POST['ilosc_raport'];
  8. $jakas_wartosc = $_POST['jakas_wartosc'];
  9.  
  10. $query = mysql_query("SELECT ilosc_sztuk,rozmiar_wysokosc FROM zlecenia WHERE ilosc_sztuk='". $jakas_wartosc .'" ");
  11. echo mysql_error($query);
  12.  
  13.  
  14.  
  15. while ($row = mysql_fetch_assoc($query)) {
  16. echo ((($row['rozmiar_wysokosc'] * $row['ilosc_sztuk'] / $liczba5) + $liczba1) / 100) . '<br />;
  17. echo "<br />";
  18.  
  19. }
  20. ?>


Wywala bład:
Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\przelicznik.php on line 16
Kethrax
Cytat
  1. <?php
  2. (include &#092;"polaczenie.php\");
  3.  
  4.  
  5. $liczba1 = $_POST['przerwa'];
  6. $liczba5 = $_POST['ilosc_raport'];
  7. $jakas_wartosc = $_POST['jakas_wartosc'];
  8.  
  9. $query = mysql_query(SELECT ilosc_sztuk,rozmiar_wysokosc FROM zlecenia WHERE ilosc_sztuk='". $jakas_wartosc .'" "); 
  10. echo mysql_error($query);
  11.  
  12.  
  13.  
  14. while ($row = mysql_fetch_assoc($query)) {
  15. echo ((($row['rozmiar_wysokosc'] * $row['ilosc_sztuk'] / $liczba5) + $liczba1) / 100) . 
  16. ;
  17. echo "";
  18.  
  19. }
  20. ?>


Wywala bład:
Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\przelicznik.php on line 16


  1. <?php
  2. ....
  3. #_1_
  4. $query = mysql_query("SELECT ilosc_sztuk,rozmiar_wysokosc FROM zlecenia WHERE ilosc_sztuk='. $jakas_wartosc .'");
  5. .....
  6. while ( ... ) {
  7. echo (((($row['rozmiar_wysokosc'] * $row['ilosc_sztuk']) / $liczba5) + $liczba1) / 100)."<br />";
  8. }
  9. ?>


Literówki + manual_php + jakiś kurs o html, a no i oczywiście php+mysql ...

smile.gif

  1. <?php
  2. /*
  3.  
  4. TEST ... 
  5.  
  6. CREATE TABLE `zlecenie` (
  7. `ilosc_sztuk` INT( 4 ) NOT NULL ,
  8. `rozmiar_wysokosc` INT( 4 ) NOT NULL
  9. );
  10.  
  11.  
  12. INSERT INTO `baza_danych`.`zlecenie` (
  13. `ilosc_sztuk` ,
  14. `rozmiar_wysokosc`
  15. ) VALUES ('123', '40'), ('121', '30');
  16.  
  17. nazwa_bazy_danych
  18.  
  19. */
  20.  
  21. $link = mysql_connect("HOST","USER","PASSWORD");
  22.  
  23. if($link) {
  24.  
  25. mysql_select_db("nazwa_bazy_danych", $link);
  26.  
  27. $liczba5 = 5;
  28. $liczba1 = 1;
  29.  
  30. $query = mysql_query("SELECT ilosc_sztuk, rozmiar_wysokosc FROM nazwa_bazy_danych.zlecenie WHERE 
    ilosc_sztuk=123"
    , $link);
  31.  
  32. while ($row = mysql_fetch_assoc($query)) {
  33. echo "Dla $row['rozmiar_wysokosc'] = ".$row['rozmiar_wysokosc']."<br />";
  34. echo "Dla $row['ilosc_sztuk'] =".$row['ilosc_sztuk']."<br />";
  35. echo "wartosc = ".(((($row['rozmiar_wysokosc'] * $row['ilosc_sztuk']) / $liczba5) + $liczba1) / 100) . "<br />";
  36. }
  37.  
  38. } else echo "Nie ma połączenia z serwerem MySQL";
  39.  
  40. ?>


Cytat
Wynik:
Dla $row['rozmiar_wysokosc'] = 40
Dla $row['ilosc_sztuk'] =123
wartosc = 9.85
walldeck
Super. Dzieki wielki plus dla ciebie!

A czy ta wartość co mu sie wpisuje na sztywno z zapytania może on sobie pobierać automatycznie?
Cytat
$query = mysql_query("SELECT ilosc_sztuk, rozmiar_wysokosc FROM nazwa_bazy_danych.zlecenie WHERE ilosc_sztuk=123" );
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.