Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wybór zmiennej po WHERE za pomocą input type radio
Forum PHP.pl > Forum > PHP
slawekxx
Witam , mam mały problem z wyborem instrukcji WHERE, a mianowicie chciałbym tu użyć pola input type="radio" do wyboru zmiennej (będzie ich 6) po WHERE
  1. $rows=mysql_query("select * from region WHERE region ='$regiony' ");
jak kod muszę dopisać aby to działało ?
wookieb
Nie pytaj jaki kod tylko pokaż co próbowałeś. Spojrzałeś w ogóle jak prawidłowo obsługiwać pola RADIO?
Stwórz z wybranych elementów tablicę i wstaw do zapytania
  1. $where = ' pole IN ('.implode(',', $regiony).')';
  2. // pod warunkiem, że regiony to cyfry. Jeżeli nie to musisz każdy element tablica zaopatrzyć w apostrofy (lub cudzysłowia) na końcu i początku jego wartości.
slawekxx
Ok a jak ma do tego przypisać input radio
slawekxx
Czyli coś takiego ?
  1. <input type="radio" value="nazwa_region1"/>Region1
  2. <input type="radio" value="nazwa_region_2"/>Region2
wookieb
Cytat
Jeśli chodzi o PHP jako nazwy wszystkich pól tego samego pytania można wpisać: name="nazwa[]". W takim przypadku w skrypcie będzie dostępna tablica $nazwa ($_POST['nazwa'] lub $_GET['nazwa']), a wartości kolejnych zaznaczonych elementów (tylko zaznaczonych), będzie można odczytać poprzez użycie: $nazwa[0], $nazwa[1], $nazwa[2] ($_POST['nazwa'][0], $_POST['nazwa'][1], $_POST['nazwa'][2] albo $_GET['nazwa'][0], $_GET['nazwa'][1], $_GET['nazwa'][2]) itd. (w zależności ile pól zostanie zaznaczonych).
slawekxx
Póle zaznaczone będzie tylko jedno bo pod nazwą jednego regionu jest więcej nazw miast , które chcę wyświetlić z tabeli
phpion
Cytat(wookieb @ 12.09.2010, 08:16:12 ) *
  1. $where = ' pole IN ('.implode(',', $regiony).')';

Już po raz któryś widzę, jak wprowadzasz ludzi w błąd. Przecież lista pól radio (w tym przypadku regiony) to niejako odpowiednik listy <select> czyli umożliwia wybór 1 elementu (poza inną "konfiguracją" oczywiście). IN sprawdzi się w przypadku pól checkbox. Można oczywiście IN zastosować z polami radio, ale one z założenia powinny pozwalać na wybór tylko 1 opcji wewnątrz "grupy".

@slawekxx:
Pola definiujesz tak:
  1. <input type="radio" name="region" value="nazwa_region1"/>Region1
  2. <input type="radio" name="region" value="nazwa_region_2"/>Region2

Zwróć uwagę na tą samą wartość atrybutu name dla wszystkich regionów.
W PHP odbierasz to jako (jeśli formularz idzie POSTem, jeśli GETem to $_GET):
  1. $region = $_POST['region'];

Przydałoby się jeszcze obsłużyć brak wyboru regionu przez użytkownika (isset) ale to pozostawiam Tobie smile.gif
Zapytanie wykonujesz mniej-więcej takie, jak w Twoim pierwszym poście.

Jeśli jednak chodzi Ci o wybór X spośród regionów to pola formularza powinny wyglądać tak:
  1. <input type="checkbox" name="region[]" value="nazwa_region1"/>Region1
  2. <input type="checkbox" name="region[]" value="nazwa_region_2"/>Region2

Zwróć znowu uwagę na nazwę (region[]) oraz na zmianę typu z radio na checkbox. W tym przypadku kończysz zapytanie warunkiem podanym przez ~wookieba.
wookieb
A tfu pomyliło mi się z checkboxem. Muszę się obudzić.
slawekxx
Dobra kawa się przyda się z rana :-)

