Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem z dodaniem do bazy, .. elementów z listy wyboru (pobranej z tej samej bazy)
majestiq
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Mam taki skrypcik do tworzenia nowych kategorii w bazie danych:
Schemat tabeli 'kategorie':

cat_id int AUTO_INCREMENT not null,
cat_name text,
cat_parent int,
primary key (cat_id)

  1. <?php
  2. // (...)
  3.  
  4.    $cat_name = $_POST['cat_name'];
  5.    $cat_parent = $_POST['cat_parent'];
  6.  
  7.  
  8. if ($cat_name)
  9.  
  10.  
  11.   {
  12.   $qrry = "INSERT INTO kategorie (cat_name, cat_parent) VALUES ('$cat_name', '$cat_parent');";
  13.    $ans = mysql_query($qrry, $conn);
  14.   if (!$ans) print mysql_error($conn);
  15. }
  16.  
  17.  
  18. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  19. $answ = mysql_query($wypisz, $conn);
  20. #echo mysql_errno() . ": " . mysql_error(). "\n";
  21. // wyświetlany wyniki zapytania
  22.    
  23. ?>
  24.  
  25.  
  26.  
  27. <FORM method="post">
  28. <p style="font-size:10px; color:#000; font-family:arial;">Nowa kategoria:</p><BR><INPUT name="cat_name" type="text" size="55"><BR>
  29. <p style="font-size:10px; color:#000; font-family:arial;">Kategoria nadrzędna:</p><BR>
  30. <select name="sortby" style="vertical-align:middle">
  31.  
  32.  
  33.  
  34. <?php
  35.        while($rek = mysql_fetch_array($answ)) {
  36.           echo  '      <option value="" onclick=""><$rek[cat_name]></option>
  37.           ';
  38.      }
  39. ?>    
  40.  
  41.  
  42. </select><BR>    
  43. <INPUT name="submit" type="submit" value="Dodaj">
  44. </FORM>


Za pomocą formularza wybieramy sobie nazwe kategori i mozemy ją spokojnie dodać.
Jednak każda kategoria może mieć kategorie nadrzędną (cat_parent), która można by wybrać z rozwijanej listy.
Na tej liście powinny być wszystkie dodane wcześniej kategorie.
Jeśli przy dodawaniu nowej kategorii klikniemy dodatkowo kategorie nadrzędna z listy i klikniemy dodaj, to do bazy powinno się zapisać id tej kategorii
w polu cat_parent (no i cała reszta dla dodanej kategorii).

