Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql ] Dodawanie danych do bazy seriami ?
Forum PHP.pl > Forum > Przedszkole
pioch
Witam wszystkich

Nurtuje mnie pewnien problem....

Aby ułatwić sobie pracę smile.gif chciałbym zrobić formularz który dodaje rekordy do bazy seriami...
juz tłumacze jak to by miało wygladać.
Najprościej to skleić ze sobą powiedzmy 3 formularze smile.gif i po wciśnięciu buttona wyślij aby z tych trzech formularzy dane zostały zapisane do bazy...

Próbowałem zrobić ale coś mi nie wychodzi...

Pytanie moje brzmi , czy jest mozliwość zrobienia takiego "sklejonego formularza " , jeśli tak to jak póżniej dodac dane w postaci rekordów do bazy danych...
nospor
Czy chodzi ci o formularz wielostronicowy?
Walisz jeden formularz, koles go wypelnia, klika dalej. W tym momencie leci submit do serwera, zapamietujesz dane w sesji, wyswietlasz drugi form. i teraz sytuacja sie powtarza i tak tyle razy ile ma byc formularzy/stron. Na ostanim formularzu masz przycisk "zapisz", leci submit do serwera, zbierasz wszystkie dane z sesji i zapisujesz do bazy. Proste smile.gif
A zapisujesz normalnie jak zawsze.

Oto chodzilo?
pioch
ja sobie to inaczej wyobrażałem smile.gif)

ze odrazu wyświetla mi sie w jeden linii jeden formularz smile.gif

dzieki za odpowiedz smile.gif)

więc doczytam o formularzu wielostronicowym smile.gif i jak będe miał jeszcze jakieś nurtujące pytania to odpisze

