Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Wybór zmiennej po WHERE za pomocą input type radio
slawekxx
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


Ten post edytował wookieb 12.09.2010, 07:17:14
Go to the top of the page
+Quote Post
slawekxx
post
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Ok a jak ma do tego przypisać input radio
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://www.kurshtml.boo.pl/html/pole_wyboru,formularze.html

Ten post edytował wookieb 12.09.2010, 07:23:44
Go to the top of the page
+Quote Post
slawekxx
post
Post #5





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Czyli coś takiego ?
  1. <input type="radio" value="nazwa_region1"/>Region1
  2. <input type="radio" value="nazwa_region_2"/>Region2
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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).
Go to the top of the page
+Quote Post
slawekxx
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Póle zaznaczone będzie tylko jedno bo pod nazwą jednego regionu jest więcej nazw miast , które chcę wyświetlić z tabeli
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
wookieb
post
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A tfu pomyliło mi się z checkboxem. Muszę się obudzić.
Go to the top of the page
+Quote Post
slawekxx
post
Post #10





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Dobra kawa się przyda się z rana :-)

to jak to ma być bo trochę jestem zdezorientowany :-)
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  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.


Ten post edytował wookieb 12.09.2010, 08:18:48
Go to the top of the page
+Quote Post
slawekxx
post
Post #12





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


a jak dodać przycisk input type submit , aby po kliknięciu wyświetlały się nazwy miast ?

Go to the top of the page
+Quote Post
wookieb
post
Post #13





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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ć.
Go to the top of the page
+Quote Post
slawekxx
post
Post #14





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował slawekxx 12.09.2010, 16:40:46
Go to the top of the page
+Quote Post
wookieb
post
Post #15





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Chyba tzn?
Go to the top of the page
+Quote Post
slawekxx
post
Post #16





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował slawekxx 12.09.2010, 17:29:27
Go to the top of the page
+Quote Post
wookieb
post
Post #17





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No ale ja nie widzę abyś w tym kodzie w ogóle próbował wstawić twoje zapytanie. Wstaw to powiemy Ci co masz źle.
Go to the top of the page
+Quote Post
slawekxx
post
Post #18





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


  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 :-)

Ten post edytował slawekxx 12.09.2010, 18:43:39
Go to the top of the page
+Quote Post
wookieb
post
Post #19





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Podstawy... http://pl.php.net/manual/en/language.types.string.php
Zapytanie jest stringiem a nie "byle czym"
Go to the top of the page
+Quote Post
slawekxx
post
Post #20





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


A gdzie mam te ukośniki wstawić ?
Go to the top of the page
+Quote Post
wookieb
post
Post #21





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.
Go to the top of the page
+Quote Post
slawekxx
post
Post #22





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
wookieb
post
Post #23





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.  
Go to the top of the page
+Quote Post
slawekxx
post
Post #24





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Ma już NetBeans , faktycznie podkreśla tą linię na czerwono , ale i tak nie wiem jak się za to zabrać ?
Go to the top of the page
+Quote Post
wookieb
post
Post #25





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Czego nie rozumiesz nawet z przykładu który dostałeś?
Go to the top of the page
+Quote Post
slawekxx
post
Post #26





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Tak , pokarz mi na kawałku mojego kodu :-)
Go to the top of the page
+Quote Post
wookieb
post
Post #27





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.

Ten post edytował wookieb 12.09.2010, 20:04:45
Go to the top of the page
+Quote Post
slawekxx
post
Post #28





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


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());
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.08.2026 - 00:11