Próbowałem coś pokombinować, ale mi nie wychodzi.
Jak powinna wyglądać ta część kodu, żeby było ok:

  1. <?php
  2.        while($rek = mysql_fetch_array($answ)) {
  3.           echo  '      <option value="" onclick=""><$rek[cat_name]></option>
  4.           ';
  5.      }
  6. ?
  7. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował majestiq 23.12.2008, 10:56:09
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wartość przekazywana do skryptu znajduje się w atrybucie value. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
majestiq
post
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Value powinno się incrementować automatycznie, zaleznie od ilości kategori (i++ (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Może mógłbyś choć raz napisać mi poprawny kod (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) P
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(majestiq @ 23.12.2008, 12:08:18 ) *
Value powinno się incrementować automatycznie, zaleznie od ilości kategori (i++ (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Samo to się nic nie robi. Musisz w każdym obrocie pętli wstawić coś do value.
  1. <?php
  2. $i = 1;
  3. while($rek = mysql_fetch_array($answ)) {
  4.    echo  ' <option value="' . $i++ . '" onclick=""><$rek[cat_name]></option>';
  5. }
  6. ?>


Cytat(majestiq @ 23.12.2008, 12:08:18 ) *
Może mógłbyś choć raz napisać mi poprawny kod (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) P
A może choć raz zrobić to samemu? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

W powyższym kodzie specjalnie zostawiłem Ci błąd. Zapraszam do podstaw: stringi. Dowiesz sie jak umieszczać zmienne w stringach.
Go to the top of the page
+Quote Post
majestiq
post
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


No staram się sam, ale jak nie daje rady to proszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Poprawiłem ten kod:

  1. <?php
  2. $i = 1;
  3. while($rek = mysql_fetch_array($answ)) {
  4.   echo  "<option value=' $i++'  onclick=''><$rek[cat_name]></option>";
  5. }
  6. ?>


Wynik:

  1. <FORM method="post">
  2. <p style="font-size:10px; color:#000; font-family:arial;">Nowa kategoria:</p><BR><INPUT name="cat_name" type="text" size="55"><BR>
  3. <p style="font-size:10px; color:#000; font-family:arial;">Kategoria nadrzędna:</p><BR>
  4. <select name="sortby" style="vertical-align:middle">
  5.  
  6.  
  7. </select><BR>
  8. <INPUT name="submit" type="submit" value="Dodaj">
  9. </FORM>


Czyli chyba coś nie tak z warunkeim, że nic nie wyświetla w selekcie ?

Ten post edytował majestiq 23.12.2008, 12:29:32
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Kurde, błedy i niedopatrzenia początkującego. Ile juz na tym forum piszesz? I za każdym razem to samo.
Brak debugowania. Przeczytaj to: Najczęstsze błędy, Zanim zapytasz, to sprawdź.
1. Są wyniki zapytania?
2. podpowiedź nr. 2 (Problemy z zapytaniem SQL)
Go to the top of the page
+Quote Post
majestiq
post
Post #7





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Pisze trochę ponad rok, to niedługo...
Błąd leży gdzie indziej, sam żle przepisałeś kod, bo nawet po usunięciu wiersza
w którym wprowadziłeś błąd i zmodyfikowaniu go w ten sposób:

  1. <?php
  2. $i = 1;
  3. while($rek = mysql_fetch_array($answ)) {
  4. echo "bzz";
  5. }
  6. ?>


Nie wyświetla mi się nic.

Ten post edytował majestiq 23.12.2008, 12:44:48
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Pomyśl trochę. Skoro pętla zalezy od ilości wyników a nie wyświetla nic to co może być nie tak?
Go to the top of the page
+Quote Post
majestiq
post
Post #9





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Pomyślałem :]
Już jest dużo lepiej,
Zmienne nie były widoczne w tym miejscu (myślałem, że mają większy zasięg)

  1. <?php
  2. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  3. $answ = mysql_query($wypisz, $conn);
  4. $i = 1;
  5. while($rek = mysql_fetch_array($answ)) {
  6.   echo  "<option value='" . $i++ . "'onclick=''>" . $rek[cat_name] . "</option>";
  7.   var_dump ($rek);
  8. }  
  9. ?>


  1. <FORM method="post">
  2. <p style="font-size:10px; color:#000; font-family:arial;">Nowa kategoria:</p><BR><INPUT name="cat_name" type="text" size="55"><BR>
  3.  
  4. <p style="font-size:10px; color:#000; font-family:arial;">Kategoria nadrzędna:</p><BR>
  5. <select name="sortby" style="vertical-align:middle">
  6.  
  7. <option value='1'onclick=''>Biuro</option>array(6) {
  8. [0]=>
  9. string(1) "1"
  10. ["cat_id"]=>
  11. string(1) "1"
  12. [1]=>
  13. string(5) "Biuro"
  14. ["cat_name"]=>
  15. string(5) "Biuro"
  16. [2]=>
  17. string(1) "0"
  18. ["cat_parent"]=>
  19. string(1) "0"
  20. }
  21. <option value='2'onclick=''>Grafika</option>array(6) {
  22. [0]=>
  23. string(1) "2"
  24. ["cat_id"]=>
  25. string(1) "2"
  26. [1]=>
  27. string(7) "Grafika"
  28. ["cat_name"]=>
  29. string(7) "Grafika"
  30. [2]=>
  31. string(1) "0"
  32. ["cat_parent"]=>
  33. string(1) "0"
  34. }
  35. </select><BR>
  36. <INPUT name="submit" type="submit" value="Dodaj">
  37. </FORM>


Teraz tylko trzeba przekazać cat_id jakoś jeszcze, bo narazie mi się nie dodaje.
Chyba teraz trzeba wykorzystac onclick lub inne polecenie JS ?
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Teraz tylko trzeba przekazać cat_id jakoś jeszcze, bo narazie mi się nie dodaje.

<input type="hidden" /> albo podajesz w zmiennej GET dla action formularza.
Go to the top of the page
+Quote Post
majestiq
post
Post #11





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Próbuje na różne sposoby z tym <input type="hidden" /> ale gdzie to trzeba dać?
Chyba nie mogę tego wrzucić między <selcet></select> ?

  1. <?php
  2. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  3. $answ = mysql_query($wypisz, $conn);
  4. $i = 1;
  5. while($rek = mysql_fetch_array($answ)) {
  6.   echo  "<input type='hidden' name='cat_parent' />";
  7.   echo  "<option value='" . $i++ . "'onclick=''>" . $rek[cat_name] . "</option>";
  8.  
  9.  #var_dump ($rek);
  10. }  
  11. ?>


Tutaj się robi jakiś dziwny mish mash :/
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Próbuje na różne sposoby z tym <input type="hidden" /> ale gdzie to trzeba dać?

W formularz (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Podstawy HTML się kłaniają.
Go to the top of the page
+Quote Post
majestiq
post
Post #13





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Nie no jasne, ze jest w formularzu.
Zasugerowałeś się fragmentem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

  1. <FORM method="post">
  2. <p style="font-size:10px; color:#000; font-family:arial;">Nowa kategoria:</p><BR><INPUT name="cat_name" type="text" size="55"><BR>
  3. <p style="font-size:10px; color:#000; font-family:arial;">Kategoria nadrzędna:</p><BR>
  4. <select name="sortby" style="vertical-align:middle">
  5.  
  6.  
  7. <?php
  8. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  9. $answ = mysql_query($wypisz, $conn);
  10. $i = 1;
  11. while($rek = mysql_fetch_array($answ)) {
  12.   echo  "<input type='hidden' name='cat_parent' />";
  13.   echo  "<option value='" . $i++ . "'onclick=''>" . $rek[cat_name] . "</option>";
  14.  
  15.  #var_dump ($rek);
  16. }  
  17. ?>
  18.  
  19.  
  20. </select><BR>    
  21. <INPUT name="submit" type="submit" value="Dodaj">
  22. </FORM>
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://www.w3.org/TR/html401/interact/forms.html#h-17.4
Go to the top of the page
+Quote Post
majestiq
post
Post #15





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


No to skoro tam nie może być ten input to gdzie go umieścić ?
Go to the top of the page
+Quote Post
mike
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Poza tagiem <select> ale nadal wewnątrz <form>.
Go to the top of the page
+Quote Post
shark121
post
Post #17





Grupa: Zarejestrowani
Postów: 62
Pomógł: 5
Dołączył: 31.03.2008

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


to nie ważne gdzie on będzie przecież... i tak go nie widać
Go to the top of the page
+Quote Post
majestiq
post
Post #18





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


No ale jak on ma mi przekazac niby to id (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

  1. <?php
  2. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  3. $answ = mysql_query($wypisz, $conn);
  4. $i = 1;
  5. while($rek = mysql_fetch_array($answ)) {
  6.  
  7.   echo  "<option value='" . $i++ . "'onclick=''>" . $rek[cat_name] . "</option>";
  8.  
  9.  #var_dump ($rek);
  10. }  
  11. ?>
  12. </select>
  13. <input type='hidden' name='cat_parent' value='<?php  ?>'/>
  14. <BR>    
  15. <INPUT name="submit" type="submit" value="Dodaj">
  16. </FORM>



Chyba w VALUE trzeba coś wpisać ?
Kurde, już nie mam siły do tego.
Go to the top of the page
+Quote Post
shark121
post
Post #19





Grupa: Zarejestrowani
Postów: 62
Pomógł: 5
Dołączył: 31.03.2008

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


(IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) tak jak już ktoś wcześniej napisał, podstawy html się kłaniają
Go to the top of the page
+Quote Post
majestiq
post
Post #20





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


  1. <?php
  2. $nazwa = $_POST['sortby'];
  3.  
  4. $wypisz = "SELECT * FROM kategorie WHERE 1 ";
  5. $answ = mysql_query($wypisz, $conn);
  6. $i = 1;
  7. while($rek = mysql_fetch_array($answ)) {
  8.  
  9.   echo  "<option value='" . $i++ . "'onclick=''>" . $rek[cat_name] . "</option>";
  10.  
  11. #print_r ($rek);
  12. }  
  13. ?>
  14. </select>
  15. <input type='hidden' name='cat_parent' value="<?php $nazwa ?>" />
  16. <BR>    
  17. <INPUT name="submit" type="submit" value="Dodaj">
  18. </FORM>


Byłoby już ok, tylko nie wiem czemu nie widzi mi zmiennej w tym inpucie:

  1. <input type='hidden' name='cat_parent' value="<?php $nazwa ?>" />

Jak dam print_r ($nazwa) to widzi w tej lokalizacji tą zmienną, ale nie wiem czemu jej nie chce wstawić do value (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował majestiq 23.12.2008, 15:46:01
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 24.10.2026 - 00:23