Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][php] wrzucanie danych ze zmiennej do bazy
katta1992
post 28.01.2010, 21:44:53
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.01.2010

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


Witam

Rozpoczynam swoją zabawę z PHP i MySQL od pisania bazy danych na informatyce, dostałam trochę teorii, a reszta to owoc googlowania i wyciągania wniosków, więc bardzo prawdopodobne jest, że napiszę tu jakieś głupoty ;p

Chcę wykonać następujący manewr: pobrać dane z bazy (1 tabela, 2 kolumny: imię i nazwisko), umieścić je w formularzu typu select, ale na jednej liście (to zresztą zrobiłam), następnie pobrać dane, które wybierze użytkownik z tej listy i zapisać je w innej tabelce w bazie.
Nic prostszego, tylko że pracuję na 2 kolumnach, więc dane pobrane z listy to imię i nazwisko razem, zapisane pod jedną zmienną - a ja potrzebuję odszukać potem id tych danych, które w bazie nadal są zapisane osobno.
Jak to rozwiązać?
Go to the top of the page
+Quote Post
pyro
post 28.01.2010, 21:47:17
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


A nie można do tej tabeli dodać jednej kolumny `id` przed dwoma pozostałymi jako klucz podstawowy z atrybutem auto_increment?

Ten post edytował pyro 28.01.2010, 21:47:34


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
katta1992
post 28.01.2010, 21:49:37
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.01.2010

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


No mam w każdej tabelce id z AI. Tylko kiedy pobieram ze zmiennej dane "Jan Kowalski", to baza "nie wie", że to jest to samo co "1" "Jan" "Kowalski".
Go to the top of the page
+Quote Post
piotrooo89
post 28.01.2010, 21:50:45
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




do value wpisujesz ID danego rekordu. i kurcze troche to zagmatwałaś bo nie wiem czy dobrze zrozumiałem.


--------------------
Go to the top of the page
+Quote Post
katta1992
post 28.01.2010, 22:00:25
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.01.2010

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


okej, to wytłumaczę jeszcze raz winksmiley.jpg

Mam w tabelce w 3 kolumnach dane czytelnika. ID: 1, imię: Jan, nazwisko: Kowalski.
Pobieram dane 'imię' i 'nazwisko' do formularza select, i mam na rozwijanej liście różne opcje, w tym "Jan Kowalski". Opcja zapisana jest pod zmienną, której nazwę wpisuję w atrybucie name.
Użytkownik wybiera tą opcję i klika na przycisk formularza, który ma za zadanie sprawdzić, jakie id ma pan Kowalski. Z tym, że dane odczytane z formularza ("Jan Kowalski") są inne niż dane w bazie ("Jan" "Kowalski").
Jaśniej? smile.gif
Go to the top of the page
+Quote Post
piotrooo89
post 28.01.2010, 22:07:33
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




szczerze nie jaśniej wogóle... w bazie rekord imie Jan nazwisko Kowalski identyfikowany jest za pomocą ID 1 i to właśnie to musisz mieć w

  1. <option value="1">Jan Kowalski</option>


i teraz gdy użytkownik wybierze tego Jana to w baza będzie wiedziała że Jan Kowalski ma ID 1, nie wiem co tu jeszcze można powiedzieć.


--------------------
Go to the top of the page
+Quote Post
pyro
post 28.01.2010, 22:12:34
Post #7





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


@katta1992 tak jak powiedział Piotr, formularz wyśle dane z selecta, które znajdują się w atrybucie value. Ten atrybut value będzie wartością, którą powinnaś szukać w bazie danych (kolumna `id`).

  1. <option value="1">Jan Kowalski</option


  1. $result = mysql_query('SELECT * FROM tabela WHERE id = '.intval($_POST['id']))


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Ulysess
post 28.01.2010, 22:12:41
Post #8





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


