Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - wyszukiwanie wartości.
Forum PHP.pl > Forum > Przedszkole
malzon
Witam!

Piszę w tym dziale, bo jestem naprawdę początkujący. Zacznę od ilustracji:


Mam przykładową tabelę. Chciałbym zrobić stronę na której albo z użyciem pola "text" lub "select" (może być coś innego) mógłbym wybrać (na podstawie w/w tabeli) wagę paczki, a w drugim polu czy jest to przedpłata na konto czy opłata za pobraniem, po czym zostanie wyświetlona kwota do zapłaty. Proszę bardzo nie sugerować się przykładem, bo chciałbym w przyszłości dodać dość dużo wierszy np. 300 i tyle samo kolumn. Chciałbym również żeby cała zawartość znajdowała się z bazie danych MySQL. Czy jest możliwość zrobienia czegoś takiego? Bardzo prosiłbym o pomoc, ewentualny przykład.

Pozdrawiam.
tab
Cytat(malzon @ 4.12.2012, 21:44:02 ) *
Czy jest możliwość zrobienia czegoś takiego?

Tak, da sie. Baza SQL to takie wszechstronne narzędzie że umożliwia nawet wyliczanie opłat za przesyłkę wink.gif
Nie wiem jak bardzo sie znasz na tym wiec powiem ci po prostu jak ja bym to zrobil. Najpierw model tabeli:
ID MIN MAX PRE POST
1 0 31 29 36 <- dla pierwszego rekordu z tabeli takie wartosci trzeba by wprowadzic, dla pozostalych analogicznie. Pre to przedpłata, post to opłata za pobraniem
Plik html to by było cos takiego:
  1. <form actiion method>
  2. <input type=text name=weight>
  3. <select name=type>
  4. <option name=pre>Opłata Przed</option>
  5. <option name=post>Opłata z dosyłka</option>
  6. </select>
  7. </form>

PHP:
  1. <?php
  2. if ((isset($_POST['weight'])) && (isset($_POST['type'])))
  3. {
  4. $waga = strip_tags($_POST['weight']);
  5. $type = $_POST['type']; // pre lub post
  6. mysql_connect( // parametry twojej bazy );
  7. $ret = mysql_query("SELECT '$type' FROM tabela WHERE $weight > min and $weight < max");
  8. $wynik = mysql_fetch_assoc($ret);
  9. echo $wynik[$type];
  10. }

To moze zawierac bledy. Od dawna nie korzystam z proceduralnych funkcji do obslugi bazy danych (wole PDO) wiec troche sie pozapominało. Ale to tylko idea wiec nie powinienes miec problemów z przerobieniem tego.
malzon
A co jeśli kolumn byłoby 200? Musiałbym dodać 200 razy <option>? Czy lepiej wprowadzić coś na styl: podaj wartość wiersza, podaj wartość kolumny -> klik = wynik?
tab
Takie rozwiązanie byłoby niewygodne dla osób, które korzystałyby z twojej aplikacji. Znacznie lepszym wyborem są opcje. Przy 200 polach faktycznie musialbys to wszystko wprowadzic recznie ale w praktyce raczej nie wystepuja tabele majace 200 kolumn. Wtedy juz sie robi kilka tabel i korzysta z róznych relacji miedzy nimi.
EDIT: jednak nie musisz wpisywać recznie. Znalazłem taka opcje: http://php.net/manual/pl/function.mysql-fetch-field.php, ale nigdy jej nie używałem wiec sam musisz sobie o niej poczytac. Jednak w praktyce mozesz ja wykorzystac tak ze pobierzesz nazwy kolumn do tablicy i potem dla kazdego elementu tej tablicy bedziesz w petli tworzył kolejna opcje. Jednak miej na uwadze ze takie rozwiązanie jest znacznie mniej wydajnie niz parsowanie czystego html'a
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.