Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql]
Forum PHP.pl > Forum > Przedszkole
kozioł
Witam

zrobiłem skrypt logowania który odwołuje się do bazy danch sql(działa)
zrobiłem skrypt który wyświtla dane z tabeli sql w formie tabelki na stronie(działa)
zrobiłe też skrypt z formularzem , gdzie jest lista rozwijalna i 3 pola radio


jednak skrypt wyświetlania danych z bazy sql jest statyczny(to znaczy wyświetla mi dane z bazy kóre mu zapodam ręcznie w kodzie)

jak zrobić tak aby:
to użytkownik decydował co ma być wyświetlone z bazy poprzez właśnie ten formularz?


np. wybiera w skrypcie pole 'sklep' , potem zanacza pole radio 'Warszawa'

i po naciśnieciu przycisku szukaj powinna pojawić się strona z tym skrptem gdzie jest wyświtlana tabelka z bazy danych z danymi których zażadał użytkownik

nie wiem skąd i jak skrypt do wyświtlania danych z tabeli sql , ma pobierać informację z formularza

dzięki ogromne za pomoc
Cienki1980
Musisz stworzyć zapytanie do bazy za pomocą klauzuli WHERE i wartości pobieranych z formularza.
Najprostsze zapytanie:
  1. SELECT * FROM tabela WHERE type='sklep' AND miasto='warszawa';


Zapytanie tworzysz w zależności od tego jakie dane przyjdą z formularza no i w jakim formacie trzymasz dane w tabeli.
kozioł
ale jak popbrać dane z formularza który jest w innym skrypcie(stronie) i ma nazwę np. form1.php do tego kóry odpowiedzialny jest za wyświtlenie danych z bazy i ma nazwę wysbaz.php

to co podałeś mogę zapodać na stałe , ale jak zrobić aby te dane były zmienne w zależności od dancyh wybranych w formularzu
Cienki1980
Cytat(kozioł @ 25.05.2007, 13:13:14 ) *
ale jak popbrać dane z formularza który jest w innym skrypcie(stronie) i ma nazwę np. form1.php do tego kóry odpowiedzialny jest za wyświtlenie danych z bazy i ma nazwę wysbaz.php

to co podałeś mogę zapodać na stałe , ale jak zrobić aby te dane były zmienne w zależności od dancyh wybranych w formularzu


No chwila .. przecież napisałeś, że zrobiłeś logowanie czyli pobierasz dane z formularza ( login i hasło zakładam ) i na ich podstawie sprawdzasz czy użytkownik istnieje ..

W przypadku szukania robisz to samo.
kozioł
masz rację ,

jednka formularz logowania robiłem z pomocą książki ,

formularz do logowania działa tak że po wpisanu w pole login i hasło , jest sprawdzana wartość z bazą danych i jeśli poprawana to przekierowuje mnie na jakąś stronę którą zapodałem z skrypcie.

A tu jak?

przepraszam jesli moje pytania są głupie ,

PS. zaczynam powoli kapować

z formularza powinienem przesłać zmienne do pliku gdzie mam skrypt wyświtlający baze dancyh

w formularzu powinienim umieścić chyba coś takiego <form action="wysbaz.php" method="GET">
a w pliku wysbaz.php powinienm przypisać te zmienne z formularza , zamiast tych które wpisuje ręcznie

tak?

kurcze nie wychodzim mi

z formularza przesyłam dane do skryptu wywołująca bazę tak:

<form action = "baza.php" method = "GET">
potem kilka pół z listy rozwijalnej

<option value="f1">gazety</option>
<option value="f1">książki</option>
<option value="f1">papierosy</option>



a w tym skrypcie baza.php mam taki warunek gdzie te zmienne chcę umieścić

$query = "SELECT * FROM neo WHERE rodzaj = tutaj ma pojawić się zmienna z formularza";
$result = mysql_query($query)

i kurcze nie wychodzi mi

