Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP] Podstawy formularzy
piotrek0
post 27.03.2010, 20:51:18
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 23.03.2010

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


Witajcie!

Przejrzałem i chyba już setki kursów PHP i większość z nich jest do kitu :/

Dlatego zwracam się do Was z prośbą o podanie mi odnośnika do kursu w którym jest wytłumaczone jak zrobić formularz dodający przez PHP dane do bazy MySQL.

Długo nad tym siedziałem i nawet popełniłem taki kod, ale co z tego jak wiele z niego nie rozumiem.

  1. <?php
  2. include 'sqlLogin.php';
  3.  
  4. if(isset($_POST['nazwisko']))
  5. {
  6. $nazwa_uzytkownika = $_POST['nazwisko'];
  7. $limit_zamowienia = $_POST['limit'];
  8. $zapytanie = "INSERT INTO `uzytkownik` (`nazwa_uzytkownika`, `limit_zamowienia`) VALUES ('$nazwa_uzytkownika', '$limit_zamowienia')";
  9. mysql_query($zapytanie);
  10. }
  11. ?>
  12. <form encetype="text/plain action="uzytkownik2.php" method="POST">
  13. <input type="text" name="nazwisko" value="NAZW">
  14. <input type="text" name="limit" value="987">
  15. <input type="submit" value="Wyslij">
  16. </form>
  17. <?php
  18.  
  19.  
  20. $wybranie = 'select * from uzytkownik ORDER BY id_uzytkownika DESC';
  21. $wynik = mysql_query($wybranie);
  22. $rekord = mysql_fetch_array($wynik);
  23. $rekordRow = mysql_fetch_row($wynik);
  24.  
  25. echo '<br><b>Nazwa użytkownika</b> '.$rekord[0].'<br><b>Limit zamówienia</b> '.$rekord[1].'<br><b>Aktywniść konta:</b> '.$rekord[2].'<br>ID: '.$rekord[3].'<br><br>';
  26.  
  27. echo '<br><b>Nazwa użytkownika</b> '.$rekordRow[0].'<br><b>Limit zamówienia</b> '.$rekordRow[1].'<br><b>Aktywniść konta:</b> '.$rekordRow[2].'<br>ID: '.$rekordRow[3].'<br><br>';
  28.  
  29. echo '<br> tablica';
  30. print_r($rekord);
  31.  
  32. while ($wiersz_danych = mysql_fetch_row($wynik))
  33.  
  34. {
  35.  
  36. for ($i=0;$i<count($wiersz_danych);$i++)
  37.  
  38. print $wiersz_danych[$i]." ";
  39.  
  40. print "<Br>";
  41.  
  42. }
  43. ?>


Oto moje pytania:

Linia 4

O co chodzi z tym if(isset($_POST['nazwisko']))? Czemu musimy sprawdzać czy nazwisko "is set" i dlaczego akurat to pole formularza a nie inne jak "limit"?