pobierz jeszcze id i wyświetl ją w value . przy wysyłaniu danych przez formularz dajesz takie zapytanie

  1. $zapytanie = "SELECT `imie`,`nazwisko` FROM `nazwa_tabeli` WHERE `id`='$_POST['nazwa_name']' LIMIT 1";
  2. $wykonano_zapytanie= mysql_query($zapytanie) or die(mysql_error());
  3. $wynik = mysql_num_rows($wykonano);
  4.  

jeżeli zmienna $wynik tzn że taki rekord w bazie istnieje
Go to the top of the page
+Quote Post
InosU31
post 28.01.2010, 22:21:02
Post #9





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


mi sie wydaje ze jak juz pobierzesz dane do formularza:

[PHP] pobierz, plaintext
  1. <select name="imie_nazwisko">
  2. <option value="$imie $nazwisko"> $imie $nazwisko
  3. </select>
[PHP] pobierz, plaintext
to pozniej musisz je rozlaczyc np:

[PHP] pobierz, plaintext
  1. $_rozlaczone = explode(" ", $_POST['imie_nazwisko']); // w tym miejscu rozbijasz dane - chyba sie da podac w nawiasach spacje - nie wiem czy nie trzeba uzyc jakiegos magicznego znaczka
  2. foreach ($_rozlaczone as $_dane => $_rekord)
  3. {
  4. $t1 = $_rekord[0]; // imie
  5. $t2 = $_rekord[1]; // nazwisko
  6. global $t1;
  7. global $t2;
  8. }
[PHP] pobierz, plaintext

i wrzucasz do bazy jako imie = t1

Sprobuj, ja tak rozlanczalem date ale odwrotnie jak ty czyli dane pobrane z bazy musialem rozlaczyc tam gdzie jest znak spacji ja mialem pauze a pozniej umieszcalem w select ;-)

Ps. nie wiem cyz to bedzie dizlalo bo u mnie troche jest to inaczej ale pokombinuj z tym foreach - te dane t1 i t2 dalem jako globalne zeby mozna bylo uzyc ich poza foreach.

pozdrawiam

Ten post edytował InosU31 28.01.2010, 22:23:55
Go to the top of the page
+Quote Post
katta1992
post 28.01.2010, 22:22:09
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.01.2010

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


kod wygląda w skrócie tak:
  1. $imie="SELECT `imie` FROM `czytelnicy`;
  2. $query1=mysql_query($imie);
  3.  
  4. $nazwisko="SELECT `nazwisko` FROM `czytelnicy`;
  5. $query2=mysql_query($nazwisko);
  6.  
  7. while(($wynik1=mysql_fetch_row($query1))&&($wynik2=mysql_fetch_row($query2)))
  8. {
  9. echo "<select name="czytelnik"><option>".$wynik1[0].$wynik2[0]."</option></select>;
  10. }; // w rezultacie otrzymuję rozwijaną listę z imieniem i nazwiskiem
  11.  
  12. $czytelnik=$_POST[`czytelnik`]


i teraz w zmiennej czytelnik mam "Jan Kowalski", a takiej danej w bazie nie ma - przynajmniej nie w jednej kolumnie - więc nie mogę odszukać teraz, jakie id ma ten, kogo nazwisko jest zapisane w zmiennej czytelnik.
Jeśli i teraz nie wiesz, o co mi chodzi, to zmienię koncepcję i zrezygnuję z tego winksmiley.jpg)
Go to the top of the page
+Quote Post
piotrooo89
post 28.01.2010, 22:26:00
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




