[SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza |
[SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza |
9.02.2013, 09:05:06
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Pierwsze koty za płoty. Drugi problem jaki mam to dodanie kilku wierszy do bazy damych mysql poprzez wypełnienia formularza post.
Wyświetlić 4 formularzepotrafie ale chyba źle formułuje zapytanie do bazy danych. Pomożcie mistrzowie Zamieszczam kod jaki mam do tej pory :
Podzieliłem cały kod odpowiednimi znacznikami ale nie wiem czy jest to czytelne....? A może w inny sposób należy to zrobić posidam tabele producenci która ma kolumny id, nazwa,adres www, adres, telefon, uwagi Przekazanie tych danych poprzez tablice post . Następnie jak sformułowac zapytanie do bazy aby dodac np 4 wiersze jednoścześnie Ten post edytował wojtek1988 8.02.2013, 23:42:02 |
|
|
9.02.2013, 11:12:41
Post
#2
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Każde pole Twojego formularza ma taką samą nazwę...nie do końca rozumiem jak chcesz to zrobić.
Masz tablicę wartości z POST-a, ale nijak jej nie dzielisz na poszczególnych producentów. Powinieneś mieć 4 formularze, ale niech Twoje pola nazywają się różnie, np: I wtedy odbierając je w PHP odbierasz po kolei kolejne indeksy tablic i rozdzielasz je przecinkami (to, co zrobiłeś powyżej...jak ma zadziałać? masz 24 pola, a wpisujesz tylko 6). Czyli np.:
Ten post edytował Michasko 9.02.2013, 16:21:18 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 13:27:56
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Wyswietlam 4 wiersze formularza i dodałem składnie mysql($zapytanie) ale nie jest dobre .
Wyświetla mi komuniktat Dodanie wyników nie powiodło sie ! Zobaczcie
Ten post edytował wojtek1988 9.02.2013, 13:44:06 |
|
|
9.02.2013, 13:46:49
Post
#4
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Linia 17: masz niepotrzebny cudzysłów na końcu.
Na przyszłość dodaj mysql_error(): Ten post edytował Michasko 9.02.2013, 13:47:40 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 15:16:15
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Zastosowałem się do twoich wskazówek ale teraz mam komunikat :
"Dodawanie wyników nie powiodło się! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO producenci VALUES' at line 1" Co teraz? |
|
|
9.02.2013, 16:17:45
Post
#6
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Widocznie nadal masz błąd w zapytaniu. Jak ono teraz wygląda?
edit: Hej, hej, chwila chwila. A gdzie masz dodawanie przecinków pomiędzy kolejnymi rekordami do wpisania? W tej chwili Twoje zapytanie wygląda tak:
pomiędzy nawiasami musisz mieć przecinki. Czemu to usunąłeś? :| Ten post edytował Michasko 9.02.2013, 16:21:57 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 16:41:29
Post
#7
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Wygląda to tak :
W miejscu numer wpisac id_produkt for($i = 0; $i < count($_POST['numer']); $i++){ prawda? Gdy tak zrobie wyświetla mi bląd: Dodawanie wyników nie powiodło się! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO producenci VALUES ("9", "1111", "hgfhgbg", "hjbgjhgbjhgb" , "jhfbvf' at line 1 czyli już z czytuje dane podane w pierwszym wierszu ale ...dalej coś nie tak Ten post edytował wojtek1988 9.02.2013, 16:59:07 |
|
|
9.02.2013, 17:07:13
Post
#8
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Cytat W miejscu numer wpisac id_produkt for($i = 0; $i < count($_POST['numer']); $i++){ prawda? id_producent. Prawda.
Ten post edytował Michasko 9.02.2013, 17:07:40 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 17:22:41
Post
#9
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
POkaże cały kod.
Najpierw formularz:
Następnie reszte:
Przy próbie dodania producentów wyskakuje mi komunikat: Dodawanie wyników nie powiodło się! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO producenci VALUES ("8", "nazwa1", "", "" , "" , "" ), ("", "nazwa2"' at line 1 |
|
|
9.02.2013, 17:27:33
Post
#10
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Linia 7 - po co tam ten cudzysłów...?
-------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 17:31:57
Post
#11
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 6 Dołączył: 20.12.2010 Ostrzeżenie: (0%) |
Mogę wiedzieć czemu tak strasznie komplikujecie sprawę? Po co Wam te []? Po co w for? Nie lepiej użyć mysql_query z LIMIT 4 oraz while?
plik.php
Odczyt
Ten post edytował teez 9.02.2013, 17:44:03 |
|
|
9.02.2013, 17:35:07
Post
#12
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Dla mnie Michasko jest mistrzem !!!
Ale z chęcia posłucham innej rady teeza |
|
|
9.02.2013, 17:37:11
Post
#13
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 6 Dołączył: 20.12.2010 Ostrzeżenie: (0%) |
Michasko lepiej zna sytuację, sam dopiero zaczynam powazniej się w to bawić, ale skoro ty również zaczynasz to po co masz zawracać sobie głowę od początku takim czymś, skoro można prościej z identycznym efektem. Jeszcze przyjdzie czas na resztę.
Ten post edytował teez 9.02.2013, 17:37:42 |
|
|
9.02.2013, 17:40:21
Post
#14
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
@teez, źle przeczytałeś chyba. On chce dodać 4 rekordy na raz, a nie odczytać. LIMIT na nic się tutaj nie zda
Ten post edytował Michasko 9.02.2013, 17:41:00 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 17:43:26
Post
#15
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 6 Dołączył: 20.12.2010 Ostrzeżenie: (0%) |
No to źle najwidoczniej odczytałem, zwracam honor.
|
|
|
9.02.2013, 18:08:02
Post
#16
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Dodanie 4 rekordów działa ale nie waliduje nie podania nazwy, któa jest obowiązkowa itp ..Zły układ mam chyba..
|
|
|
9.02.2013, 18:54:11
Post
#17
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Zwróć uwagę, że kilka pól u Ciebie ma atrybut name równy "nazwa[]". Oznacza to, że po przesłaniu do PHP Twoja zmienna $_POST['nazwa'] (zobacz 3. linijke ostatniego kodu) będzie tablicą, zatem pisząc:
sprawdzasz, czy tablica jest pusta, a nie czy poszczególne pola formularza są puste. Walidację powinieneś przeprowadzać w pętli, w której "sklejasz" zapytanie. Np. w ten sposób:
Ten post edytował Michasko 9.02.2013, 18:56:52 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 19:14:17
Post
#18
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
A w moim przypadku jak sformułować kod aby nie podanie nazwy wywałało komunikat ze nie uzupełniona jest nazwa i id_produkt nie moze byc powtarzany?
Napisałem tak ale nie działa:
|
|
|
9.02.2013, 19:21:23
Post
#19
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Chłopie, czytaj uważnie:) Walidację masz przeprowadzać W PĘTLI. Nie przed nią.
Jeśli chodzi o ID - jeśli chcesz je koniecznie nadawać ręcznie (jak to robisz teraz), to musisz je najpierw wyciągnąć z bazy, a potem w każdym obrocie pętli sprawdzać, czy nie podałeś jakiegoś, które się powtarza - mało wydajne. Najlepiej byłoby, gdyby pole `id_producenta` w Twojej bazie danych miało właściwość AUTO_INCREMENT. Wtedy nie musisz podawać ID ręcznie, a zostanie ono przypisane automatycznie przez system bazy danych. Ten post edytował Michasko 9.02.2013, 19:24:56 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
9.02.2013, 20:02:13
Post
#20
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
@Michasko w 4 linijce usunąłem znak ! ponieważ odwronie działało WIelkie dzięki mam nadzieję, zę jutro też bęzdiesz na forum
Na dziś już koniec ale jutro będe dalej walczył.Bedziesz jutro? |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 03:22 |