linia 8 Czym się różni ` od ' ?

I na koniec
Używam mysql_fetch_row do wyświetlania zawartości bazy danych, ale podobno w dzisiejszych czasach już lepiej jest używać mysql_fetch_array , ale nie wiem jak to zrobić. I tu prosiłbym o link lub wytłumaczenie.

Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
MateuszS
post 27.03.2010, 20:57:13
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Isset sprawdza czy został wysłany formularz. Po naciśnięciu buttona wysyłamy formularz i wykonuje się kod wrzucający do bazy dane nie? Ale co by się działo bez isseta? Wchodzisz na stronę a tu zonk, wysłano zapytanie z pustymi danymi do bazy, bo nie sprawdziło formularza. Równie dobrze możesz dać limit zamiast nazwisko przy sprawdzaniu, jak chcesz, ale najlepiej nadać submitowi name i sprawdzać po submicie winksmiley.jpg Bo zawsze zostanie naciśnięty.

Oczywiście rozumiem że ten kod to przykład bo jest trochę bez sensu, najpierw mysql_fetch_array potem row, wystarczy jeden tongue.gif Polecam jakąś książkę

Ten post edytował MateuszScirka 27.03.2010, 20:58:53


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
mortus
post 27.03.2010, 21:20:06
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(MateuszScirka @ 27.03.2010, 20:57:13 ) *
Isset sprawdza czy został wysłany formularz. Po naciśnięciu buttona wysyłamy formularz i wykonuje się kod wrzucający do bazy dane nie? Ale co by się działo bez isseta? Wchodzisz na stronę a tu zonk, wysłano zapytanie z pustymi danymi do bazy, bo nie sprawdziło formularza. Równie dobrze możesz dać limit zamiast nazwisko przy sprawdzaniu, jak chcesz, ale najlepiej nadać submitowi name i sprawdzać po submicie winksmiley.jpg Bo zawsze zostanie naciśnięty.

Oczywiście rozumiem że ten kod to przykład bo jest trochę bez sensu, najpierw mysql_fetch_array potem row, wystarczy jeden tongue.gif Polecam jakąś książkę
Nieprawda isset sprawdza, czy zmienna została zainicjowana, również pustą wartością. Przykład
  1. $a = '';
  2. isset($a); // zwróci true
  3. isset($b); // zwróci false
isset nie jest specjalnym poleceniem, które służy do sprawdzania, czy formularz został wysłany, aczkolwiek możemy takiego sprawdzenia dokonywać, przy czym sprawdzenie isset($_POST['nazwisko']) możemy interpretować jako "czy w tablicy $_POST istnieje klucz o nazwie 'nazwisko'?".
@piotrek0 W kodzie który podałeś należy użyć składni
  1. if(isset($_POST['nazwisko']) && $_POST['nazwisko'] != '')
ponieważ $_POST['nazwisko'] zostanie zainicjowane pustą wartością, jeżeli nie wypełnimy odpowiedniego pola.
Natomiast znak ` to gravis, czyli znak akcentu. W bazach danych nazwy baz, tabel i pól możemy otaczać tylko tym znakiem, a ' (czyli apostrof) służy do definiowania łańcucha znakowego.
Go to the top of the page
+Quote Post
sadistic_son
post 27.03.2010, 21:20:40
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Pojedynczy cudzyslow ( ' ) uzywasz w php np. do tworzenia ciagow znakow np. echo ' costam'; a w SQLu konkretne wartosci. Natomiast to ( ` ) uzywasz w zapytaniu kierowanym do SQL umieszczajac nazwy tabel i kolumn.
  1. <?php
  2. include 'sqlLogin.php';
  3.  
  4. if(isset($_POST['nazwisko']) && $_POST['nazwisko']!="" && isset($_POST['limit']) && $_POST['limit']!="" && isset($_POST['send']))
  5. {
  6. $nazwa_uzytkownika = $_POST['nazwisko'];
  7. $limit_zamowienia = $_POST['limit'];
  8. $zapytanie = "INSERT INTO `uzytkownik` (`nazwa_uzytkownika`, `limit_zamowienia`) VALUES ('$nazwa_uzytkownika', '$limit_zamowienia')";
  9. mysql_query($zapytanie);
  10. }
  11. ?>
  12. <form encetype="text/plain action="uzytkownik2.php" method="POST">
  13. <input type="text" name="nazwisko" value="NAZW">
  14. <input type="text" name="limit" value="987">
  15. <input type="submit" name="send" value="Wyslij">
  16. </form>
  17. <?php
  18.  
  19.  
  20. $wybranie = 'select * from `uzytkownik` ORDER BY `id_uzytkownika` DESC';
  21. $wynik = mysql_query($wybranie);
  22. $num=mysql_num_rows($wynik);
  23. if($num>0){
  24. while($rekord = mysql_fetch_array($wynik, MYSQL_NUM)){
  25.  
  26. echo '<br><b>Nazwa użytkownika</b> '.$rekord[0].'<br><b>Limit zamówienia</b> '.$rekord[1].'<br><b>Aktywniść konta:</b> '.$rekord[2].'<br>ID: '.$rekord[3].'<br><br>';
  27. }}else{ echo 'Brak danych z tej tabeli!';}
  28. ?>
Masz tu poprawiony kod.
Warunek sprawdza czy zostaly wypelnione potrzebne pola czyli nazwisko i limit oraz czy kliknieto w 'Wyslij'. Jesli tak to wykonuje sie dodanie do bazy. Nastepnie wysiwetlany jest formularz. Zmienna $num jest iloscia rekordow z tego zapytania. Warunek if sprawdza czy jest minimum 1 rekord. Jesli tak to wyswietlane sa rekordy z bazy. Petla while wykonuje wyswietlenie wszystkich rekordow spelniajacych kryteria zapytania (select * from `uzytkownik` ORDER BY `id_uzytkownika` DESC), czyli wyswietli wszystkie rekordy uporzadkowane wg. id_uzytkownika majejaco. Ciag znakow podany w echo wyswietli sie tyle razy ile jest rekordow, natomiast za $rekord[0], $rekord[1] itd. zostana podstawione wartosci kolejnych kolumn z tej tabeli, przy kazdym powtorzeniu petli - nastepny wiersz. Jesli $num <=0 to wyswietla sie komunikat ze brak rekordow.
Proste? winksmiley.jpg

Ten post edytował sadistic_son 27.03.2010, 21:31:35


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
MateuszS
post 27.03.2010, 21:23:03
Post #5





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Mortus, napisalem co isset robi w jego kodzie a nie co robi w ogole smile.gif


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
piotrek0
post 27.03.2010, 21:28:24
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 23.03.2010

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


Aha czyli isset służy do tego, że jak jakiś maniak wejdzie nam na stronę i będzie naciskać F5 kilkaset razy to nam się dzięki temu nie pojawi kilkaset wpisów w bazie danych.

Dziękuję! Co do książek to już kilka wypożyczałem zaczynałem czytać, krzyczałem w myślach "WTF?!" i odkładałem. Ciężko o pomoc która wytłumaczy elementarne rzeczy, albo są one w ogóle nie tłumaczone, albo tak, że "echh napijmy się".

Najgorsze jest to, że jest w sieci dużo śmiecia, które tłumaczy jak dodawać do siebie zmienne, ale żeby trafić na to jak zrobić formularze z dodawaniem danych do bazy, czy jak te dane wyciągnąć do tablicy, a potem jak tę tablicę wydrukować na ekranie w sposób przystępny dla użytkownika to już nie.

Dlatego zdesperowany zawracam Wam głowę, chociaż zawszę wolę sam poszukać, pogooglować i poczytać.

Czekam na rozwikłanie reszty zagadek smile.gif

I oczywiście dziękuję smile.gif


//edit
O widzę, że jest więcej odpowiedz, zaraz ogarnę i się ustosunkuję.

Ten post edytował piotrek0 27.03.2010, 21:32:26
Go to the top of the page
+Quote Post
sadistic_son
post 27.03.2010, 21:32:45
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(piotrek0 @ 27.03.2010, 21:28:24 ) *
Aha czyli isset służy do tego, że jak jakiś maniak wejdzie nam na stronę i będzie naciskać F5 kilkaset razy to nam się dzięki temu nie pojawi kilkaset wpisów w bazie danych.
Nie, isset Cie przed F5 nie zabezpieczy. Isset powoduje ze rekord sie nie doda do bazy jesli nie klikniesz w 'Wyslij' i nie wypelnisz pol nazwisko i limit.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
MateuszS
post 27.03.2010, 21:38:39
Post #8





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Cytat(sadistic_son @ 27.03.2010, 21:32:45 ) *
Nie, isset Cie przed F5 nie zabezpieczy. Isset powoduje ze rekord sie nie doda do bazy jesli nie klikniesz w 'Wyslij' i nie wypelnisz pol nazwisko i limit.


Dokładnie.

Jeżeli nie rozumiesz kursów, to polecam jakąś analizę prostego kodu, praktykę, jakąś dobrą książkę. Kursy to czysta teoria, bez praktycznych przykładów typu system newsów, shoutbox. Takich skryptów jest mnóstwo, wystarczy wpisać w google odpowiednią frazę, pobierasz i analizujesz.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sadistic_son
post 27.03.2010, 21:42:37
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Osobiście polecam tą książkę: Lis M.: PHP i MySQL dla każdego. Wydawnictwo Helion, Gliwice 2005. stara ale jara. Wszystko jest tak wytlumaczone ze nie majac kompletnie zadnego polecia o programowaniu nawet debil nauczy sie z niej php i podstaw sql/mysql.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
mortus
post 27.03.2010, 21:48:30
Post #10





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(sadistic_son @ 27.03.2010, 21:20:40 ) *
Pojedynczy cudzyslow ( ' ) uzywasz w php np. do tworzenia ciagow znakow np. echo ' costam';
@sadistic_son: Nie tylko w PHP, bo Twoje $zapytanie wstawia łańcuchy znaków do bazy danych i używasz tam apostrofów (dokładniej w VALUES ('...', '...')).
@MateuszScirka: Sorry, że się czepiam, ale już Ci to gdzieś tłumaczyłem.
@piotrek0: Jeżeli użytkownik naciśnie F5 zaraz po wysłaniu formularza, to dostanie pytanie "Czy wysłać ponownie dane?". Zatem isset nie "blokuje" F5. F5 możemy zablokować np. przekierowując użytkownika na konkretną stronę za pomocą funkcji header, oczywiście po poprawnym zalogowaniu. isset w formularzach ma sprawdzać, czy np. checkbox-y albo radio zostały zaznaczone, lub czy pole zostało wypełnione 0 (zerem). Ogólnie rzecz biorąc isset doskonale się nadaje do sprawdzenia, czy szczególny "typ danych" został przesłany w odpowiednim polu. Oczywiście możemy również sprawdzać, czy formularz został wysłany, ale wtedy tak jak Mateusz pisał, najlepiej nadać parametr name przyciskowi submit.



Cytat(sadistic_son @ 27.03.2010, 21:32:45 ) *
Nie, isset Cie przed F5 nie zabezpieczy. Isset powoduje ze rekord sie nie doda do bazy jesli nie klikniesz w 'Wyslij' i nie wypelnisz pol nazwisko i limit.



Cytat(MateuszScirka @ 27.03.2010, 21:38:39 ) *
Dokładnie.

Jeżeli nie rozumiesz kursów, to polecam jakąś analizę prostego kodu, praktykę, jakąś dobrą książkę. Kursy to czysta teoria, bez praktycznych przykładów typu system newsów, shoutbox. Takich skryptów jest mnóstwo, wystarczy wpisać w google odpowiednią frazę, pobierasz i analizujesz.


NIEPRAWDA
Jeżeli będzie tak skonstruowany warunek, jak w listingu z pierwszego postu, a na pola w bazie danych nie będzie nałożonej restrykcji NOT NULL, to rekord doda się do bazy danych i będą w nim dwa puste pola.

Ten post edytował mortus 27.03.2010, 21:50:07
Go to the top of the page
+Quote Post
sadistic_son
post 27.03.2010, 21:52:39
Post #11





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(mortus @ 27.03.2010, 21:48:30 ) *
NIEPRAWDA
Jeżeli będzie tak skonstruowany warunek, jak w listingu z pierwszego postu, a na pola w bazie danych nie będzie nałożonej restrykcji NOT NULL, to rekord doda się do bazy danych i będą w nim dwa puste pola.
Właśnie to jest kolego nie prawda. Nie sądzisz że to: isset($_POST['nazwisko']) && $_POST['nazwisko']!="" dość solidnie zabezpiecza przed dodaniem pustego rekordu? EDIT: ok, jesli chodzi o pierwszy post to masz racje. Ale w moim poscie juz jest bezpiecznie smile.gif

Cytat(mortus @ 27.03.2010, 21:48:30 ) *
@sadistic_son: Nie tylko w PHP, bo Twoje $zapytanie wstawia łańcuchy znaków do bazy danych i używasz tam apostrofów (dokładniej w VALUES ('...', '...')).
Przeciez napisalem ze w SQLu sluzy do dodawania konkretnych wartosci.

Ten post edytował sadistic_son 27.03.2010, 21:55:00


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
piotrek0
post 27.03.2010, 22:04:26
Post #12





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 23.03.2010

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


No dobrze to co na razie zrozumiałem to to, że tego gravisa używamy w mysql i tak po prostu jest.

Co do isset. To zrozumiałem, że ta instrukcja warunkowa sprawdza czy pola formularza nie są puste, i jak są to wtedy nie pozwala na wykonanie zapytania do bazy czyli dodania rekordu.

Ale czy konieczne jest robienie tego dla wszystkich pól? Może będę chciał zezwolić użytkownikowi na nie wypełnianie pola? A co się stanie, jak w ogóle nie użyję isset? Przy każdym wejściu na stronę będzie wywoływało się zapytanie i puste rekordy trafią do mojej tabeli?

A jaką wartość będzie miała zamienna $_POST jeżeli jednak wyślemy puste formularze? NULL?
Go to the top of the page
+Quote Post
MateuszS
post 27.03.2010, 22:10:13
Post #13





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Piotrek0, nie każde pole musi być wypełnione, ty decydujesz które. Wiadomo, pole hasło/login itp. muszą, wiadomo, ale np. numer telefonu nie, jeżeli pozostawisz puste to się nic nie stanie. W przypadku loginu i hasła (przykład) musisz sprawić np. za pomocą empty czy zmienna nie jest pusta no i musisz ją zwalidować (czy jak to się pisze)

Ten post edytował MateuszScirka 27.03.2010, 22:12:21


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sadistic_son
post 27.03.2010, 22:12:44
Post #14





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Cytat(piotrek0 @ 27.03.2010, 22:04:26 ) *
A co się stanie, jak w ogóle nie użyję isset? Przy każdym wejściu na stronę będzie wywoływało się zapytanie i puste rekordy trafią do mojej tabeli?
Tak się właśnie stanie.

Cytat(piotrek0 @ 27.03.2010, 22:04:26 ) *
A jaką wartość będzie miała zamienna $_POST jeżeli jednak wyślemy puste formularze? NULL?
Tak.

Cytat(piotrek0 @ 27.03.2010, 22:04:26 ) *
Co do isset. To zrozumiałem, że ta instrukcja warunkowa sprawdza czy pola formularza nie są puste, i jak są to wtedy nie pozwala na wykonanie zapytania do bazy czyli dodania rekordu.
Dobrze zrozumiałeś.

Cytat(piotrek0 @ 27.03.2010, 22:04:26 ) *
Ale czy konieczne jest robienie tego dla wszystkich pól? Może będę chciał zezwolić użytkownikowi na nie wypełnianie pola?
Jesli chcesz np. aby uzytkownik musial wypelnic nazwisko a tylko mogl opcjonalnie wypelnic limit to nie musisz uzywac isste w pierwszym warunku. Ale musisz uzyc go dalej aby sprawdzic czy uzytkownik to wypelnil czy nie. Cos musi byc dodane do bazy w miejsce limit. Albo to co wpisal uzytkownik albo np. znak 0 czy + czy cokolwiek innego ustalonego przez Ciebie. Tzn nie musi byc dodane jesli w tabeli dla konkretnej kolumny nie ustawiles NOT NULL. Ale ja proponuje jednak i tak wpisywac np. 0 bo inaczej moze to powodowac problemy przy pozniejszym dzialaniu na rekordach.

Ten post edytował sadistic_son 27.03.2010, 22:15:25


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
piotrek0
post 27.03.2010, 22:30:47
Post #15





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 23.03.2010

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


Cytat(MateuszScirka @ 27.03.2010, 22:10:13 ) *
Dobra ludzie, nie mąćcie mu w głowie tą teorią,

Piotrek0, nie każde pole musi być wypełnione, ty decydujesz które. Wiadomo, pole hasło/login itp. muszą, wiadomo, ale np. numer telefonu nie, jeżeli pozostawisz puste to się nic nie stanie. W przypadku loginu i hasła (przykład) musisz sprawić np. za pomocą empty czy zmienna nie jest pusta no i musisz ją zwalidować (czy jak to się pisze)

Właśnie usunąłem isset z tego mojego kodu i tak jak odświeżałem to mi się nowe rekordy pojawiały, a jak przywróciłem ją z powrotem to już nie.

Dlaczego za pomocą empty mam to sprawdzić? Isset się do tego nie nadaje?

Następne co zrobiłem to nadałem name="przycisk" przyciskowi i ustawiłem isset na "przycisk".
Ale rezultaty były inne niż się spodziewałem. Kiedy nacisnąłem przycisk a potem odświeżałem to rekordy do bazy danych dodawały się, ale jak wszedłem od nowa na stronę i nic nie ruszałem tylko odświeżałem to wtedy nie.

Bo ten submit to przekazuje do zmiennej $_POST to co jest w formularzach, i jeżeli formularze będą puste to przekaże NULL

Chyba powoli zaczynam rozumieć.

Jaką wartość będzie miała ta zmienna?
  1. $a

a ta?
  1. $b=''


obie NULL?

@sadistic_son

Cytat
Cytat(piotrek0 @ 27.03.2010, 22:04:26 )
Cytat
Co do isset. To zrozumiałem, że ta instrukcja warunkowa sprawdza czy pola formularza nie są puste, i jak są to wtedy nie pozwala na wykonanie zapytania do bazy czyli dodania rekordu.

Dobrze zrozumiałeś.

Skoro tak to dlaczego nie uchroni mnie to przed odświeżaniem?

Nie ochroni mnie to przed odświeżaniem, bo jak jakiś maniak już kliknie wyślij, to wtedy przeglądarka podczas odświeżania będzie wysyłać te same dane, co przy poprzednim załadowaniu. Jednak uchroni mnie to przed dodawaniem rekordu podczas wejścia na stronę.

Ten post edytował piotrek0 27.03.2010, 22:39:14
Go to the top of the page
+Quote Post
erix
post 27.03.2010, 22:33:19
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ekhm, przecież to są stałe...?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
piotrek0
post 27.03.2010, 22:40:01
Post #17





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 23.03.2010

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


Cytat(erix @ 27.03.2010, 22:33:19 ) *
Ekhm, przecież to są stałe...?

O co chodzi? smile.gif
Nie no racja niechcący wpisałem małpę zamiast dolara. Dzięki.
Go to the top of the page
+Quote Post
achill
post 28.03.2010, 08:26:20
Post #18





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.08.2009
Skąd: wertykalne przez większość dnia

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


na odświeżanie znam tylko jeden sposób - nie bedę go tu prezentował bo by troche zajał miejsca a nie o tym tu przeciez mowa - sprawdzanie czy wartosci nie sa zdublowane jeszcze przed zapisem do bazy - ma niestety pare wad - przy duzej ilosci wierszy sprawdzenie chwilke zajmie - poza tym wymaga gruntownego przemyslenia ktora kolumne ma sprawdzac - przeciez nie kazda z osobna bo gdyby cos takiego zastosowali na tym forum to kazdy z nas moglby zamiescic tylko jeden post w zyciu w obrebie calego forum).

co do isset - to troche chlopaki namieszaliscie albo ja was nie zrozumialem blinksmiley.gif

isset to z angielskiego is set = jest wybrany (w wolnym tlumaczeniu)
czyli
if (isset($_POST['user'])&&($_POST['user'] != ')) ...

nalezy odczytywac jako:

jesli ( jest wybrane (pole post o nazwie [user]) //inaczej: zostalo przeslane pole post o nazwie user// i (to wlasnie pole o nazwie [user] nie ma zadnej wartosci )to ... (i tu wpisujemy instrukcje do wykonania np dodania wartosci przeslanego pola do bazy danych)

takze samo isset($_POST['user']) sprawdza czy pole 'user' zostalo przeslane/istnieje - innaczej mowiac tworzy array o nazwie user o podanej przez uzytkownika wartosci i nic wiecej - latwo sprawdzic: print_r($_POST);
if (isset($_POST['user'])) - stawia warunek dla wykonania dalszych instrukcji - jesli zostalo przeslane pole user.

co do materialow z ktorych mozna sie uczyc polecam - tez juz nienajswiezsza "php5, apache i mysql - od podstaw" z serii programmers for programmers wydanej po polsku w helionie. ja sie z tego uczylem i odnosze wrazenie ze mam solidne podstawy



--------------------
"pomógł" daje nie dlatego, że ktoś mi pomógł
ale dlatego, że się czegoś mogłem nauczyć.
Go to the top of the page
+Quote Post
mortus
post 28.03.2010, 08:36:38
Post #19





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(achill @ 28.03.2010, 09:26:20 ) *
isset to z angielskiego is set = jest wybrany (w wolnym tlumaczeniu)
To ty chba znasz inny angielski niż ja, bo is set w moim wolnym tłumaczeniu znaczy "jest ustawiony", a nie jest wybrany, zresztą tak mówi manual php.
Cytat(achill @ 28.03.2010, 09:26:20 ) *
pole 'user' zostalo przeslane/istnieje - innaczej mowiac tworzy array o nazwie user o podanej przez uzytkownika wartosci i nic wiecej - latwo sprawdzic: print_r($_POST);
A skąd. Przesłanie pola [user], również pustego spowoduje dodanie do tablicy $_POST indexu (klucza) [user], tablicę tworzy się w wyjątkowych sytuacjach (jeśli np. mamy kilka checkbox-ów z name="nazwa[]").

Ten post edytował mortus 28.03.2010, 08:37:29
Go to the top of the page
+Quote Post
thek
post 28.03.2010, 09:04:10
Post #20





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Achill... Ja na odświeżanie znam taki sposób, że możesz sobie wciskać F5 ile razy chcesz, pierwsze klikniecie wyśle do bazy jako normalne dodanie, a każde kolejne będzie rozpoznawane jako update.
Isset -> pole jest ustawione, ma jakąkolwiek wartość (może być puste, NULL, nul)
empty -> sprawdza czy pole nie ma aby przypadkiem wartości pustej.

Piotrek... Jak widzę te kursy to Ty chyba na pierwszej stronie oglądaleś. Bo średnio niemal 100% kursów porusza temat łączenia i zapisu do bazy biggrin.gif Niektóre robia to lepiej, inne gorzej, ale niemal wszystkie pokazują gotowce! Może kłamię? Wpisz w google: php mysql. Pierwszy to manual php o bibliotece mysql, a drugi to pełnoprawny kurs na webmade.org, który od samej instalacji poprzez GOTOWCE pokazuje jak dodawać tabele, rekordy poprzez php i wyciągać je także poprzez php. Tak więc nie pieprz głupot, że setki oglądałeś, jak ja wpisałem dwa słowa w google i dostałem to czego Ty rzekomo nie znalazłeś. Chyba nie chcesz podpaść lenistwem od razu po rejestracji?


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:24