Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] wysyła tylko pierwszą linię
MarcusMan
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.08.2006
Skąd: Lublin

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


witam wszystkich serdecznie.
wypociłem skrypcik, który pobiera dane z formularza i przekazuje je do bazy, problem polega na tym, że wysyła jedynie pierwszego checkbox'a jakby reszta nie istniala.
Czytałem na forach na temat pętli foreach, while itd., i jakoś mi to nie idzie.
Checkboxy generowane są dynamicznie z bazy i mają zostać przekazane do następnej. Poniżej kod:
  1. <?php 
  2. require('db_connect2.php');
  3. if (!($mylink = mysql_connect($host, $uzytkownik_bazy, $haslo_bazy))) {
  4. echo "Cannot connect to database!";
  5. }
  6. if (!empty($_POST['dcennik_g']))
  7. {
  8. foreach($_POST['dcennik_g'] as $value){
  9.  
  10. while($row = each($_POST['dcennik_g'])){ $wiersz = explode("|", $value); }
  11. }
  12. echo "$wiersz[0] $wiersz[1] $wiersz[2]";
  13.  
  14. mysql_select_db("dodruku",$mylink);
  15. $query="insert into towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";
  16. mysql_query($query);
  17. }
  18.  
  19. ?>


Kiedy wyświetlam sobie zawartość tablicy przez:
  1. <?php
  2. echo '<pre>';
  3. print_r($_POST['dcennik_g']);
  4. echo '</pre>';
  5. ?>


to wszystko pokazuje poprawnie ale przekazuje do bazy tylko pierwszą linię, może ktoś z forumowiczów mógłby mi pomóc, gdzie zrobiłem błąd, przeglądałem manuala php i jakoś i tak mi to nie idzie, wiem że to lamerskie i pewnie coś juz było na ten temat ale nie moge tego znaleźć, z góry wielkie dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Nie wiem zbytnio o co Tobie chodzi z tymi checkboxami bo ale do bazy wrzucasz tylko raz inserta.

Cytat
echo "$wiersz[0] $wiersz[1] $wiersz[2]";

mysql_select_db("dodruku",$mylink);
$query="insert into towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";



Jeśli chcesz jakoś w pętli pobierać dane z formularza to też w pętli pobierając je wrzucaj je do bazy.

Łukasz
Go to the top of the page
+Quote Post
MarcusMan
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.08.2006
Skąd: Lublin

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


witam
dzieki za szybka reakcję, wiem, że trochę niejasno napisałem, chodzi mi o to (z tymi checkbox'ami) - tworzone są dynamicznie na podstawię danych pobranych z bazy (to jakoś już rozgryzłem), no i dalej trafiają do innej bazy - teraz tak, kiedy wybieram dane do wyświetlenia jako checkbox wszystko jest ok, przesyłam jes method="post" do następnego pliku (kod php z pliku u dołu) i wysyłam do bazy (dodałem sobie "echo" i header-location z opóźnieniem 5 sekundowym żeby pokazał mi co dodał), ale on dodaje tylko zawartość pierwszego checkbox'a a resztę pomija jakby nie istniała, jak pisałem wyżej kiedy użyjwam "print_r" aby zobaczyć co przekazuje przez "post" to zawartość "Array" jest OK (wszystkie wybrane checkbox'y) ale przez echo wyświetla tylko jeden. Wszedzie na fotum są tylko pętle dla SELECT to SELECT tamto, a ja nie chcę SELECT ja chcę INSERT to czy tamto - SELECT to banał, sam sobie napisałem SELECT to pikuś a mnie buldoga trza. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Twój pomysł super tylko jakoś nie mogę napisać tej pętli do wrzucania do bazki. Czy mogę wykorzystać do tego funkcję "while" jeśli tak to w jaki sposób bo próbowałem czegoś takiego (kod poniżej) ale nic z tego i tak dodaje tylko pierwszą linie.
  1. <?php
  2.  
  3. if (!($mylink = mysql_connect($host, $uzytkownik_bazy, $haslo_bazy))) {
  4. echo "Cannot connect to database!";
  5. }
  6. if (!empty($_POST['dcennik_g']))
  7. {
  8. foreach($_POST['dcennik_g'] as $value){
  9.  
  10. while($row = each($_POST['dcennik_g'])){ $wiersz = explode("|", $value); }
  11. }
  12. echo "$wiersz[0] $wiersz[1] $wiersz[2]";
  13.  
  14. mysql_select_db("dodruku",$mylink);
  15. $insert_data = "INSERT INTO towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";
  16. $do_insert = mysql_query($insert_data);
  17.  
  18. while ($wiersz = mysql_fetch_row($do_insert)) {
  19.  
  20. mysql_query($query);
  21. }
  22.  
  23. ?>


pozdrawiam
Jacek

Ten post edytował MarcusMan 29.08.2006, 07:23:58
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Spójrz na ten fragment kodu.
  1. <?php
  2. foreach($_POST['dcennik_g'] as $value){
  3.  
  4. while($row = each($_POST['dcennik_g'])){ $wiersz = explode("|", $value); }
  5. ?>


Po co uzywasz pętli while?

Wystarczy samo:
  1. <?php
  2. $wiersz = explode("|", $value);
  3. //i do bazy wstawiasz...
  4. $insert_data = "INSERT INTO towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";
  5. ?>
Go to the top of the page
+Quote Post
MarcusMan
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.08.2006
Skąd: Lublin

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


witam
@Cysiaczek, wszystko ślicznie i pięknie - rzeczywiście nie potrzebuję while w miejscy, które opisałeś jednak teraz dodaje mi do bazy tylko ostatnią linię (checkbox'a) - i jak to rozwiązać? Kod poniżej:
  1. <?php
  2.  
  3. if (!($mylink = mysql_connect($host, $uzytkownik_bazy, $haslo_bazy))) {
  4. echo "Cannot connect to database!";
  5. }
  6. if (!empty($_POST['dcennik_g']))
  7. {
  8. foreach($_POST['dcennik_g'] as $value){
  9.  
  10. $wiersz = explode("|", $value);
  11. }
  12. echo "$wiersz[0] $wiersz[1] $wiersz[2]";
  13.  
  14. mysql_select_db("dodruku",$mylink);
  15. $insert_data = "INSERT INTO towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";
  16. mysql_query($insert_data);
  17. }
  18. ?>
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




A może wstawisz to zapytanie do foreacha?

  1. <?php
  2. if (!($mylink = mysql_connect($host, $uzytkownik_bazy, $haslo_bazy))) {
  3. echo "Cannot connect to database!";
  4. }
  5. if (!empty($_POST['dcennik_g']))
  6. {
  7. mysql_select_db("dodruku",$mylink);
  8. foreach($_POST['dcennik_g'] as $value){
  9.  
  10. $wiersz = explode("|", $value);
  11. $insert_data = "INSERT INTO towar (producent,model,cena) values('$wiersz[0]', '$wiersz[1]', '$wiersz[2]')";
  12. mysql_query($insert_data);
  13. }
  14. echo "$wiersz[0] $wiersz[1] $wiersz[2]";
  15.  
  16.  
  17. }
  18. ?>
Go to the top of the page
+Quote Post
MarcusMan
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.08.2006
Skąd: Lublin

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


@Cysiaczek - MY MASTER - działa!!! (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) , niewyobrażalnie przeogromne dzięki. Pozdrawiam Jacek

Można zamknąć temat, dzieki wszystkim za pomoc. Pozdrawiam
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: 22.08.2025 - 12:34