Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dynamiczny formularz pobierający dane z bazy
Aui06
post 27.03.2014, 09:05:26
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Witam

Jestem nowa na forum, ale od pewnego czasu czytam zamieszczone na nim dyskusje.

Piszę na forum bo mam problem. Chce zbudować dynamiczny formularz pobierający dane z bazy MySQL z możliwością edycji.

Część informacji jest już obecna w bazie, a część trzeba dopisać. Dodatkowe pola mają być tworzone dynamicznie. Czyli dodaje do tablicy rekord z id pola, jego nazwę oraz czy pole jest tekstowe lub inne (ta funkcja działa bez zarzutu). Np. stworzyłam rekord "Promocja" z id "1" typ "checkbox"

Mój problem się zaczyna gdy chce dodać właściwość "Promocja" jako opcja wyboru do innej tabeli. I nie chodzi tu o powiązanie SQL, stworzyłam dodatkową tablicę na zapis ustawień zmiennych. Problemu nie ma gdy mam jedno dodatkowe pole ale gdy mam ich kilka że formularz nie przekazuje tylko wartość ostatniego pola.

Próbowałam rozwiązać to za pomocą zapisy do tablicy ale nie zadziałało to dobrze. Formularz albo nie przekazuje mi wartości pól albo źle je odbieram. Nie wiem w czym jest problem bo nie otrzymuje żadnych błędów PHP a do bazy się zapisują puste pola.

Strona dzieli się na 2 części plik PHP i plik TPL jako szablon.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post 27.03.2014, 09:07:46
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro czytasz zamieszczane na tym forum dyskusje, to powinnas wiedziec ze na forum wrozek nie ma i ze powinnas pokazac nam kod jaki masz i wskazac w nim problemowe linijki.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post 27.03.2014, 09:11:47
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Masz na myśli kilka pól o tej samej nazwie?
Wtedy:
  1. <input type="text" name="blabla[]"/>
  2. <input type="text" name="blabla[]"/>
  3. <input type="text" name="blabla[]"/>


--------------------
Go to the top of the page
+Quote Post
nospor
post 27.03.2014, 09:22:30
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@trublue nie podwazaj mojej teorii o wrozkach wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Aui06
post 27.03.2014, 09:37:30
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Fragment pliku tpl

  1. <form action="plug.php?e=listatowarow&s=dodajblog&ids={IDRS}" method="post">
  2. <table class="cells" width="100%">
  3.  
  4. <tr>
  5. <td>Treść komentarza</td><td><textarea name="text1" rows="15" cols="30" >{RTEXT1}</textarea>
  6. <input type="hidden" name="number" value="{RBNUM}">
  7. </td>
  8. </tr>
  9. <tr>
  10. <td>Treść komentarza</td><td><textarea name="text2" class="minimailer" rows="15" cols="30" >{RTEXT2}</textarea>
  11. <input type="hidden" name="number" value="{RBNUM}">
  12. </td>
  13. </tr>
  14. <tr>
  15. <td>Treść komentarza</td><td><textarea name="text3" class="editor" rows="15" cols="30" >{RTEXT3}</textarea>
  16. <input type="hidden" name="number" value="{RBNUM}">
  17. </td>
  18. </tr>
  19. <!-- BEGIN: AA -->
  20. {ITYPP}
  21. <!-- END: AA -->
  22. </table>
  23. <input type="hidden" name="yes" value="1">
  24. <input type="hidden" name="idrs" value="{IDRS}">
  25. {IDSTAT}
  26. <input type="submit" name="submit" class="coltop" value="Dodaj opis towaru">
  27.  
  28. </form>



Odczyt (nie działa bo tabela nietyle jest pusta co źle do niej zapisuje )

  1. $sqlll = sed_sql_query("SELECT * FROM Planer2_plus_sl_pola join planer2_plus_tw_pola ON planer2_plus_tw_pola.pp_Idpola = Planer2_plus_sl_pola.id_pola WHERE id_pola = '".$idpol[i]."'");
  2.  
  3. while ($row3 = sed_sql_fetcharray($sqlll)){
  4. if ($row3['Typ_pola']==0) {
  5. $ptypp .= "<tr><td>".$row3['Nazwa_pola']."</td><td> <input type='text' name='atyp[]' value='".$row3['pp_Wartosc']."'> <input type='hidden' name='idpol[]' value='".$row3['id_pola']."'></td></tr>";
  6.  
  7. }
  8. else{
  9. $ptypp .="<tr><td>".$row3['Nazwa_pola']."</td><td> <input type='checkbox' name='atyp[]' value='".$row3['pp_Wartosc']."' >
  10. <input type='hidden' name='idpol[]' value='".$row3['id_pola']."'></td></tr>";
  11. }
  12. $tidpola .= $row3['id_pola'];
  13.  
  14. }
  15. $t->parse('MAIN.DODBLOG.AA');


Zapis

  1. $idrs = sed_import('idrs', 'P', 'INT');
  2. $atyp = sed_import('atyp', 'P', 'INT');
  3. $idpol = sed_import('idpol', 'P', 'INT');
  4.  
  5. $sq5 = sed_sql_query("SELECT COUNT(*) FROM Planer2_plus_sl_pola");
  6. $ec = mysql_fetch_row($sq5);


