Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] Dodawanie do bazy MySql poprzez formularze...
mysql_php
post 1.08.2006, 09:05:22
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Mam do Was małą prośbę, napiszę to trochę łopatologicznie ale zalezy mi na precyzyjnej odpowiedzi Otóż,

Mam baze danych w mysql. Jedną z tabel jest tabela "wypożyczenia". (Moim celem jest zrobić interfejs w php) Tabela ta ma prócz klucza głównego "ID_wypozyczenia", dwa klucze obce które odwołują się do tabel: Filmy oraz Klienci.

Chciałbym aby z poziomu strony www napisanej w php i html było możliwe dodawanie rekordów (wiem, że robi się to poprzez formularz ale niestety nie wiem jak). Nie chodzi mi o gotowcu, chciałbym się nauczyć po prostu jak to robić. Proszę tylko o jakiś przykład bo szukałem w sieci tego konkretnego przypadku ale niestety nic nie znalazłem.

Z góry wielkie dzięki! Pozdrawiam

Ten post edytował mysql_php 1.08.2006, 14:41:13
Go to the top of the page
+Quote Post
Athlan
post 1.08.2006, 09:11:24
Post #2





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Wprowadzanie do bazy to
  1. INSERT INTO ...

nawet dam Ci coś na tacy:
http://php.webhelp.pl/kursy/mysql/index.php?roz=php

w sam raz jak na początek

potem:
http://haxite.org/index.php3?site=artykul&...view&id=600
http://haxite.org/index.php3?site=artykul&...view&id=630

pozdrawiam smile.gif

Ten post edytował Athlan 1.08.2006, 09:11:51


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 09:20:21
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


ok, dzięki za wskazanie lektury! Jak tylko wrócę z pracy to zabieram się do czytania cool.gif
Ale mam taką małą prośbę, otóż :

jak zapisać warości po wyrażeniu "VALUES" tak, aby pobierał je z formularza? bo ogólną budowę instrukcji znam: INSERT INTO 'tabela' VALUES ('xxxx','xxx'.....) ale nie wiem jak w przypadku formularza to wygląda. Pomożecie mi w tej małej kwestji?

dzięki!
Go to the top of the page
+Quote Post
Ludvik
post 1.08.2006, 09:29:03
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Dane z formularzy są dostępne w zmiennych superglobalnych $_POST i $_GET, zależnie od metody żądania. Przed wstawieniem ich do zapytania musisz upewnić się, czy nie zawierają one znaków typowych dla składni SQL. Do tego używasz funkcji typu mysql_real_escape_string" title="Zobacz w manualu php" target="_manual. Jeżeli nie zadbasz o to, umożliwisz atak SQL Injection na swój serwis. Na którymś forum jest przylepiony o tym...


--------------------
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 12:42:42
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


a czy mógłbym prosić o przedstawienie mi w dwóch punktach:

1. Formularza do wypełniania bazy
2. instrukcji SELECT z wisanymi zmiennymi z tego formularza.

Chodzi mi o to, żebym mógł zobaczyć jak wygląda w praktyce taki kod przykładowego, gotowego formularza (chociaż z polem na jedną daną) i instrukcji SELECT.

Bardzo dziękuję i sorry za zawracanie gitary ale na akurat tą kwestję nie mogę nigdzie znależźć odpowiedzi.

pozdrawiam!
Go to the top of the page
+Quote Post
Athlan
post 1.08.2006, 12:46:09
Post #6





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


chyba musisz zacząć naukę od porządnego kursu php, odnoszę:
Temat: Kursy dla poczatkujacych

przykładowy kod (jakiś stary wyciągnąłem z szafki) smile.gif:

http://phpfi.com/136467

Ten post edytował Athlan 1.08.2006, 12:49:26


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 12:46:14
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ad1)
http://forum.php.pl/index.php?showtopic=22377
Gratisowo masz tam edycje i usuwanie smile.gif

ad2)
http://forum.php.pl/index.php?showtopic=43688&hl=

Na przyszlosc uzywamy wyszukiwarki

