Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wybieranie określonej pozycji z option value
Forum PHP.pl > Forum > Przedszkole
m1988
Witam

Mam następujący problem. Z bazy danych wczytuję do pola option miejscowość i odległość.
Następnie mam tekstbox Rodzaj biletu.
Jeśli do pola rodzaj biletu zostanie wpisane słowo normalny to chciałbym żeby mnożyło mi 2 * wybraną przez kliknięcie użytkownika pozycję z wybraną odległością z menu rozwijanego. Nie wiem jak sobie z tym poradzić. Oto kod:

Połączenie i wybór bazy
  1. <?php
  2. $polaczenie = mysql_connect('localhost', 'autobusy', 'autobusy') or die("Błąd połączenia" .mysql_error());
  3. $baza = mysql_select_db('autobusy', $polaczenie) or exit ("Błąd: Nie ma takiej bazy". mysql_error());
  4. mysql_query('SET NAMES utf8');
  5. $zapytanie = 'SELECT id, miejscowosc, odleglosc from bilety';
  6. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  7. ?>


Wczytywanie wartości
  1. <?php
  2. while($rekord = mysql_fetch_assoc($wynik))
  3. {
  4. echo '<option value="'. $rekord['id'] . '"> '. $rekord['miejscowosc'] . "." . " ". "Kilometrów" . " " . $rekord['odleglosc']."</option>\n";
  5. }
  6.  
  7. ?>


Pętla if działająca po kliknięciu na button
  1. <?php
  2. if($_POST['wprowadz'])
  3. {
  4. $rodzajbiletu = trim($_POST['rodzajbiletu']);
  5. if($rodzajbiletu == 'normalny')
  6. {
  7. $oblicz = 2.00 * $rekord['odleglosc'];
  8.  
  9. $cena= $oblicz;
  10. }
  11. echo $cena;
  12.  
  13.  
  14.  
  15.  
  16. }
  17. ?>

CuteOne
Ale o co dokładnie pytasz...
m1988
  1. <?php
  2. if($_POST['wprowadz'])
  3. {
  4. $rodzajbiletu = trim($_POST['rodzajbiletu']);
  5. if($rodzajbiletu == 'normalny')
  6. {
  7. $oblicz = 2.00 * $rekord['odleglosc'];
  8.  
  9. $cena= $oblicz;
  10. }
  11. echo $cena;
  12. }
  13. ?>


Chodzi o ten fragment. Zmienna oblicz ma przechowywać wynik mnożenia 2 * wybrana pozycja z menu rozwijanego. Czyli jeśli wybiorę pierwszą pozycje w menu w którym jest np wartość 15 to wstawi w to miejsce 2*15 jeśli będzie np druga pozycja gdzie jest 30 to żeby było 2 * 30.
Ogólnie chodzi o to żeby z tabeli odległość była zczytywana ta dana którą wybiorę.
sadistic_son
Skąd program ma wiedzieć co to jest $rekord['odleglosc']; już po kliknięciu w button? Poza tym wklej cały kod bo jakoś chaotycznie nam to powyżej zaprezentowałeś.
m1988
  1. <?php
  2. $polaczenie = mysql_connect('localhost', 'autobusy', 'autobusy') or die("Błąd połączenia" .mysql_error());
  3. $baza = mysql_select_db('autobusy', $polaczenie) or exit ("Błąd: Nie ma takiej bazy". mysql_error());
  4. mysql_query('SET NAMES utf8');
  5. $zapytanie = 'SELECT id, miejscowosc, odleglosc from bilety';
  6. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  7. ?>
  8. <h3>ROZKŁAD JAZDY</h3>
  9. <select name="produkt" size="1">
  10. <?php
  11. while($rekord = mysql_fetch_assoc($wynik))
  12. {
  13. echo '<option value="'. $rekord['id'] . '"> '. $rekord['miejscowosc'] . "." . " ". "Kilometrów" . " " . $rekord['odleglosc']."</option>\n";
  14. }
  15. ?>
  16. </select>
  17. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  18. <br><br>
  19. Rodzaj biletu: <input name="rodzajbiletu">
  20. Rodzaj zniżki: <input name="rodzajznizki">
  21. <input type="submit" name="wprowadz" value="dodaj">
  22. <input type="reset" value="usun">
  23.  
  24. <?php
  25. if($_POST['wprowadz'])
  26. {
  27. $rodzajbiletu = trim($_POST['rodzajbiletu']);
  28. if($rodzajbiletu == 'normalny')
  29. {
  30. $oblicz = 2.00 * $rekord['odleglosc'];
  31.  
  32. $cena= $oblicz;
  33. }
  34. echo $cena;
  35. }
  36. ?>


