Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]Problem z checkbox
jacus24
post
Post #1





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 15.12.2007

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


  1. <?php
  2. $hobby = $_POST['hobby'];
  3.  
  4. $query_update = "UPDATE user SET hobby='" .$hobby. "'
  5. WHERE login = '" . $_SESSION['user_logged'] . "' AND haslo = '" . $_SESSION['user_password'] . "'";
  6.  
  7. <form action = "update_account.php" method="post">
  8.  
  9. <input type="checkbox" name="hobby" value="muzyka"> Muzyka
  10. <input type="checkbox" name="hobby" value="Film" > Film
  11. <input type="checkbox" name="hobby" value="Sport" > Sport
  12. <input type="submit" name="submit" value="Uaktualnij"> &nbsp;
  13. <input type="button" value="Anuluj" onclick="history.go(-1);"> </form>
  14. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jacus24
post
Post #2





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 15.12.2007

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


Ok dziękuje.Popracuje nad tym i wrazie czego zapytam ponownie:)

Wracam bo nie mogę sobie z tym poradzić
Mam
  1. <?php
  2. <input type="checkbox" name="hobby[]" value="muzyka"> Muzyka
  3. <input type="checkbox" name="hobby[]" value="Film" > Film
  4. <input type="checkbox" name="hobby[]" value="Sport" > Sport
  5. ?>

Po daniu tego na poczatek
  1. <?php
  2. print_r($_POST['hobby']);
  3. ?>

mam
  1. <?php
  2. Array ( [0] => Muzyka[1] => Film [2] => Sport)
  3. ?>

Do bazy dodaje jedno tylko nawet jeśli są zaznaczone 3.Jak zmienić zapytanie do bazy żeby dodawało wszystkie 3.Naprawde trzeba tworzyć nową tabele?Jeśli tak to jakie przypisać nazwy polom?Proszę o pomoc
Go to the top of the page
+Quote Post
nowotny
post
Post #3





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(jacus24 @ 2.02.2008, 21:37:25 ) *
3.Jak zmienić zapytanie do bazy żeby dodawało wszystkie

No ale jak chcesz do jednego pola dodać różne wartości...?

Cytat(jacus24 @ 2.02.2008, 21:37:25 ) *
3.Naprawde trzeba tworzyć nową tabele?Jeśli tak to jakie przypisać nazwy polom?

Ja bym to tak zrobił... Grzyw napisał ci co i jak...
Go to the top of the page
+Quote Post
jacus24
post
Post #4





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 15.12.2007

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


Cytat
Ja bym to tak zrobił... Grzyw napisał ci co i jak...

Ale napisałem że mam z tym problem.(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Już zrobiłem. Dzięki za pomoc.
Go to the top of the page
+Quote Post
nowotny
post
Post #5





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(jacus24 @ 2.02.2008, 22:30:55 ) *
Ale napisałem że mam z tym problem.(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ale z czym dokładnie...? tabelę chyba sobie potrafisz dodać...?
Ja bym osobiście dodał jeszcze tabelę z danymi o poszczególnych hobby:
  1. CREATE TABLE `hobby_conf` (
  2. `id` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3. `nazwa` TINYTEXT NOT NULL
  4. );
  5.  
  6. INSERT INTO `hobby_conf` ( `id` , `nazwa` ) VALUES (NULL , 'Muzyka');
  7. INSERT INTO `hobby_conf` ( `id` , `nazwa` ) VALUES (NULL , 'Film');
  8. INSERT INTO `hobby_conf` ( `id` , `nazwa` ) VALUES (NULL , 'Sport');


Formularz bym wyświetlał dynamicznie:
  1. <?php
  2. $query='SELECT * FROM hobby_conf';
  3. $result = mysql_query($query);
  4. while ($row = mysql_fetch_array($result)) {
  5. echo '<input type="checkbox" name="hobby[]" value="'.$row['id'].'">'. $row['nazwa'];
  6. }
  7. ?>

Dzięki temu możesz w przyszłości bardzo łatwo dodać dodatkowe hobby bez poprawiania każdego skryptu... Wystarczy do tabeli dodać kolejny rekord i tyle...


Teraz robisz sobie:
  1. <?php
  2. $query='SELECT id FROM hobby_conf';
  3. $result = mysql_query($query);
  4. while ($row = mysql_fetch_array($result)) {
  5. $hobbies[]=$row['id'];
  6. }
  7.  
  8.  
  9. foreach($hobbies as $hobby_id){
  10. $query='SELECT * FROM user_hobbies WHERE user_id="'.$user_id.'" AND hobby_id="'.$hobby_id.'"'; //sprawdzamy czy dane juz sa w tablicy
  11. $result = mysql_query($query);
  12. if(mysql_num_rows($result)==&& (isset($_POST['hobby']) && in_array($hobby_id,$_POST['hobby']))){
  13.  
  14. $query='INSERT INTO user_hobbies (user_id,hobby_id) VALUES ("'.$user_id.'","'.$hobby_id.'")';
  15. $result = mysql_query($query);
  16. }
  17. else{
  18. if (isset($_POST['hobby']) && !in_array($hobby_id,$_POST['hobby'])){
  19. $query='DELETE FROM user_hobbies WHERE user_id="'.$user_id.'" AND hobby_id="'.$hobby_id.'"';
  20. $result = mysql_query($query);
  21. }
  22. }
  23. }
  24. ?>

Powyższy kod jest 'inteligentny'... czyli działa też kiedy użytkownik odznaczy dane hobby, wtedy dane są usuwane...
Uwaga: nie sprawdzone w praniu... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Heh... taka pierdółka a ile kodu... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował nowotny 2.02.2008, 23:31:19
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 2.10.2025 - 18:08