proszę poprawić tytuł o znacznik zgodnie z zasadami forum Przedszkole:
Temat: Tematyka i zasady panujace na forum Przedszkole


Prosze rowniez poprawic tytul na mowiacy cos o problemie a nie taki ogolnik


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 13:56:53
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


ok, po części znalazłem:

  1. <?php
  2. if ($co == 'Dodaj') {
  3. if ($imie && $nazwisko && $telefon){
  4. $query = "INSERT INTO ksiazkatelefoniczna (nr, imie, nazwisko, telefon) VALUES (' ', '$imie', '$nazwisko','$telefon')";
  5. $wynik = mysql_query ($query);
  6. }
  7. ?>


Tutaj jak dobrze rozumiem są zmienne $imie, $nazwisko, $telefon które podaje się w formularzu..
Czy moglibyscie mi tutaj zamieścić taki formularz?
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 13:58:50
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy moglibyscie mi tutaj zamieścić taki formularz?
przeczytaj jeszcze raz link z ktorego wytrzasnales ten kod. Przeciez tam jest ten formularz....

Prosze grzecznie poraz drugi o zastosowanie sie do zasad, ktore wymienilem w poprzednim poscie


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 14:10:58
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


przepraszam bardzo za kłopot ale tamten kod jest trochę nieczytelnie dla mnie napisany.
Mógłbyś mi wkleić tylko sam kod formularza? Wiem, że zawracam głowę ale najlepiej mi idzie nauka jak
analizuję sobie takie fragmęty kodu smile.gif

PS. Bardzo chętnie zmienię temat ale nie wiem jak sad.gif
Go to the top of the page
+Quote Post
nospor
post 1.08.2006, 14:14:17
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No formularz zaczyna sie od <form ..... to i tego trzeba szukac.
  1. <?php
  2. echo'<FORM action="index.php" METHOD="POST">Nowy rekord:';
  3. echo'<INPUT TYPE="hidden" NAME="co" VALUE="Dodaj"><TABLE>';
  4. echo'<TR><TD>Imie:</TD><TD><INPUT TYPE="text" ';
  5. echo'NAME="imie"></TD></TR><TR><TD>Nazwisko</TD><TD><INPUT ';
  6. echo'TYPE="text" NAME="nazwisko"></TD></TR><TR><TD>Telefon</TD>';
  7. echo'<TD><INPUT TYPE="text"NAME="telefon"></TD></TR>';
  8. echo'</TABLE><INPUT TYPE="submit" VALUE="Dodaj"></FORM>';
  9. ?>

swoją drogą faktycznie jest to jeden z bardziej nieczytelnych kodow jakie widzialem smile.gif

co do zmiany tytulu, to musisz edytowac swoj pierwszy post, a przy okazji bedziesz mogl zmienic tytul


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 14:48:00
Post #12





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


ok, dziękuję bardzo. Temat zmieniłem smile.gif

Teraz próbuję dojść do tego, które pola z formularza i z instrukcji INSERT są "wspólne" smile.gif
chodzi mi o to jak instrukcja INSERT "wie" skąd wziąć wartości podane w formularzu...

Czy w takim razie pola z instrukcji poniższej
  1. <?php
  2. ' ', '$imie', '$nazwisko','$telefon')"
  3. ?>


  1. <?php
  2. $query = "INSERT INTO ksiazkatelefoniczna (nr, imie, nazwisko, telefon) VALUES (' ', '$imie', '$nazwisko','$telefon')";
  3. ?>


znajdują się gdzieś w formularzu?

Mam nadzieję, że nie zagmatwałem zbytnio smile.gif
Go to the top of the page
+Quote Post
MagnuM
post 1.08.2006, 15:34:36
Post #13





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Po pierwsze musisz zacząć od zapoznania się z zasadą działania tego co próbujesz zrobić:

- formularz jest tutaj plikiem 'kontaktującym' się z użytkownikiem strony, to on odbiera od niego wszelkie informacje
- te informacje dalej przesyłane są zgodnie z artybutem action do pliku, który dane zebrane w formularzu odpowiednio wykorzysta

