Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL][JavaScript] Problem z dodawaniem radio z dużą ilością list rozwijanych do bazy danych
Forum PHP.pl > Forum > Przedszkole
sinke
Witam,
Mam problem z dodawaniem do bazy danych, danych z radio i select'ów.

Kawałek kodu, gdzie znajduje się radio z select'ami:
  1. <p>
  2. Format ulotki:<br />
  3.  
  4.  
  5. <input type="radio" name="format" value="A3"> A3 <br />
  6. <select name="adresA3.1" id="adresA3.1">
  7. <?php include('uploads/adresy_inc.php'); ?>
  8. </select>
  9. <br>
  10. <input type="radio" name="format" value="A4"> A4 <br />
  11. <select name="adresA4.1" id="adresA4.1">
  12. <?php include('uploads/adresy_inc.php'); ?>
  13. </select>
  14. <select name="adresA4.2" id="adresA4.2">
  15. <?php include('uploads/adresy_inc.php'); ?>
  16. </select>
  17. <br>
  18. <input type="radio" name="format" value="A5"> A5 <br />
  19. <select name="adresA5.1" id="adresA5.1">
  20. <?php include('uploads/adresy_inc.php'); ?>
  21. </select>
  22. <select name="adresA5.2" id="adresA5.2">
  23. <?php include('uploads/adresy_inc.php'); ?>
  24. </select>
  25. <select name="adresA5.3" id="adresA5.3">
  26. <?php include('uploads/adresy_inc.php'); ?>
  27. </select>
  28. <select name="adresA5.4" id="adresA5.4">
  29. <?php include('uploads/adresy_inc.php'); ?>
  30. </select>
  31. <br>
  32. <input type="radio" name="format" value="A6"> A6
  33. <br />
  34. <select name="adresA6.1" id="adresA6.1">
  35. <?php include('uploads/adresy_inc.php'); ?>
  36. </select>
  37. <select name="adresA6.2" id="adresA6.2">
  38. <?php include('uploads/adresy_inc.php'); ?>
  39. </select>
  40. <select name="adresA6.3" id="adresA6.3">
  41. <?php include('uploads/adresy_inc.php'); ?>
  42. </select>
  43. <select name="adresA6.4" id="adresA6.4">
  44. <?php include('uploads/adresy_inc.php'); ?>
  45. </select>
  46. <br />
  47. <select name="adresA6.5" id="adresA6.5">
  48. <?php include('uploads/adresy_inc.php'); ?>
  49. </select>
  50. <select name="adresA6.6" id="adresA6.6">
  51. <?php include('uploads/adresy_inc.php'); ?>
  52. </select>
  53. <select name="adresA6.7" id="adresA6.7">
  54. <?php include('uploads/adresy_inc.php'); ?>
  55. </select>
  56. <select name="adresA6.8" id="adresA6.8">
  57. <?php include('uploads/adresy_inc.php'); ?>
  58. </select>
  59. <br>
  60. <input type="radio" name="format" value="ZAŚWIADCZENIA"> ZAŚWIADCZENIA <br />
  61. <select name="adresZA.1" id="adresZA.1">
  62. <?php include('uploads/adresy_inc.php'); ?>
  63. </select>
  64. <select name="adresZA.2" id="adresZA.2">
  65. <?php include('uploads/adresy_inc.php'); ?>
  66. </select>
  67. <select name="adresZA.3" id="adresZA.3">
  68. <?php include('uploads/adresy_inc.php'); ?>
  69. </select>
  70. <select name="adresZA.4" id="adresZA.4">
  71. <?php include('uploads/adresy_inc.php'); ?>
  72. </select>
  73. <select name="adresZA.5" id="adresZA.5">
  74. <?php include('uploads/adresy_inc.php'); ?>
  75. </select>
  76. <select name="adresZA.6" id="adresZA.6">
  77. <?php include('uploads/adresy_inc.php'); ?>
  78. </select>
  79. <br>
  80. <input type="radio" name="format" value="AKCJE"> AKCJE <br />
  81. <select name="adresAK.1" id="adresAK.1">
  82. <?php include('uploads/adresy_inc.php'); ?>
  83. </select>
  84. <select name="adresAK.2" id="adresAK.2">
  85. <?php include('uploads/adresy_inc.php'); ?>
  86. </select>
  87. <select name="adresAK.3" id="adresAK.3">
  88. <?php include('uploads/adresy_inc.php'); ?>
  89. </select>
  90. <select name="adresAK.4" id="adresAK.4">
  91. <?php include('uploads/adresy_inc.php'); ?>
  92. </select>
  93. <select name="adresAK.5" id="adresAK.5">
  94. <?php include('uploads/adresy_inc.php'); ?>
  95. </select><br />
  96. <select name="adresAK.6" id="adresAK.6">
  97. <?php include('uploads/adresy_inc.php'); ?>
  98. </select>
  99.  
  100. <select name="adresAK.7" id="adresAK.7">
  101. <?php include('uploads/adresy_inc.php'); ?>
  102. </select>
  103. <select name="adresAK.8" id="adresAK.8">
  104. <?php include('uploads/adresy_inc.php'); ?>
  105. </select>
  106. <select name="adresAK.9" id="adresAK.9">
  107. <?php include('uploads/adresy_inc.php'); ?>
  108. </select>
  109. <select name="adresAK.10" id="adresAK.10">
  110. <?php include('uploads/adresy_inc.php'); ?>
  111. </select>
  112. <select name="adresAK.11" id="adresAK.11">
  113. <?php include('uploads/adresy_inc.php'); ?>
  114. </select>
  115. <select name="adresAK.12" id="adresAK.12">
  116. <?php include('uploads/adresy_inc.php'); ?>
  117. </select>
  118. </p>