Chodzi o ten fragment gdzie jest sprawdzanie czy jest nacisnięty wprowadz. Zmienna oblicz ma przechowywać wynik mnożenia 2 * wybrana pozycja z menu rozwijanego. Czyli jeśli wybiorę pierwszą pozycje w menu w którym jest np wartość 15 to wstawi w to miejsce 2*15 jeśli będzie np druga pozycja gdzie jest 30 to żeby było 2 * 30.
Ogólnie chodzi o to żeby z tabeli odległość była zczytywana ta dana którą wybiorę.
sadistic_son
Jak juz pisalem po przeladowaniu program nie bedzie wiedzial co wybrales, to raz. Dwa ze przesylasz id a nie odleglosc formularzem.
Trzy to nie masz poustawianych typow inputow dla rodzaju biletow i ulgi. Co to ma byc? checkbox? text? radio?
Co to if($_POST['wprowadz']) oznacza ?!?! Jak juz to isset uzyj!
PRzerob kod na wzor tego:
  1. <?php
  2. $polaczenie = mysql_connect('localhost', 'autobusy', 'autobusy') or die("Błąd połączenia" .mysql_error());
  3. $baza = mysql_select_db('autobusy', $polaczenie) or exit ("Błąd: Nie ma takiej bazy". mysql_error());
  4. mysql_query('SET NAMES utf8');
  5. $zapytanie = 'SELECT id, miejscowosc, odleglosc from bilety';
  6. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  7. ?>
  8. <h3>ROZKŁAD JAZDY</h3>
  9. <select name="produkt" size="1">
  10. <?php
  11. while($rekord = mysql_fetch_assoc($wynik))
  12. {
  13. echo '<option value="'. $rekord['id'] . '"> '. $rekord['miejscowosc'] . "." . " ". "Kilometrów" . " " . $rekord['odleglosc']."</option>\n";
  14. }
  15. ?>
  16. </select>
  17. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  18. <br><br>
  19. Rodzaj biletu: NORMALNY:<input type="radio" name="rodzajbiletu" value="normalny" /> ULGOWY: <input type="radio" name="rodzajbiletu" value="ulgowy" />
  20. Rodzaj zniżki: NORMALNA:<input type="radio" name="rodzajznizki" value="normalny" /> ULGOWA: <input type="radio" name="rodzajznizki" value="ulgowy"
  21. <input type="submit" name="wprowadz" value="dodaj">
  22. <input type="reset" value="usun">
  23. </form>
  24.  
  25. <?php
  26. if(isset($_POST['wprowadz']))
  27. {
  28. $sql="SELECT odleglosc FROM bilety WHERE id=".$_POST['produkt']." LIMIT 1";
  29. $odleglosc=mysql_result(mysql_query($sql),0);
  30.  
  31. $rodzajbiletu = trim($_POST['rodzajbiletu']);
  32. if($rodzajbiletu == 'normalny')
  33. {
  34. $oblicz = 2.00 * $odleglosc;
  35.  
  36. $cena= $oblicz;
  37. }if($rodzajbiletu=='ulgowy'){
  38. $cena=$odleglosc;
  39. }
  40. echo $cena;
  41. }
  42. ?>
Przeanalizuj ten kod i wyciagnij wnioski bo za to co zapodales to sie wstydzic powinienes, nawet jesli uczysz sie dopiero podstaw.

PS. Nie sprawdzalem czy dziala, moga byc literowki albo drobne bledy, ale tok rozumowania mysle ze jest dobry.
m1988
Dzięki przerobiłem sobie skrypt i chodzi. W sumie błąd polegał na tym, że w złym miejscu zacząłem form action oraz złą wartość wczytywałem do listy rozwijanej, ale Twoja modernizacja bardzo mi się również przydała. Dzięki za poświęcony czas:)smile.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.