to jak to ma być bo trochę jestem zdezorientowany :-)
wookieb
  1. if ($_POST)
  2. {
  3. if (!empty($_POST['region']) && is_scalar($_POST['region']))
  4. {
  5. $region = mysql_real_escape_string($_POST['region']);
  6. $resource = mysql_query('SELECT * FROM tabela WHERE region = "'.$region.'"');
  7. }
  8. else {
  9. // tutaj alert o nie wybraniu regionu
  10. }
  11. }

Formularz standardowo.
  1. <input type="radio" name="region" value="pomorskie" />
  2. <input type="radio" name="region" value="mazowieckie" />
  3. <input type="radio" name="region" value="slaskie" />

Gdzie wartości są zależne od tego co ty tam wstawiasz.
slawekxx
a jak dodać przycisk input type submit , aby po kliknięciu wyświetlały się nazwy miast ?

wookieb
Dude nie przesadzaj co? Submita nie umiesz dodać a do tego pobrac prostych danych z bazy? Nie będziemy czytać kursu na dobranoc wszystkim którzy sami tego nie umieją zrobić.
slawekxx
Mam jeszcze jedno pytanie chcę połączyć dwie tabele , napisałem trochę kodu ale chyba nie jest poprawny
  1. (SELECT " 'name_pl','dzien','czas','wind_dir','wind_force','temperature','pressure' FROM Tabela1,Tabela2 WHERE region ="' .$region.'" Tabela1.station_id=Tabela2.station_id ")


zmienna- name_pl pochodzi z Tabeli1 a pozostałe z Tabeli 2
wookieb
Chyba tzn?
slawekxx
W taki zapytaniu
  1. SELECT name_pl,region,dzien,czas,wind_dir,wind_force,temperature,pressure,lng,lat FROM region,pogoda
  2. WHERE region.station_id=pogoda.station_id
w myadmin działa bez zarzutu , tylko nie umie napisać poprawnego kodu w php. Wersja pierwsza jest ok
  1. <body>
  2. <form name="form1" id="form1" action="" method="post">
  3. <table>
  4. <tr>
  5. <tr><td>Wybierz Region</td></tr>
  6. <tr><td><input type="radio" name="region" value="Peloponez" />Peloponez</td></tr>
  7. <tr><td><input type="radio" name="region" value="Cyklady" />Cyklady</td></tr>
  8. <tr><td><input type="radio" name="region" value="Macedonia Srodkowa" />Macedonia Środkowa</td></tr>
  9. <tr><td><input type="radio" name="region" value="Macedonia Zachodnia" />Macedonia Zachodnia</td></tr>
  10. <tr><td><input type="radio" name="region" value="Macedonia Wschodnia i Tracja" />Macedonia Wschodnia</td></tr>
  11. <tr><td><input type="radio" name="region" value="Tesalia" />Tesalia</td></tr>
  12. <tr><td><input type="radio" name="region" value="Sporady" />Sporady</td></tr>
  13. <tr><td><input type="radio" name="region" value="Kreta" />Kreta</td></tr>
  14. <tr><td><input type="radio" name="region" value="Epirus" />Epirus</td><tr>
  15. <tr><td><input type="radio" name="region" value="Dodekanez" />Dodekanez</td></tr>
  16. <tr><td><input type="radio" name="region" value="Wyspy Egejskie Północne" />Wyspy Egejskie Północne</td></tr>
  17. <tr><td><input type="radio" name="region" value="Wyspy Jońskie" />Wyspy Jońskie</td></tr>
  18. <tr><td><input type="radio" name="region" value="Wyspy Sorońskie" />Wyspy Sorońskie</td></tr>
  19. <td><input type="submit" name="Wybierz" value="Wybierz"/></td>
  20. </tr>
  21. </table>
  22.  
  23.  
  24. // łączymy się z bazą danych
  25.  
  26.  
  27.  
  28.  
  29. if ($_POST)
  30. {
  31. if (!empty($_POST['region']) && is_scalar($_POST['region']))
  32. {
  33. $region = mysql_real_escape_string($_POST['region']);
  34. $resource = mysql_query('SELECT * FROM region WHERE region = "'.$region.'"');
  35.  
  36. while($rew=mysql_fetch_array($resource)){
  37.  
  38. echo "<h4>" .$rew['name_pl'] ."</h4>";
  39.  
  40.  
  41. }
  42.  
  43. }
  44. }
  45.  