plik adres_inc.php
  1. <option value="">Wybierz adres ...</option>
  2. <?php
  3. $q = "SELECT id_adres, adres FROM adresy ORDER BY adres ASC";
  4. $r = mysqli_query($link, $q);
  5.  
  6. if (mysqli_num_rows($r) > 0)
  7. {
  8. while ($menu_row = mysqli_fetch_array($r, MYSQLI_NUM))
  9. {
  10. echo "<option value=\"$menu_row[0]\">$menu_row[1]</option>\n";
  11. }
  12. }
  13. mysqli_free_result($r);
  14. unset($menu_row); ?>


przed formularzem mam przypisywanie do zmiennych oraz wryfikacje:
  1. if (isset($_POST['submitted']))
  2. {
  3. $errors = array();
  4.  
  5. if(empty($_POST['format']))
  6. {
  7. $errors[] = 'Nie wybrałeś formatu';
  8. }
  9. else
  10. {
  11. $ifo = trim($_POST['format']);
  12. }
  13. if($ifo == 'A3')
  14. {
  15. $adres1 = $_POST['adresA3'];
  16. $ia = $adres1;
  17.  
  18.  
  19. }
  20. elseif($ifo == 'A4')
  21. {
  22. $adres1 = $_POST['adresA4.1'];
  23. $adres2 = $_POST['adresA4.2'];
  24. $ia = $adres1 . $adres2;
  25. echo $ia;
  26. }
  27. elseif($ifo == 'A5')
  28. {
  29. $adres1 = $_POST['adresA5.1'];
  30. $adres2 = $_POST['adresA5.2'];
  31. $adres3 = $_POST['adresA5.3'];
  32. $adres4 = $_POST['adresA5.4'];
  33. $ia = $adres1 . $adres2 . $adres3 . $adres4;
  34. echo $ia;
  35. }
  36. elseif($ifo == 'A6')
  37. {
  38. $adres1 = $_POST['adresA6.1'];
  39. $adres2 = $_POST['adresA6.2'];
  40. $adres3 = $_POST['adresA6.3'];
  41. $adres4 = $_POST['adresA6.4'];
  42. $adres5 = $_POST['adresA6.5'];
  43. $adres6 = $_POST['adresA6.6'];
  44. $adres7 = $_POST['adresA6.7'];
  45. $adres8 = $_POST['adresA6.8'];
  46. $ia = $adres1 . $adres2 . $adres3 . $adres4 . $adres5. $adres6 . $adres7 . $adres8;
  47. echo $ia;
  48. }
  49. elseif($ifo == 'ZAŚWIADCZENIA')
  50. {
  51. $adres1 = $_POST['adresZA.1'];
  52. $adres2 = $_POST['adresZA.2'];
  53. $adres3 = $_POST['adresZA.3'];
  54. $adres4 = $_POST['adresZA.4'];
  55. $adres5 = $_POST['adresZA.5'];
  56. $adres6 = $_POST['adresZA.6'];
  57.  
  58. $ia = $adres1 . $adres2 . $adres3 . $adres4 . $adres5. $adres6;
  59. echo $ia;
  60. }
  61. elseif($ifo== 'AKCJE')
  62. {
  63. $adres1 = $_POST['adresAK.1'];
  64. $adres2 = $_POST['adresAK.2'];
  65. $adres3 = $_POST['adresAK.3'];
  66. $adres4 = $_POST['adresAK.4'];
  67. $adres5 = $_POST['adresAK.5'];
  68. $adres6 = $_POST['adresAK.6'];
  69. $adres7 = $_POST['adresAK.7'];
  70. $adres8 = $_POST['adresAK.8'];
  71. $adres9 = $_POST['adresAK.9'];
  72. $adres10 = $_POST['adresAK.10'];
  73. $adres11 = $_POST['adresAK.11'];
  74. $adres12 = $_POST['adresAK.12'];
  75.  
  76. $ia = $adres1 . $adres2 . $adres3 . $adres4 . $adres5. $adres6;
  77. echo $ia;
  78. }
  79. else
  80. {
  81. echo $ia = 'Błąd';
  82. }
  83.  
  84.  

Podczas tworzenia chodziło mi o to, że jeśli zostanie wybrany jakiś format z radio np A4 to do bazy dodają się tylko te 2 adresy, które znajdują się koło radio z wyborem A4.

oraz poniżej jak wygląda zapytanie wysyłane do bazy:
  1. INSERT INTO zamowienia (tytul_za, data_za, termin, nazwa_zl, id_adres, id_format, id_kolory, odwracanie, papier, naklad, ctp_zam, ctp_pro, ctp_im, blachy, id_format_p, uwagi) VALUES ('$tz', '$dz', '$termin','$nzl','$ia','$ifo','$ik', '$odw', '$pap', '$nak', '$ctp_zam', '$ctp_pro', '$ctp_im', '$bla', '$ifp', '$uwagi')

oraz drugie zapytanie , ponieważ wybrane adresy z select, chcę żeby dodawały się do innej tabelki.
  1. INSERT INTO adresy_2 (adres1, adres2, adres3, adres4, adres5, adres6, adres7, adres8, adres9, adres10, adres11, adres12) VALUES ('$adres1', '$adres2', '$adres3','$adres4', '$adres5', '$adres6', '$adres7', '$adres8', '$adres9', '$adres10', '$adres11', '$adres12')


Ominęłam te fragmenty kodu, które działają poprawnie.

Mam jeszcze jedno pytanie... jak zrobić, aby jak wybiorę jedno radio to reszta się zablokuje?
singollo
1. Ale jaki konkretnie masz problem? Jakiś błąd, coś działa nieprawidłowo?

Cytat
Mam jeszcze jedno pytanie... jak zrobić, aby jak wybiorę jedno radio to reszta się zablokuje?


2. atrybut disabled + trochę javascriptu
sinke
Aha, zapomniałam, że problem jest taki, że nie chcą się dodawać ani formaty z radio ani adresy z wybierane z select'ów (listy rozwijanej).

A z js próbowałam i jeżeli mam jeden radio i jeden select to działa, przy dwóch i trzech też, ale jak już jest więcej to przestaje działać. I właśnie nie wiem (nie znam się na js) czy da się większą ilość zablokować czy nie?
CuteOne
Włącz wyświetlanie błędów a do zapytań zapisujących dane na końcu dodaj "or die(mysql_error());" tak jak poniżej
  1. mysql_query("tutaj zapytanie") or die(mysql_error());


Warto też sprawdzić czy wszystkie dane zostały przesłane:
  1. if (isset($_POST['submitted']))
  2. {
  3. echo '<pre>';print_r($_POST);
sinke
Po dodaniu:
Cytat
  1. echo '<pre>';print_r($_POST);


wyświetliła się tabela i z niej wynika, że wszystko pobiera dobrze.
Kod
Array
(
    [tytul_za] => 222
    [miesiąc] => 5
    [str] => 4
    [data_za] => 10.06.2011
    [termin] => 12.06.2011
    [nazwa_zl] => A4 LIST
    [adresA3_1] =>
    [format] => A4
    [adresA4_1] => 2 // wybrałam format A4 czyli tylko dwa pola z adresami wypełniam, więc się zgadza
    [adresA4_2] => 5
    [adresA5_1] =>
    [adresA5_2] =>
    [adresA5_3] =>
    [adresA5_4] =>
    [adresA6_1] =>
    [adresA6_2] =>
    [adresA6_3] =>
    [adresA6_4] =>
    [adresA6_5] =>
    [adresA6_6] =>
    [adresA6_7] =>
    [adresA6_8] =>
    [adresZA_1] =>
    [adresZA_2] =>
    [adresZA_3] =>
    [adresZA_4] =>
    [adresZA_5] =>
    [adresZA_6] =>
    [adresAK_1] =>
    [adresAK_2] =>
    [adresAK_3] =>
    [adresAK_4] =>
    [adresAK_5] =>
    [adresAK_6] =>
    [adresAK_7] =>
    [adresAK_8] =>
    [adresAK_9] =>
    [adresAK_10] =>
    [adresAK_11] =>
    [adresAK_12] =>
    [papier] => 80g kreda
    [naklad] => 1200
    [id_kolory] => 10
    [odwracanie] => Nie
    [blachy] => 2
    [id_format_p] => 2
    [uwagi] =>
    [submit] => dodaj
    [submitted] => TRUE
)

Po włączeniu błędów pokazuje mi się coś takiego:
Kod
Notice:  Undefined index:  adresA4.1 in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 75
Notice:  Undefined index:  adresA4.2 in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 76
Warning:  mysql_result(): supplied argument is not a valid MySQL result resource in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 216

Notice:  Undefined variable: adres3 in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 219
.
.
.

Notice:  Undefined variable: adres12 in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 219


linia od 73-79:
  1. elseif($ifo == 'A4')
  2. {
  3. $adres1 = $_POST['adresA4.1']; //75 linia
  4. $adres2 = $_POST['adresA4.2']; //76 linia
  5. $ia = $adres1 . $adres2;
  6. echo $ia;
  7. }


i po dodaniu po zapytaniach tego:
  1. echo $q.'<br/>';
  2. echo $q2.'<br/>';
  3. var_dump($r2);
  4. mysql_query($q) or die('BŁĄD:'.mysql_error());
  5. mysql_query($q2) or die('BŁĄD:'.mysql_error());

Takie błędy otrzymałam:
Kod
Warning:  mysql_result(): supplied argument is not a valid MySQL result resource in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 220

INSERT INTO zamowienia (tytul_za, data_za, termin, nazwa_zl, id_adres, id_format, id_kolory, odwracanie, papier, naklad, blachy, id_format_p, uwagi) VALUES ('Zamówienie: 222/5/2011/4', '10.06.2011', '12.06.2011','A4 LIST','','A4','10', 'Nie', '80g kreda', '1200', '2', '2', 'Brak uwag.')
INSERT INTO adresy_2 (adres1, adres2, adres3, adres4, adres5, adres6, adres7, adres8, adres9, adres10, adres11, adres12) VALUES ('', '', '','', '', '', '', '', '', '', '', '')
bool(false)
bool(false)

Warning:  mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 228

Warning:  mysql_query() [function.mysql-query]: A link to the server could not be established in /homepages/23/d353908754/htdocs/zamowienie/dodaj_zamowienie.php on line 228

BŁĄD:Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)

linia 220:
  1. $r2 = mysql_result($link, $q2);

linia 228:
  1. mysql_query($q) or die('BŁĄD:'.mysql_error());


//EDIT

Udało mi się rozwiązać problem z niedodawaniem radio i okazało się, w "value" był string a miał być int.

Ale dalej jest problem z adresami(lista rozwijana), bo nie chcą się dodawać adresy do tabeli, tylko jak dodaję jeden to jest wszystko okej.... sad.gif
Jak dodaje w MyAdminie przez wklejenie kodu sql to wszystko się dodaje poprawnie.
Wie może Ktoś jak z tym sobie poradzić?
singollo
Skup się:
Kod
BŁĄD:Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)