o mój boże czego w tych szkołach uczą...

  1. $imie="SELECT * FROM czytelnicy";
  2. $query=mysql_query($imie);
  3.  
  4. while(($wynik=mysql_fetch_array($query))
  5. {
  6. echo '<select name="czytelnik"><option value="'.$wynik['id'].'">'.$wynik['nazwisko'].' '.$wynik['imie'].'</option></select>;
  7. }; // w rezultacie otrzymuję rozwijaną listę z imieniem i nazwiskiem


no i teraz masz w zmiennej (a tak naprawdę tablicy super globalnej POST) ID tego janka kowalskiego. czegóż Ci więcej do szczęścia trzeba? smile.gif

Ten post edytował piotrooo89 28.01.2010, 22:27:57


--------------------
Go to the top of the page
+Quote Post
katta1992
post 28.01.2010, 22:31:15
Post #12





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.01.2010

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


Okej, nauczycielem nie zostanę, bo nie umiem tłumaczyć o co mi chodzi ;D

Nadal nie widzę rozwiązania, ale posiedzę nad tym jeszcze, piszę w PHP od 4 dni, więc proszę o wyrozumiałość smile.gif)

Dziękuję za pomoc, pozdrawiam
Go to the top of the page
+Quote Post
pyro
post 28.01.2010, 22:31:24
Post #13





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


@inosU31, takie rozwiązanie jest długie, zbędne, a nawet bym powiedział błędne, panie
Cytat(InosU31 @ 28.01.2010, 22:21:02 ) *
rozlanczalem


tongue.gif

@katta1992, twój kod powinien być bardziej w tym stylu:

  1. $result = mysql_query('SELECT * FROM `czytelnicy`');
  2. echo '<form action="" method="post">';
  3. echo '<select name="czytelnik">';
  4. while($row = mysql_fetch_assoc($result))
  5. {
  6. echo '<option value="'.$row['id'].'">'.$row['imie'].''.$row['nazwisko'].'</option>';
  7. }
  8. echo '</select>';
  9. echo '</form>';


I teraz jak wyślesz ten formularz to w tablicy POST będzie id czytelnika, z którym możesz robić na bazie, co tylko chcesz.

Ten post edytował pyro 28.01.2010, 22:37:44


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 28.01.2010, 22:35:43
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




@pyro przy *_fetch_row nie można odnosić się asocjacyjnie tylko wyliczeniowo, taka mała uwaga winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
pyro
post 28.01.2010, 22:38:48
Post #15





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(piotrooo89 @ 28.01.2010, 22:35:43 ) *
@pyro przy *_fetch_row nie można odnosić się asocjacyjnie tylko wyliczeniowo, taka mała uwaga winksmiley.jpg


Racja, dzięki, zagapiłem się i zacząłem pisać nazwami zamiast liczbami. Efekt szybkiego pisania. Przeoczenie poprawiłem.


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
InosU31
post 28.01.2010, 22:39:18
Post #16





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


pyro zasugerowalem sie pierwszym postem katta1992 w ktorym pisala ze chce wrzucic te dane do drugiej tabeli - moze za dlugo siedze przed kompem i zle cos zrozumialem - a dopiero teraz zauwazylem o co jej chodzilo;-)

co do bledow to daruj sobie ... robie bledy i bede je robic - polonista i tak nie bede;P


pozdrawiam
Go to the top of the page
+Quote Post
piotrooo89
post 28.01.2010, 22:41:35
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(InosU31 @ 28.01.2010, 22:39:18 ) *
co do bledow to daruj sobie ... robie bledy i bede je robic - polonista i tak nie bede;P


ale jakaś znajomość (chodź choć podstawowa) nikt Ci nie każe być drugim prof. Miodkiem.

bo mi firefox źle poprawia sad.gif

Ten post edytował piotrooo89 28.01.2010, 22:48:56


--------------------
Go to the top of the page
+Quote Post
pyro
post 28.01.2010, 22:43:13
Post #18





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(piotrooo89 @ 28.01.2010, 22:41:35 ) *
ale jakaś znajomość (chodź podstawowa) nikt Ci nie każe być drugim prof. Miodkiem.


Sorry za mały off-topic, ale to dosyć zabawne:

Cytat(piotrooo89 @ 28.01.2010, 22:41:35 ) *
(chodź podstawowa)


Jak to mówią... trafił swój na swego tongue.gif


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post

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: 6.07.2025 - 21:44