Zapis to z nim mam problem
  1. for ($i = 0; $i < $ec; $i++) {
  2.  
  3.  
  4. $sql2a = sed_sql_query("SELECT COUNT(*) FROM Planer2_plus_sl_pola WHERE id_pola = '".$idpol[i]."'");
  5. $sec = mysql_fetch_row($sql2a );
  6. if ($sec[0] > 0){
  7. $sql = sed_sql_query("UPDATE planer2_plus_tw_pola SET (pp_IdTowarS = '".sed_sql_prep($idrs)."', pp_Idpola = '".sed_sql_prep($idpol[i])."', pp_Wartosc ='".sed_sql_prep($idpol[i])."'WHERE pt_idTowarS = '".sed_sql_prep($idrs)."'");
  8.  
  9. }
  10. else {
  11. $sql = sed_sql_query("INSERT INTO planer2_plus_tw_pola (pp_IdTowarS, pp_Idpola, pp_Wartosc) VALUES
  12. ('".$idrs."', '".$idpol[i]."', '".$atyp[i]."')"); } }
  13.  
  14.  
  15. }


Ten post edytował Aui06 28.03.2014, 09:30:51
Go to the top of the page
+Quote Post
trueblue
post 27.03.2014, 09:39:58
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


To co pierwsze:
  1. $idpol[$i]

nie:
  1. $idpol[i]

inne zmienne tablicowe również do poprawki.

Ten post edytował trueblue 27.03.2014, 09:40:23


--------------------
Go to the top of the page
+Quote Post
Aui06
post 27.03.2014, 15:57:49
Post #7





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Fakt miałeś racje, "i" było zmienną. Dziękuję za zwrócenie uwagi.

Niestety zmiana i na $i nic mi nie dała. W dalszym ciągu mam problem, tyle że chyba jestem bliżej.

Wartość wpisywana do formularza albo nie jest zapisywana w tablicy albo jest nie przekazywana. To co napisałam zapisuje do bazy SQL ale z pustymi wartościami (tworzy rekord ale w miejscu gdzie miała być zmienna jest 0 albo nic). Mam też problem z pętlą "for"

  1. $sq5 = sed_sql_query("SELECT COUNT(*) FROM Planer2_plus_sl_pola");
  2. $ec = mysql_fetch_row($sq5);
  3.  
  4. for ($i = 0; $i <= $ec; $i++) {
  5.  
  6.  
  7. $sql2a = sed_sql_query("SELECT COUNT(*) FROM Planer2_plus_sl_pola JOIN planer2_plus_tw_pola WHERE id_pola = '".$idpol[$i]."' AND pp_IdTowarS='".$idrs."'");
  8. $sec = mysql_fetch_row($sql2a );
  9. if ($sec[0] > 0){
  10. $sql = sed_sql_query("UPDATE planer2_plus_tw_pola SET (pp_IdTowarS = '".sed_sql_prep($idrs)."', pp_Idpola = '".sed_sql_prep($idpol[$i])."', pp_Wartosc ='".sed_sql_prep($idpol[$i])."'WHERE pt_idTowarS = '".sed_sql_prep($idrs)."'");
  11.  
  12. }
  13. if ($sec[0] <= 0) {
  14. $sql = sed_sql_query("INSERT INTO planer2_plus_tw_pola (pp_IdTowarS, pp_Idpola, pp_Wartosc) VALUES
  15. ('".$idrs."', '".$idpol[$i]."', '".$atyp[$i]."')"); } }
  16.  
  17.  
  18. }



Pętla ma ograniczenie $ec (SELECT COUNT(*) FROM Planer2_plus_sl_pola) obecnie to jest 7. Tymczasem wykonuje się w nieskończoność nie przestrzegając ograniczenia (wiem że tablica w PHP jest o "0" i jedno pole na logikę powinno być puste bo w tablicy nie ma 7).

Ten post edytował Aui06 28.03.2014, 09:29:31
Go to the top of the page
+Quote Post
trueblue
post 27.03.2014, 19:08:40
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Ale w $ec nie masz wartości 7.
http://us2.php.net/manual/pl/function.mysql-fetch-row.php


--------------------
Go to the top of the page
+Quote Post
Aui06
post 28.03.2014, 09:04:12
Post #9





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Tak tu był błąd przeoczyłam to.

Wciąż jednak nie wiem jak przekazać wartość z dynamicznie tworzonych pól do bazy.

Cytat
Wartość wpisywana do formularza albo nie jest zapisywana w tablicy albo jest nie przekazywana. To co napisałam zapisuje do bazy SQL ale z pustymi wartościami (tworzy rekord ale w miejscu gdzie miała być zmienna jest 0 albo nic).


Próbowałam ją przekazać tak jak inne pola, ale to nie działa. Chwilowo odbieram w ten sposób:

  1. $idrs = sed_import('idrs', 'P', 'INT');
  2. $atyp = sed_import('atyp', 'P', 'INT');
  3. $idpol = sed_import('idpol', 'P', 'INT');


<input type='checkbox' name='atyp[]' value='' >

Czy ktoś z was wie



Ten post edytował Aui06 28.03.2014, 09:28:24
Go to the top of the page
+Quote Post
nospor
post 28.03.2014, 09:13:39
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zacznij wkoncu uzywac poprawnego bbcode. Do kodu PHP uzywa sie BBCODE PHP

atyp to tablica, a ty to rzutujesz na INT, czyli na liczbe. No to nie ma prawa dobrze dzialac smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Aui06
post 28.03.2014, 09:54:20
Post #11





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Już zmieniłam na PHP.

Dobrze INT nie mogę używać, to jakiego typu mam użyć?
Go to the top of the page
+Quote Post
nospor
post 28.03.2014, 09:56:41
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie wiem jak wyglada funkcja sed_import(). Najlepiej ją olej i zrob tak:

  1. $atyp = $_POST['atyp'];
  2. print_r($atyp); //sprawdzenie czy dobrze odebralo dano


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Aui06
post 28.03.2014, 10:17:23
Post #13





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 27.03.2014

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


Ok, działa.

Dziękuję. Dopiero się uczę PHP i jeszcze mam z nim spore kłopoty.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:48