W wolnym tłumaczeniu: nie połączyłem się z bazą danych.

mortus
Problem z przekazywaniem wartości select-ów: print_r($_POST); pokazał, że w tablicy $_POST masz pole adresA4_2, a w kodzie PHP używasz $_POST['adresA4.2'].
To samo się tyczy pozostałych select-ów.
thek
Szczerze? Ja to nie rozumiem jednego... Po co pierdylion include'ów tego samego wink.gif Zarżynasz bazę, samymi połaczeniami. Owszem... Pociągnie ona z cache'u swojego to zapytanie... pytanie tylko "Po co?" Wystarczy RAZ zrobić to zapytanie, obrobić wynik choćby do postaci tablicy i potem pierdylion razy uzyć foreach już na niej. Innymi słowy zamiast
  1. <select name="adresAK.1" id="adresAK.1">
  2. <?php include('uploads/adresy_inc.php'); ?>
  3. <select name="adresAK.2" id="adresAK.2">
  4. <?php include('uploads/adresy_inc.php'); ?>
  5. <select name="adresAK.3" id="adresAK.3">
  6. <?php include('uploads/adresy_inc.php'); ?>
zrób coś w stylu
  1. <?php
  2. $q = "SELECT id_adres, adres FROM adresy ORDER BY adres ASC";
  3. $r = mysqli_query($link, $q);
  4. $options = array();
  5. if ( $r ) {
  6. while ($menu_row = mysqli_fetch_array($r, MYSQLI_NUM)) {
  7. $options[] = array( '0' => $menu_row[0], '1' => $menu_row[1] );
  8. }
  9. }
  10. ?>
  11. //tu kod ogólnie tego co robisz
  12. <select name="adresAK.2" id="adresAK.2">
  13. <?php foreach( $options AS $option ) { ?>
  14. <option value="<?php echo $option[0]; ?>"><?php echo $option[1]; ?></option>
  15. <?php } ?>
  16. </select>
  17. <select name="adresAK.3" id="adresAK.3">
  18. <?php foreach( $options AS $option ) { ?>
  19. <option value="<?php echo $option[0]; ?>"><?php echo $option[1]; ?></option>
  20. <?php } ?>
  21. </select>
sinke
Po pierwsze dziękuję thek za Twoje rozwiązanie. Wciąż się uczę i nie wiedziałam jak zrobić to inaczej więc wymyśliłam includowanie.

A jeśli o chodzi o temat to dalej jest problem...
Po włączeniu wszystkich błędów jakie znam, wszystko wychodzi, że jest okej.
Połączenie z bazą jest. Obydwa zapytania się wyświetlają i jak je wklejam przez sql w phpMyAdminie to działają i rekordy się dodawają, ale przez stronę już nie.
Dodaje się tylko pierwsze zapytanie i na dodatek podwójnie. Nie wiem czemu? Możliwe, że mam zapytania jakoś źle przypisane, dlatego tak jest?

Można podczas wysyłania formularza używać dwóch INSERT'ów do różnych kolumn? Czy jest jakieś ograniczenie?

//EDIT
Zamieniłam INSERTY miejscami i wszystko działa jak powinno, ale nie wiem czemu?

Można zamknąć temat smile.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.