Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Foreach przy zapisie do bazy?
max_mcee
post
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


Mam formularz pobierający z bazy danych użytkowników:
  1. <?php
  2.  
  3. $query = "SELECT * FROM user";
  4. $result = mysql_query($query);
  5. while($row = mysql_fetch_array($result)) {
  6.  
  7. ?>
  8. <tr>
  9. <td><?php echo $row['imie']; ?> <?php echo $row['nazwisko']; ?></td>
  10. <td><input type="text" name="formularz[a<?php echo $row['id_user']; ?>]" value="" /></td>
  11. <td><input type="text" name="formularz[b<?php echo $row['id_user']; ?>]" value="" /></td>
  12. <td><input type="text" name="formularz[c<?php echo $row['id_user']; ?>]" value="" /></td>
  13. </tr>
  14. <?php
  15. }
  16. ?>


Co daje nam w rezultacie
(IMG:http://ganski.eu/phpz/1.jpg)

Mam kod php:
  1. <?php
  2.  
  3. if($_POST['submit'] == 1) {
  4.  
  5. $table = $_POST['formularz'];
  6. foreach($table AS $row) {
  7. $query = "INSERT INTO test (id, a, b, c) VALUES (NULL, '$row', '$row', '$row')";
  8. $result = mysql_query($query);
  9. }
  10. }
  11. ?>


który powinien zapisywać dla każdego użytkownika dane do bazy, jednak zamiast rezultatu który chciałbym uzyskać, czyli:
(IMG:http://ganski.eu/phpz/2.jpg)

otrzymuję po wpisaniu w formularz danych w ten sposób:
(IMG:http://ganski.eu/phpz/3.jpg)

taki wynik w bazie:
(IMG:http://ganski.eu/phpz/4.jpg)

Hmmm nie mam za bardzo pomysłu jak to naprawić...
Go to the top of the page
+Quote Post
sadistic_son
post
Post #2





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

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


No i co w tym dziwnego? Twoje zapytanie wrzuca do bazy 3 razy to samo czyli za a, b i c podstawia tą samą wartość $row.
Go to the top of the page
+Quote Post
max_mcee
post
Post #3





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


no to widzę (IMG:style_emoticons/default/smile.gif)

jednak nie wiem jak zrobić to tak, aby działało...
Go to the top of the page
+Quote Post
wizu
post
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Strzel sobie
  1. var_dump($table);

lub
  1. print_r($table);

I zobacz co masz w tablicy. Może wtedy zobaczysz w czym problem.
Go to the top of the page
+Quote Post
max_mcee
post
Post #5





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


zrobiłem to :
  1. var_dump($val);


co daje wynik:
  1. string(1) "1" string(1) "2" string(1) "3" string(1) "4" string(1) "5" string(1) "6" string(1) "7" string(1) "8" string(1) "9" string(2) "10" string(2) "11" string(2) "12"


jednak nie wiem jak to zapisać do bazy...

Go to the top of the page
+Quote Post
hatesz
post
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 7
Dołączył: 6.05.2010
Skąd: Kraków

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


Jeżeli masz jeden wiersz w tabeli `test` dla jednego użytkownika w tabeli `users` to zamiast instrukcji INSERT korzystaj z UPDATE i po prostu aktualizuj już jeden gotowy wiersz zamiast dodawania kolejnego...
Go to the top of the page
+Quote Post
max_mcee
post
Post #7





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


istotom tego jest właśnie, aby były zapisywane za każdym razem nowe wyniki.
nie wierzę, że nie da się tego zrobić...
Go to the top of the page
+Quote Post
hatesz
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 7
Dołączył: 6.05.2010
Skąd: Kraków

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


Jeśli chcesz, aby za każdym nowym, wysłanym formularzem była stała ilość pozycji w BD to masz dwa wyjścia:
a) poprawiać je (UPDATE),
(IMG:style_emoticons/default/cool.gif) usuwać stare (DELETE) i dodawać w ich miejsca nowe (INSERT).
Go to the top of the page
+Quote Post
max_mcee
post
Post #9





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


a gdyby dodać jeszcze jedno pole np. z datą?
Go to the top of the page
+Quote Post
hatesz
post
Post #10





Grupa: Zarejestrowani
Postów: 23
Pomógł: 7
Dołączył: 6.05.2010
Skąd: Kraków

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


Na jakiej zasadzie miało by to działać? Nie za bardzo rozumiem o co Ci chodzi.
Go to the top of the page
+Quote Post
max_mcee
post
Post #11





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


tak aby każdy rekord był unikalny.
nie potrafię poradzić sobie z samym zapisem do bazy, dla każdego użytkownika tak jak wyżej, mają zostać zapisane wartości wpisywane w inputach.
ale jak to zapisuje to wychodzi jak wychodzi tak jak na screenie powyżej ...
chodzi mi o sam zapis tej tablicy do bazy, jak to wykonać(IMG:style_emoticons/default/questionmark.gif)
potem, aby wpisy były unikatowe, można by dodać pole z datą, która nie może się powtarzać.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 06:34