chcę zamienić kod w linijce 34 z kodem jak wyżej ,ale z funkcjonalnością wyboru regionu
wookieb
No ale ja nie widzę abyś w tym kodzie w ogóle próbował wstawić twoje zapytanie. Wstaw to powiemy Ci co masz źle.
slawekxx
  1. $resource = mysql_query('SELECT 'name_pl','dzien','czas','wind_dir','wind_force','temperature','pressure','lat','lng', FROM 'region','pogoda' WHERE region =" ' .$region.' " AND
  2.  
  3. 'region.station_id'='pogoda.station_id '');
to jest ten kod :-)
wookieb
Podstawy... http://pl.php.net/manual/en/language.types.string.php
Zapytanie jest stringiem a nie "byle czym"
slawekxx
A gdzie mam te ukośniki wstawić ?
wookieb
Nawet w kolorowaniu składni na forum widzisz gdzie masz błąd. Ujmij zapytanie w cudzysłów i jedziesz.
Zainstaluj lepszy edytor tekstu np NetBeans.
slawekxx
  1. $resource = mysql_query('SELECT 'name_pl','dzien','czas','wind_dir','wind_force','temperature','pressure','lat','lng', FROM 'region','pogoda' WHERE region =" ' .$region.' " AND
  2.  
  3. 'region.station_id'='pogoda.station_id '');
poprawiłem według kolorów na forum :-) ale nadal mam błąd
wookieb
Masz przykład w linku, który Ci podałem
Cytat
  1. // Outputs: Arnold once said: "I'll be back"
  2. echo 'Arnold once said: "I\'ll be back"';
  3.  
slawekxx
Ma już NetBeans , faktycznie podkreśla tą linię na czerwono , ale i tak nie wiem jak się za to zabrać ?
wookieb
Czego nie rozumiesz nawet z przykładu który dostałeś?
slawekxx
Tak , pokarz mi na kawałku mojego kodu :-)
wookieb
Nie stary. Jeżeli przykładu nie rozumiesz (sry ale nie trzeba mieć inteligencji einsteina aby tego skumać) to nie bierz się za programowanie bo się po prostu nie nadajesz.
Sam wiesz co masz zrobić. Wstawić znak \ tam gdzie chcesz aby apostrof był apostrofem w tekście.
slawekxx
Poprawiłem na coś takiego
  1. $resource = mysql_query("SELECT 'name_pl','dzien','czas','wind_dir','wind_force','temperature','pressure','lat','lng',
  2. FROM 'region','pogoda' WHERE region = ' '.$region.' '
  3. AND 'region.station_id'='pogoda.station_id' ") or die('BŁĄD:'.mysql_error());


i wyskakuje mi taki błąd BŁĽD:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM 'region','pogoda' WHERE region = ' '.Dodekanez.' ' AND 'region' at line 2 , co jest grane ?

Działa tak jak ma działać :-)
  1. $resource = mysql_query('SELECT `name_pl`,`region`,`dzien`,`czas`,`wind_dir`,`wind_force`,`temperature`,`pressur
    e`,`lat`,`lng` FROM region
  2.  
  3. , pogoda WHERE region= "'.$region.'" AND region.station_id=pogoda.station_id ') or die(mysql_error());
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.