jeszcze raz dzięki dobry człowieku smile.gif)
nospor
mozna tez od razu walnac jeden form, tylko podzielic go na kawalki i ukrywac to co w danej chwili nie jest potrzebne. Zrobic to na zasadzie zakladek, ze klikajac w dana zakladke pojawia sie dana czesc forma, a wciskajac zapisz wysyla sie caly. To rizwiązanie ma taką zalete, ze kolesiowi strona sie nie bedzie przeladowywala przy kazdym przechodzeniu "dalej". No i oczywiscie tu juz trzeba zaprząc js
pioch
  1. INSERT INTO sklady VALUES (119, 318, 3, 12, '21', 0, 90, 90, 0, 0, 'P');
  2. INSERT INTO sklady VALUES (120, 319, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  3. INSERT INTO sklady VALUES (121, 320, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  4. INSERT INTO sklady VALUES (122, 321, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  5. INSERT INTO sklady VALUES (123, 322, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  6. INSERT INTO sklady VALUES (124, 323, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  7. INSERT INTO sklady VALUES (125, 324, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  8. INSERT INTO sklady VALUES (126, 325, 3, 12, '4', 0, 69, 69, 0, 1, 'P');
  9. INSERT INTO sklady VALUES (127, 326, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  10. INSERT INTO sklady VALUES (128, 327, 3, 12, '14', 0, 90, 90, 0, 0, 'P');
  11. INSERT INTO sklady VALUES (129, 328, 3, 12, '10', 0, 90, 90, 0, 0, 'P');
  12. INSERT INTO sklady VALUES (130, 329, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  13. INSERT INTO sklady VALUES (131, 330, 3, 12, '15', 69, 90, 21, 0, 0, 'Z');
  14. INSERT INTO sklady VALUES (132, 331, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  15. INSERT INTO sklady VALUES (133, 332, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  16. INSERT INTO sklady VALUES (134, 333, 3, 12, '9', 76, 90, 14, 0, 0, 'Z');
  17. INSERT INTO sklady VALUES (135, 334, 3, 12, '6', 0, 90, 90, 0, 0, 'P');
  18. INSERT INTO sklady VALUES (136, 335, 3, 12, '16', 0, 90, 90, 0, 0, 'P');
  19. INSERT INTO sklady VALUES (137, 336, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  20. INSERT INTO sklady VALUES (138, 337, 3, 12, '8', 0, 90, 90, 0, 0, 'P');
  21. INSERT INTO sklady VALUES (139, 338, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  22. INSERT INTO sklady VALUES (140, 339, 3, 12, '7', 83, 90, 7, 0, 0, 'Z');
  23. INSERT INTO sklady VALUES (141, 340, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  24. INSERT INTO sklady VALUES (142, 341, 3, 12, '17', 0, 76, 76, 0, 0, 'P');
  25. INSERT INTO sklady VALUES (143, 342, 3, 12, '24', 0, 83, 83, 0, 0, 'P');
  26. INSERT INTO sklady VALUES (144, 343, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  27. INSERT INTO sklady VALUES (145, 344, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  28. INSERT INTO sklady VALUES (146, 345, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  29. INSERT INTO sklady VALUES (147, 346, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  30. INSERT INTO sklady VALUES (148, 347, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  31. INSERT INTO sklady VALUES (149, 348, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  32. INSERT INTO sklady VALUES (150, 349, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  33. INSERT INTO sklady VALUES (151, 350, 3, 12, '13', 0, 90, 90, 0, 1, 'P');
  34. INSERT INTO sklady VALUES (152, 351, 3, 12, '-', 0, 0, 0, 0, 0, 'R');
  35. INSERT INTO sklady VALUES (153, 476, 3, 12, '24', 0, 83, 83, 0, 0, 'P');



takie rekordy chciałbym dodac odrazu do bazy, po wciśnieciu buttona wyślij....
z tym ze 3 pierwsze będą stałe ( czyli id, idpilkarza, idklubu ) a nastepne zeby można wprowadzić ....

i stonnicowy formularz odpada....
sebik
Nie rozumiem do końca o co Ci chodzi. Czy te wszystkie dane mają być wprowadzanie z palca na formularzu? Jesli tak to mozesz w formularzu w petli wyswietlac <input>. Przed tym możesz wprowadzic pytanie o liczbę pozycji do wprowadzenia. Jesli tworzysz tablice inputow w petli nazywaj je np. tab[$i], w ten sposob przekazesz do wywolanego skryptu tablice $tab.
pioch
sebik

prosze możesz mi napisać przykład powiedzmy dla 3 pierwszych rekordów jak by to wyglądało ....


z góry dziękuje


rozwiazanie przez input jest oki smile.gif)
sebik
napisz jeszcze raz dokladnie o co chodzi, jesli dobrze rozumiem chcesz miec formularz z tabela pól?questionmark.gif kady wiersz ma byc zapisany jako oddzielny rekord w tabeli? od czego zalezy ilosc wierszy?
pioch
Każdy wiersz ma byc zapisany jako oddzielny rekord w tabeli

czyli aby zobarazować


[...id....] [....idpilkarza....] [...idmeczu...]
[...id....] [....idpilkarza....] [...idmeczu...]
[...id....] [....idpilkarza....] [...idmeczu...]
[...id....] [....idpilkarza....] [...idmeczu...]
[...id....] [....idpilkarza....] [...idmeczu...]
[...id....] [....idpilkarza....] [...idmeczu...]
----------[submit]


i teraz tak po wpisaniu , wypełnienia tego formularza i wcisnieciu buttona wyslij aby do bazy dodalo

INSERT INTO sklady VALUES (1, 318, 3);
INSERT INTO sklady VALUES (2, 319, 3);
INSERT INTO sklady VALUES (3, 320, 3);
INSERT INTO sklady VALUES (4, 321, 3);
INSERT INTO sklady VALUES (5, 322, 3);
sebik
strzelam z palca wiec sorki za literowki:

plik z formularzem:
  1. <?php
  2. $ile_wierszy=5; //wklepuje na sztywno, ale mozesz to np. pobrac z formularza
  3.  
  4. echo '<form action="zapis.php" method="post">';
  5. for($i=0;$i<$ile_wierszy;$i++) {
  6.  echo '<input type="text" name=id['.$i.'] />';
  7.  echo '<input type="text" name=id_pilkarza['.$i.'] />';
  8.  echo '<input type="text" name=id_meczu['.$i.'] />';
  9.  echo '<br />';
  10. }
  11. echo '<input type="submit" value="wyslij" />';
  12. echo '</form>';
  13. ?>


plik zapis.php:

  1. <?php
  2. $id=$_POST['id'];
  3. $id_pilkarza=$_POST['id_pilkarza'];
  4. $id_meczu=$_POST['id_meczu'];
  5.  
  6. for ($i=0;$i<count($id);$i++) 
  7.  mysql_query("INSERT INTO sklady VALUES ('".$id[$i]."','".$id_pilkarza[$i]."','".$id_meczu[$i]."'));
  8. ?>
pioch
dalej jest problem.....

po wypełnieniu wszytskich pól, w bazie dostaje tylko JEDEN REKORD 0,0,0 ?

coś schrzaniłem ....?
sebik
wyswietl count($id) zeby zoabczyc czy nie jest puste
pioch
  1. <?php
  2.  
  3. $id=$_POST['id'];
  4. $id_pilkarza=$_POST['id_pilkarza'];
  5. $id_meczu=$_POST['id_meczu'];
  6.  
  7. for ($i=0;$i<count($id);$i++) 
  8.  
  9. $baza = mysql_connect('localhost', 'root', 'krasnal');
  10. if ($baza) {
  11. $wynik = mysql_select_db('test');
  12. $wynik = mysql_query("INSERT INTO sklady VALUES ('".$id[$i]."','".$id_pilkarza[$i]."','".$id_meczu[$i]."')");
  13.  
  14.  
  15. if ($wynik) echo "<br>Rekord został poprawnie dodany ";
  16. else echo "<br>Rekord nie został dodany: ".mysql_error();
  17. mysql_close($baza);
  18. }
  19. ?>

plik zapis.php

po wysłaniu formularz otrzymuje Rekord został poprawnie dodany.....

ale otrzymuje w bazie tylko same zera :/

ps. wstyd sie przyznać ale nie wiem jak sprawdzić count($id)
maryaan
dopierow w sasiednim temacie bylo wyjasnione zeby sobie zrzucac zawartosc danych (obojetnie czy echo'em czy var_dump()'em czy czym innym) wtedy widzisz czy przekazales prawidlowe dane czy tez zginely gdzies po drodze
pioch
więc dodałem na końcu

  1. <?php
  2. var_dump($wynik);
  3. ?>


i zwróciło mi bool(true) co oznacz ze zakończyło się sukcesem , a jednak w bazie

nie dodaje pięciu rekordów , i jeszcze pole id_pilkarza, id_meczu = 0 , niezaleznie co wpisze
maryaan
ale nie chodzi o wynik zapytania tylko o zmienne, wyswietl tresc zapytania jakie idzie do bazy i wartosci zmiennych ktore sa przekazywane postem do skryptu,




nie jestem pewien czy w ten sposob da sie wysylac dane tablicowe
sebik
troche nie tak napisales ten skrypt, ja pominalem w skrypcie {} bo w petli for uzylem tylko jedna komende, powinno byc tak:

  1. <?php
  2. $baza=mysql_connect('localhost', 'root', 'krasnal') 
  3. if ($baza) {
  4. mysql_select_db('test') or die ("nie udalo sie polaczyc");
  5.  
  6.  
  7. $id=$_POST['id'];
  8. $id_pilkarza=$_POST['id_pilkarza'];
  9. $id_meczu=$_POST['id_meczu'];
  10.  
  11. for ($i=0;$i<count($id);$i++) {
  12. $wynik = mysql_query("INSERT INTO sklady VALUES ('".$id[$i]."','".$id_pilkarza[$i]."','".$id_meczu[i]."')");
  13.  
  14.  
  15. if ($wynik) echo "<br>Rekord został poprawnie dodany ";
  16. else echo "<br>Rekord nie został dodany: ".mysql_error();  
  17.  }
  18. mysql_close($baza); 
  19.  }
  20. ?>



nie dodales klamr w petli for dlatego skrypt wykonywal jedno zapytanie, poza tym mysql_connect i select_db nie powinno byc w petli
aha i dopisz cudzyslowy w formularzu przy name (name="...")
pioch
dziekuje

poprawiłem wedłud instrukcji...

ale nadal jest problem


formularz wypełniam tak

1,1,1
2,2,2
3,3,3
4,4,4
5,5,5


a w bazie danych otrzymuje

5, 5, 0
4, 4, 0
3, 3, 0
2, 2, 0
1, 1, 0


dlaczego nie dodaje do bazy tak samo jak w formularzu...

dodam ze w bazie mam pola ustawione na INT
sebik
bo strzelilem literowke a ty przepisales smile.gif (w zapytaniu powinno byc $i a nie i):

  1. <?php
  2. $wynik = mysql_query("INSERT INTO sklady VALUES ('".$id[$i]."','".$id_pilkarza[$i]."','".$id_meczu[$i]."')");
  3. ?>


komunikat o powodzeniu powinines wyrzucic na zewnatrz petli zeby ci nie wyswietlal po 5 razy
a formularzu wstaw tabele zeby wizualnie to jakos wygladalo, to sa same podstawy, powinienes poczytac o php i formularzach
pozdrawiam
pioch
sebik wielkie dzieki smile.gif piwko dla ciebie guitar.gif
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.