Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie rokordu do 2 tabeli z 13 checkboxow
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam,
Mam mały problem z dodawaniem danych z inputów typu text dodaje mi normalnie rekordy.
  1. mysql_query("INSERT INTO zawodnik VALUES(NULL, '".mysql_real_escape_string(htmlspecialchars($_POST['imie']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['nazwisko']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['email']))."')");

lecz w tym samym formularzu mam 13 checkboxow i ich wartości chciał bym dodać jednocześnie do 2 tabeli. tabela ta przechowuje rekordy z samymi id(id, id_zawodnika, id_konkurencji)
wymyśliłem sobie że po pierwszym zapytaniu zwrócę się do bazy o id_zawodnika którego dodaje w tym momencie wrzucę go w zmienną i potem 3 zapytanie dodające id zawodnika i id konkurencji, ale niestety coś nie działa/
Kolejnym moim spostrzeżeniem jest to że tabela wygląda tak:
id
id_zawodnika
id_konkurencji

czyli jest np.:
1,1,1
1,1,2

jak w zapytaniu określić żeby dodało mi 5 konkurencji w tej formie tzn.tworzyło 5 rekordów 1,1,1 1,1,2 1,1,3 etc. a nieaktywne checkboxy omijało

  1. if (isset($_POST['1'])) {
  2. $konkurencja1 = $_POST['1'];
  3. }
  4. if (isset($_POST['2'])) {
  5. $konkurencja2 = $_POST['2'];
  6. }
  7. if (isset($_POST['3'])) {
  8. $konkurencja3 = $_POST['2'];
  9. }
  10. if (isset($_POST['4'])) {
  11. $konkurencja4 = $_POST['4'];
  12. }
  13. if (isset($_POST['5'])) {
  14. $konkurencja5 = $_POST['5'];
  15. }
  16. if (isset($_POST['6'])) {
  17. $konkurencja6 = $_POST['6'];
  18. }
  19. if (isset($_POST['7'])) {
  20. $konkurencja7 = $_POST['7'];
  21. }
  22. if (isset($_POST['8'])) {
  23. $konkurencja8 = $_POST['8'];
  24. }
  25. if (isset($_POST['9'])) {
  26. $konkurencja9 = $_POST['9'];
  27. }
  28. if (isset($_POST['10'])) {
  29. $konkurencja10 = $_POST['10'];
  30. }
  31. if (isset($_POST['11'])) {
  32. $konkurencja11 = $_POST['11'];
  33. }
  34. if (isset($_POST['12'])) {
  35. $konkurencja12 = $_POST['12'];
  36. }
  37. if (isset($_POST['13'])) {
  38. $konkurencja13 = $_POST['13'];
  39. }
  40. if(!empty($_POST["imie"]) && !empty($_POST["nazwisko"]) &&!empty($_POST["email"]) ) { //sprawdza czy wszystkie pola zostaly uzupelnione
  41. if(mysql_num_rows(mysql_query("select * from zawodnik where zawodnik_imie='".htmlspecialchars($_POST["imie"])."' AND zawodnik_nazwisko='".htmlspecialchars($_POST["nazwisko"])."' AND zawodnik_email='".htmlspecialchars($_POST["email"])."'")) <1) { //sprawdz czy nie istniej juz ktos o takim loginie
  42. mysql_query("INSERT INTO zawodnik VALUES(NULL, '".mysql_real_escape_string(htmlspecialchars($_POST['imie']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['nazwisko']))."', '".mysql_real_escape_string(htmlspecialchars($_POST['email']))."')"); //dodaje uzytkownia do bazy danych
  43. $q = mysql_query("select `zawodnik_id` from `zawodnik` order by `zawodnik_id` desc");
  44. $id = $r['zawodnik_id'];
  45. //miejsce na zapytanie insert into zawodnik_konkurencja
  46. $wynik = mysql_query($zapytanie);
  47.  
  48. echo "Dodano<br>";
  49. } else echo "zawodnik juz istnieje w bazie<br>";
  50. } else echo "Nie uzupelniono wszystkich pol<br>";
  51.  



