![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
Witam
Mam problem z dodawaniem z edycją tabeli w bazie danych. Dane dodawane są za pomocą formularza. Przy pierwszym wprowadzeniu problemu nie ma. Jednak kiedy chce edytować zawartość formularza edytowany jest jedynie 1-wszy rekord, który następnie dodaje się kilkakrotnie do bazy. Co ciekawe przy kolejnym zapisie znika zawartość prawidłowo zapisanych pól mimo iż nie ma w kodzie Delate. Formularz przekazuje zawartość pól jednak się one nie zapisują. Jest tak jakby poniższy kod zapętlał się na 1 rekordzie i nie potrafił dodać innych.
Czy ktoś wie co zrobić by edytował rekordy zgodnie z formularzem, a nie dodawał w cały czas pierwszy. To zapewne banalny błąd, ale nie widzę gzie go popełniam. |
|
|
|
Post
#2
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Pokaż kod formularza. Musisz działać na tablicy, tzn, formularz musi być tak zbudowany, by umożliwiał pracę na tablicy.
|
|
|
|
Post
#3
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
var_dump($idpol);
var_dump($sec); co wyswietlają? poza tym nie: for ($i = 0; $i <= $sk; $i++) { a: for ($i = 0; $i < $sk; $i++) { |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
Formularz wygląda tak
|
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Z kodu co pokazalas wyglada, ze pola idpol nie leżą w formularzu....
Przypominam sie o moim wczesniejszym poscie. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
A czy pole idpol nie jest w formularzu w linijce 7, 12?
name='idpol[]' <input name='idpol[]' value='".$row3['id_pola']."'> Ten post edytował Aui06 1.04.2014, 12:56:05 |
|
|
|
Post
#7
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
A juz widze.... ty to mialas w zmiennej.... ok.
Tak wiec poraz kolejny prosze o odpowiedz na moj pierwszy post w tym temacie.
Powód edycji: [nospor]:
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
$idpol - przekazuje id pola z którego korzystam wykorzystuje go do łączenia 2 tablic. (w formularzu dla kontroli nie jest ukryte)
$sec - mam obecnie 7 pól ale w przyszłości może ich być 11 chciałam by przy zapisie sprawdzał czy pole (lub jego wartość) jest już dodana czy jeszcze nie. Ten post edytował Aui06 1.04.2014, 13:07:17 |
|
|
|
Post
#9
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Podalem ci wyraznie co masz zrobic. Podalem ci kod php. Prosze PORAZ KOLEJNY, bys podala co on zwraca
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
Nie bardzo wiem co znaczy var_dump($idpol); var_dump($sec);?
Ale jak echo var_dump($idpol); array(7) { [0]=> string(1) "1" [1]=> string(1) "3" [2]=> string(1) "5" [3]=> string(1) "7" [4]=> string(2) "41" [5]=> string(2) "37" [6]=> string(2) "44" } echo var_dump($sec); array(1) { [0]=> string(1) "0" } lub array(1) { [0]=> string(1) "0" } array(1) { [0]=> string(1) "0" } array(1) { [0]=> string(1) "0" } array(1) { [0]=> string(1) "0" } array(1) { [0]=> string(1) "0" } array(1) { [0]=> string(1) "0" } zaraz pod $ec = mysql_fetch_row($sq5); Ten post edytował Aui06 1.04.2014, 13:27:55 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
bez echo na drugi raz bo jest bez sensu, dostałeś przecież cala linie jak ma wygl, ale nie ważne, to na przyszłość (IMG:style_emoticons/default/wink.gif)
$ids = $khid; pewnie w tym $khid masz coś na sztywno bo wgl tego nie widzę w tym fragmencie (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#12
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Dziekuje. Wlasnie to mialas zrobic.... ino ze bez echo. Napisalem wyraznie samo var_dump. var_dump wyswietla zawartosc zmiennej....
Powinnnas miec wyswietlone 7 razy $sec, wyswietla ci sie tylko raz. Tak masz, czy skrocilas wynik? Poza tym widac wyraznie, ze sec ma wartosc 0, wiec nic dziwnego ze dodaje a nie robi update. Zrob jeszcze var_dump($ids); oraz var_dump($sk); |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
$ids = $khid to ma być na sztywno.
Mam 3 tablice. 1 z tekstem 2 z opcjami do tekstu 3 dostępne opcje $khid jest globalne i odnosi się do do 1 tablicy z tekstem. var_dump($ids); int(72) int(72) int(72) int(72) int(72) int(72) var_dump($sk); int(6) int(6) int(6) int(6) int(6) int(6) |
|
|
|
Post
#14
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Skoro $ids jest poprawne
to to zapytanie: $sql2a = sed_sql_query("SELECT COUNT(*) FROM planer2_plus_tw_pola WHERE pp_IdTowarS = '".$ids."' AND pp_Idpola = '".$idpol[$i]."'"); z jakiegos powodu zwraca ci 0, wiec jak juz mowilem dlatego ci robi INSERT a nie UPDATE. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
nie może być na sztywno bo masz:
WHERE pp_idTowarS = '".$ids."'"); (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
To jest dobrze.
Jak pisałam mam 3 tablice. A ta z którą mam problem ma 1 wartość stałą jest nią "pp_idTowarS". pp_idTowarS -> id tekstu do którego dodaje pole Gdyby było zmienne to bym nie mogła porwanie wyświetlić. Zmienne jedynie są pp_Idpola = '".$idpol[$i]."' i pp_Wartosc ='".$atyp[$i]."' czyli id po którym łącze z rodzajem pola i wartość pola. nospor ma racje z jakiegoś powodu nie działa $sql2a = sed_sql_query("SELECT COUNT(*) FROM planer2_plus_tw_pola WHERE pp_IdTowarS = '".$ids."' AND pp_Idpola = '".$idpol[$i]."'"); |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
dobrze to od początku co przechowujesz w tabeli Planer2_plus_sl_pola, to po pierwsze, bo z niej wyliczasz te ilość obróceń pętli a potem dodajesz do innej tabeli to.. pod drugie jak zmieniasz $idpol[$i] dla 1 id to w tym polu masz wartość ostatnią wiec warunek nigdy się nie spełni dlatego nie działa, dlatego mówię ze nie może być na sztywno id bo musisz do każdego rekordu dodać te wartość z pod indexu, nie da się dodać do 1 wszystkich w taki sposób (IMG:style_emoticons/default/smile.gif)
Ten post edytował com 1.04.2014, 14:06:21 |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
To jak to ma wyglądać?
Bo powinło działać: Na początku tablica jest pusta. I wszystko dobrze się dodaje jak uzupełnię formularz i wyśle. Pętla for trzyma by wykonało się określoną ilość razy. Następnie sprawdzany jest warunek $sql2a = sed_sql_query("SELECT COUNT(*) FROM planer2_plus_tw_pola WHERE pp_IdTowarS = '".$ids."' AND pp_Idpola = '".$idpol[$i]."'"); gdzie $i wraz z obrotami pętli ma a raczej powinno przyjmować wartości 1, 2,3... a pp_IdTowarS = '".$ids."' powinno zawierać określony numer artykułu. Jeśli nie ma w bazie rekordu spełniającego warunek dodaje nowe pole. |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
tak ja wiem do czego służy for, chodziło o to że zliczasz w innej tabeli a dodajesz w innej potem (IMG:style_emoticons/default/smile.gif)
Planer2_plus_sl_pola => planer2_plus_tw_pola , tak wszytko sie zgadza ale krotka pp_Idpola zawiera tylko jedna wartość wiec nie będzie tam po kolei 1, 2, 3 tylko po wykonaniu zapytania zapisze Ci od razu 3 wiec wtedy poco wgl pętla, skoro jej efektu nawet nie zobaczysz, dlatego sugerowałbym dodać do tabeli pole np id auto_increment i wtedy możesz mieć parę rekordów o tym samym ids, bo tak baza nie wie o co ja pytasz bo dla niej rekord spełniający warunek WHERE pp_IdTowarS = '".$ids."' AND pp_Idpola = '".$idpol[$i]."'" jest niejednoznaczny (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.03.2014 Ostrzeżenie: (0%)
|
Ja się chyba z tobą nie mogę dobrze zrozumieć:
Planer2_plus_sl_pola to tabela z nazwami pól jest ich 7 więc ograniczenie dodania ilości pól to 7. Tabela planer2_plus_tw_pola składa się z 4 kolumn (id (auto_increment), pp_Idpola (klucz obcy do tabeli Planer2_plus_sl_pola), pp_idTowarS (klucz obcy do tablicy z tekstami), pp_Wartosc (wartość pola) ). Chciałam użyć $i żeby po kolei przeglądać tablicę. Wszytko praktycznie miało się opierać o klucze obce nie id planer2_plus_tw_pola tak naprawdę nie jest mi potrzebne. A i jestem kiebska z baz ale jak masz pole auto_increment to nie pozwala ci założyć drugiego o tym samym numerze. |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 20:18 |