1. Najpierw tworzysz plik z formularzem, który to plik możesz nazwać formularz.html.
- w akcji formularza musisz podać plik, do którego zmienne z formularza zostaną przesłane; chodzi o atrybut action w znaczniku form.

formularz.html
  1. <form action="action.php" method="post">
  2. Nowy rekord: <input type="hidden" name="co" value="Dodaj">< /p>
  3. Imie: <input type="text" name="imie"><br />
  4. Nazwisko <input type="text" name="nazwisko"><br />
  5. Telefon <input type="text" name="telefon"><p />
  6. <input type="submit" name="action" value="Wyślij"></form>';


Powyższy formularz prześle metodą POST (atrybut method, znacznik form) następujące zmienne:

$_POST['co'] = 'Dodaj'; // poprzez atrybut type="hidden" (ukryty - nie widoczny dla użytkownika)
$_POST['imie'];
$_POST['nazwisko'];
$_POST['telefon'];
$_POST['action'] = 'Wyślij'; // atrybut type="submit" czyli 'przycisk' przekazujący zmienne do pliku z atrybutu action znaniczka form

Od tej pory zmienne przesłane są do pliku action.php, w kórym to pliku możesz ih użyć.

action.php
  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5. $telefon = $_POST['telefon'];
  6.  
  7. // sprawdza czy dostęp nastąpił poprzez plik formularza
  8. if ( $_POST['action'] )
  9. {
  10. // sprawdza jaki typ akcji ma zostać wykonany (na wypadek kilku formularzy w pliku formularz.php)
  11. if ( $_POST['co'] == 'Dodaj' )
  12. {
  13. // sprawdza czy wszystkie pola formularza zostały wypełnione
  14. if ( $imie && $nazwisko && $telefon )
  15. {
  16. $sqlQuery = mysql_query("INSERT INTO ksiazkatelefoniczna (imie, nazwisko, telefon) VALUES ('$imie', '$nazwisko','$telefon')";
  17. }
  18. }
  19. }
  20.  
  21. ?>


Ten post edytował MagnuM 1.08.2006, 17:33:19


--------------------
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 17:08:46
Post #14





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


dokładnie o taki opis mi chodziło! Wielkie dzięki!

zrobiłem tak jak mówiłeś ale zwraca mi błąd, nie bardzo wiem co robię źle... może mi pomożecie.

dokładniej, pisze że błąd jest w 14 linii

  1. <?php
  2.  
  3. $polacz = mysql_connect('localhost', 'root', 'XXXXXXX');
  4. $wybierz = mysql_select_db('wypozyczalnia');
  5.  
  6. $ID_filmu = $_POST['ID_filmu'];
  7. $ID_osoby = $_POST['ID_osoby'];
  8. $w_data_wyp = $_POST['w_data_wyp'];
  9. $w_data_plan = $_POST['w_data_plan'];
  10. $w_uwagi = $_POST['w_uwagi'];
  11. $w_status = $_POST['w_status']
  12.  
  13.  
  14. $zapytanie = "INSERT INTO wypozycz (ID_wypozyczenia, ID_filmu, ID_osoby, w_data_wyp, w_data_plan, w_uwagi, w_st
    atus)
  15. VALUES ('$ID_filmu','$ID_osoby','$w_data_wyp','$w_data_plan','$w_uwagi','$w_status')";
  16. $wynik=mysql_query($zapytanie);
  17. ?>


Ten post edytował mysql_php 1.08.2006, 17:09:39
Go to the top of the page
+Quote Post
MagnuM
post 1.08.2006, 17:32:13
Post #15





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Najlepiej byłoby gdybyś podał treść błędu.


--------------------
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 18:12:16
Post #16





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


Przepraszam za zamieszanie. Zacząłem od nowa na innej tabeli. Ale problem wygląda tak samo.

Dziwne bo skrypt po uruchomieniu nie wyświetla żadnego błędu. Problem w tym, że nie dodaje nic do tabeli..
sad.gif

Umieszczam poniżej 2 pliki:

1. formularz
2. skrypt dodający do bazy (który właśnie nie działa:) )