potreb
Ja zawsze robię tak:

<input name='form[checkbox][]' />

Pobieram akurat te dane, które są w checkboxach, robie implode i ładuje do jednej kolumny, ale w twoim przypadku warto mieć dla każdego pola kolumne w tabeli, bo jeżeli nie zaznaczysz checkboxa to będzie puste i wtedy dane się pomieszają.
ghastblood
złączenie pól tablicy w jedną ciągłość jest sensowne, można zmniejszyć w ten sposób liczbę rekordów w bazie danych, tylko nigdy nie korzystałem z tej funkcji, mógł byś podać jakiś przykład taki mniej więcej jak to powinno wyglądać.

jak coś wymyśle to wrzucę mój kod

krispak
Zastosuj input jak napisal @potreb z tym ze jak jest nie zaznaczone dawaj zero, aby wlasnie dane sie nie pomieszaly i aby bylo wiadomo co za checkbox, a potem tylko weryfikacja.
ghastblood
z tego co rozumiem

<input name='form[checkbox][]' />

w ten sposób stworzę tabelę którą będę mógł połączyć za pomocą implode i zmienną już normalnie wrzucić do zapytania do mysql.

proszę mnie poprawić jak się mylę.
krispak
  1. <input name='checkbox[]' value="1"/>

Najpierw musisz sprawdzic czy checkbox zostal zaznaczony czy nie poprzez porownanie - jezeli ma wartosc 1 to zaznaczony i dajesz 1 jezeli nie to 0. Inaczej implode zlaczy tablice w ciag tylko z zaznaczonych checkboxow, ale wtedy nie bedziesz wiedzial ktora wartość jest ktora.
Dla przykladu:
Masz 3 checkboxy, zanaczyles 2 i 3, implode zrobi z tego 1,1 a tak naprawde pierwsza 1 nie jest pierwsza tylko 2, a jak zrobisz sprawdzanie bedziesz mial 0,1,1 i wiesz ze 0 jest niezaznaczonym checkboxem.
ghastblood
Nie będę zakładał nowego tematu

Mam formularz w html
i chciał bym przekazać zmienne za pomocą POST do 2 strony np. formularz.php

ale nie wyświetla mi zmiennych

  1. <head>
  2. Test formularza
  3. </title>
  4. </head>
  5. <body>
  6. <form action="formularz.php" method="POST">
  7. Imię: <input type=text name="imie"/><br/>
  8.  
  9. Nazwisko: <input type=text name="nazwisko"/><br/>
  10. Proszę o fakturę do zamówienia: <input type=checkbox name="faktura"/><br/>
  11. Chcę zamówić:<br/>
  12. <input type=radio name=zamow value="kola"/>Coca-colę<br>
  13.  
  14. <input type=radio name=zamow value="fanta"/>Fantę<br>
  15. <input type=radio name=zamow value="sprite"/>Sprite'a<br>
  16. <input type=submit value="Wyślij"/>
  17. </form>
  18. </body>
  19.  
  20. </html>


  1. <html>
  2. <head>
  3. <title>
  4. Wyniki
  5. </title>
  6. </head>
  7.  
  8. <body>
  9. Imię: <?php echo $_POST['imie']?><br>
  10. Nazwisko: <?php echo $_POST['nazwisko']?><br>
  11. Faktura: <?php echo ($_POST['faktura'] == 'on' ? 'Tak' : 'Nie')?><br>
  12.  
  13. Zamówienie: <?php switch($_POST['zamow']){
  14. case "kola":
  15. echo "Coca-cola";
  16. break;
  17. case "fanta":
  18. echo "Fanta";
  19. break;
  20. case "sprite":
  21. echo "Sprite";
  22. break;
  23. }
  24. ?>
  25. </body>
  26. </html>


jest to przykład z jakiejś strony ale niestety nie przekazuje mi zmiennych

register_globals on

.
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.