jak to zrobić
parasite
Z formularza musisz przeslac getem albo postem dane do jakiejs strony nastepnej (chyba ze to ma byc ta sama to nie podajesz nic). Na tej stronie odbierasz dane i przypisujesz kazde pole do zmiennej (zalezy jakie pola masz) jezeli wyboru to wstaw je w jeden action i oznacz pole1, pole2, pole3 - wtedy tylko do zmiennej przypisujesz nazwe akcji i wypisujac $_GET[zmienna] w zapytaniu otrzymasz wybor z poprzedniej strony ktory bedzie wyciagany albo zapisywany do bazy - w zaleznosci co chcesz robic.

No chyba ze cos pokrecilem ;p
Darti
Metodę formularza zmień na POST a pózniej przechwytuj w drugim pliku tak:
$_POST['nazwa_zmiennej_z_formularza'].

$_POST to taka tablica (array), w której siedzą właśnie zmienne i wartości z formularzy wysłanych tą metodą.
W pliku baza.php dopisz sobie na dole print_r($_POST) i pooglądaj to co wyświetli smile.gif
www0_0
Dokładnie tak jak mówisz.
  1. <form action = "baza.php" method = "x">

Zamiast X podstawiasz metodę wysyłania.
Ta metoda to:
GET - wysyła dane w pasku adresu
POST - wysyła dane ukryte

Następnie w innym skrypcie odnosisz się do tego tak:
$_GET['Nazwa_pola_formularza']
$_POST['Nazwa_pola_formularza']

A teraz troszke do twojego skryptu:
  1. <?
  2. $miasto=$_POST['miasto'];
  3. $typ=$_POST['typ'];
  4. $query = "select * from tabela WHERE type = $typ and miasto = $miasto ";
  5. $result = mysql_query ($query);
  6. ?>


To tak w skrócie.
A i jeszcze jedno pamiętaj aby robić to tak:
  1. <form name="cos" action="skrypt.php" method="POST">
  2. <select name="miasto" size="">
  3. <option value="f1">gazety</option>
  4. <option value="f2">książki</option>
  5. <option value="f3">papierosy</option>
  6. <input type="radio" name="typ" value="c1" />
  7. <input type="radio" name="typ" value="c2" />
  8. <input type="radio" name="typ" value="c3" />
  9. </form>

te informacje powinny ci pomóc
kozioł
dzięki ogromne :-)))

zadziałało

teraz chcę dodać do formularza jedno pole radio ,

a wnim aby wyświtlić wszystkie rekody z bazy

np. w bazie kolumna prenumerata (tam mogą być dwa rodzaje wartości , 'tak','nie' ,albo puste)

i teraz próbowałem w formularzu do pola przypisać np. vartośc 'not null' , aby skrypt pokazał mi wszystkie które mają jakąś wartość ,

a w skrypcie dopisać tą zmienną do wiersza WHERE pole w bazie = $_zmienna z formularza z poleceniem SQL

jednak nic z tego nie wychodzi

pewnie źle kombinuję
www0_0
Cytat(kozioł @ 28.05.2007, 10:47:29 ) *
teraz chcę dodać do formularza jedno pole radio ,

a wnim aby wyświtlić wszystkie rekody z bazy

A czekaj w ogóle tego nie czaje:)
Pole radio to opcja do jednokrotnego zaznaczenia, to jak chcesz wyświetlić w nim wszystkie rekordy??
Tam możesz dać jedynie opcje tak lub nie.
Poza tym miło by było gdybyś pokazał to co zrobiłeś do tej pory, łatwiej było by nam zrozumieć, znaleźć błędy, i mieli byśmy jakieś odniesienie.

A poza tym spróbuj napisać jeszcze raz to o co ci chodzi ale powoli i z logiką , tak abyśmy i my zrozumieli twój tok myślenia:)
kozioł
więc tak

to plik baza1.php
  1. <?php
  2. $conn = mysql_connect("localhost", "root", "vertrigo") 
  3. or die(mysql_error()); 
  4. $db = mysql_select_db("baza1",$conn)
  5. or die ("nie mogę połączyć z bazą");
  6. $rodzaj=$_POST['rodzaj'];
  7. $typ=$_POST['typ'];
  8. $query = "SELECT * FROM neo WHERE rodzaj = '$rodzaj'and rezultat = '$typ'";
  9. $result = mysql_query($query)
  10. or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  11. ?>

