Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] wysyła tylko pierwszą linię
Forum PHP.pl > Forum > Przedszkole
MarcusMan
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.
kossa
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
MarcusMan
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. 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
Cysiaczek
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. ?>
MarcusMan
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. ?>
Cysiaczek
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. ?>
MarcusMan
@Cysiaczek - MY MASTER - działa!!! biggrin.gif, niewyobrażalnie przeogromne dzięki. Pozdrawiam Jacek

Można zamknąć temat, dzieki wszystkim za pomoc. Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.