FORMULARZ:

  1. <?php
  2. <table>
  3.  <form action="dodaj_gatunek.php" method="post">
  4.  
  5.  <tr><td>ID GATUNKU</td><td> <input type=text name="ID_gatunku"></td></tr>
  6.  <tr><td>NAZWA GATUNKU</td><td> <input type=text name="g_nazwa"></td></tr>
  7.  <tr><td>STATUS GATUNKU</td><td> <input type=text name="g_status"></td></tr>
  8.  <tr><td><input type="submit" value="Dodaj gatunek" name="dodaj"></td></tr>
  9.  
  10.  </form>
  11. </tr>
  12.  </table>
  13. ?>


oraz druwgi plik - SKRYPT DODAWANIA DO BAZY tego, co podane wcześniej w powyższym formularzu:

  1. <?php
  2. $polacz = mysql_connect('localhost', 'root', 'xxxxxxxxx');
  3. $wybierz = mysql_select_db('gatunek');
  4.  
  5. $ID_gatunku = $_POST['ID_gatunku'];
  6. $g_nazwa = $_POST['g_nazwa'];
  7. $g_status = $_POST['g_status'];
  8.  
  9. $zapytanie = "INSERT INTO gatunek (ID_gatunku, g_nazwa, g_status)
  10.  VALUES (NULL,'$g_nazwa', '$g_status')";
  11. $wynik=mysql_query($zapytanie);
  12. ?>
Go to the top of the page
+Quote Post
MagnuM
post 1.08.2006, 20:01:32
Post #17





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Rozumiem, że baza danych oraz tabela nazywają się tak samo, tzn. 'gatunek' ?

Dziwi mnie jedna rzecz. Podejżewam, że pole ID_gatunku w bazie danych ma parametr auto_increment. Pozatym i tak nie dodajesz go do rekordu. Jeżeli jest tak jak mówię, czyli ID_gatunku jest auto_increment, to nie dodaje się go jako NULL, poprostu omijasz to polew zapytaniu. To samo w formularzu, nie musisz pobierać tego parametru.

Pozatym nie widze tutaj nic takiego, więc zapytanie:

  1. <?php
  2. $zapytanie = "INSERT INTO gatunek (g_nazwa, g_status) VALUES ('$g_nazwa', '$g_status')";
  3. ?>


Powinno wykonać się prawidłowo, o ile stworzyłeś poprawnie tabelę.


--------------------
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 21:35:15
Post #18





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


wiem co jest nie tak, ale strasznie mnie to dziwi.

jeśli zamienię zmienną
  1. <?php
  2. '$g_nazwa'
  3. ?>
znajdującą się po VALUES -
- na postać:
  1. <?php
  2. '".$_POST['g_nazwa']."'
  3. ?>
to wszystko działa!'

Nie wiem dlaczego tak się dzieje, przecież wcześniej "nadaję" te zmienne:

  1. <?php
  2. $ID_gatunku = $_POST['ID_gatunku'];$g_nazwa = $_POST['g_nazwa'];$g_status = $_POST['g_status'];
  3. ?>


Wiecie dlaczego tak się dzieje questionmark.gif
Go to the top of the page
+Quote Post
MagnuM
post 1.08.2006, 21:41:31
Post #19





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Ja Ci powiem tak. Z doświadczenia wiem, że na tym poziomie który reprezentujemy oboje php w większości przypadków jest nieomylny i bardzo wiele razy zdarzyło mi się strasznie denerwować na coś co powinno działać, a nie działa. Sprawdź wszystko dokładnie, a na pewno postukasz się w głowe, że to taki banał...

Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
mysql_php
post 1.08.2006, 21:45:25
Post #20





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.08.2006

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


...no i Stary masz rację! Już gra gitara guitar.gif

zamiast
  1. <?php
  2. $ID_gatunku = $_POST['ID_gatunku'];
  3. ?>


należało napisać odwrotnie:
  1. <?php
  2. $_POST['ID_gatunku'] = $ID_gatunku;
  3. ?>


powiem tak... warto czasem samemu nad czym pogłówkować, tylko na dobre to wyjdzie smile.gif
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: 19.07.2025 - 03:29