a to plik formularz1.php
  1. <?php
  2. <form action = "baza1.php" method = "POST">
  3. <table border="2"cellspacing="1" cellspacing="3"
  4. bgcolor="#353535" align="center">
  5.  
  6. <tr>
  7. <td bgcolor="FFFFFF">Rodzaj bazy</td>
  8. <td bgcolor="FFFFFF">
  9. <select name="rodzaj">
  10. <option value="all">Wszystkie</option> [b](tutaj chcę aby po wybraniu z bazy pokazał mi wszystkie rekordy z bazy to all nie
     działa)[/b]
  11. <option value="gazety">Gazety</option>
  12. <option value="ksiazki">Ksiazki</option>
  13. </select>
  14. </td>
  15. </tr>
  16. <tr>
  17. <td bgcolor="FFFFFF">WYBIERZ</td>
  18. <td bgcolor="FFFFFF">
  19. <input type="radio" name="typ" value="not null" checked>([b]tutaj ma pokazać wszystkie rekordy nie puste z tej kolumny w bazie to not null nie działa )[/b]Wszystkie<br>
  20. <input type="radio" name="typ" value="prenumerata"checked>
  21. Jest prenumerata<br>
  22. <input type="radio" name="typ" value="zamowienie"checked>
  23. zamowienie<br>
  24.  
  25. </td>
  26. </tr>
  27.  
  28. <td bgcolor="FFFFFF" colspain=0 align="center">
  29. <input type="submit" name="Submit" value="Szukaj">
  30. <input type="submit" name="Submit" value="Wyloguj">
  31. <td bgcolor="FFFFFF">
  32. </td>
  33. </tr>
  34. ?>



-------------------------
do PHP są odpowiednie znaczniki BBCode
tym razem poprawiłem ale pamiętaj
i stosuj sie do tego na przyszłość
~Cienki1980
www0_0
mogę ci tylko takie częściowe rozwiązanie podać na jakie wpadłem:)
Było pisane na szybko, tak więc też mogą znaleźć się błędy:)
Ale może ci to jakoś pomoże, do póki ktoś mądrzejszy nie podaj jak to powinno się robić:)
Mój zasób wiedzy jest tu niestety ograniczony:)
  1. <?
  2. $conn = mysql_connect("localhost", "root", "vertrigo")
  3. $db = mysql_select_db("baza1",$conn)
  4. or die ("nie mogę połączyć z bazą");
  5. $rodzaj=$_POST['rodzaj'];
  6. $typ=$_POST['typ'];
  7. $query = "SELECT * FROM neo WHERE 1=1 ";
  8. //Sprawdzamy czy zmienna zawiera string all
  9. //jeśli nie to dodajemy wrunek
  10. //jeśli tak to nic nie dodajemy, nie ograniczając zapytania pokażemy wszystko praw
    da:)
  11. if($rodzaj!='all')
  12. {
  13. $query .= " rodzaj = $rodzajand ";
  14. }
  15. //Sprawdzamy czy zmienna zawiera string not null
  16. //jeśli nie to dodajemy wrunek
  17. //jeśli tak to biggrin.gif to trzeba pokombinować, tu niestety niewiem jak to zrobić:)
  18. //osobiście tak rozplanowuje baze, aby pola wśród których szukam
  19. // bo mam w nich ważne informacjie nie były puste:)
  20. if($rodzaj!='not null')
  21. {
  22. $query .= " rezultat = $typ ";
  23. }
  24. else
  25. {
  26. //tu coś wykmiń:)
  27. }
  28. $result = mysql_query($query)
  29. or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  30. ?>


Aha używaj tagów bbcode:) wtedy lepiej przegląda się posty:)
kozioł
kurcze trochę to zwiłe ,

myslałem że będzie prościej z zapytaniem z formularza ,

wiem jak wyświetlic pola puste

w formularzy wystarczy nie podawać żadnej wartości , czyli value=""

ale nie mam pojęcia jak wyświtlić nie puste i wszystkie z bazy

pozdro

kurcze nie mogę sobie z tym poradzić
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.