Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Dynamiczny select z DB
wach12
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Witam,
mam problem z dynamicznym formularzem.
Otóż potrzebuję aby name w option selectu był wczytywany z Bazy danych. Rozwiązanie które ja zastosowałem wyświetla mi wszystko w jednej lini jako jeden option.
a potrzebuje efektu:
<select>
<option> rekord 1</option>
<option> rekord 2</option>
<option> rekord 3</option>
<option> rekord x</option>

  1. <script type="text/javascript">
  2. <!--
  3. x = 0;
  4. z = 0;
  5.  
  6. function dodaj(pole){
  7. var a = x++;
  8. var znacznik = document.createElement('select');
  9. znacznik.setAttribute('name', 'skladnik[]');
  10. znacznik.setAttribute('id', 'pcategory');
  11. var opt = document.createElement('option');
  12. opt.value = 'skladnik[]';
  13. opt.innerHTML = ' <?php while($row = mysqli_fetch_array($result)) {echo $row['nazwa_produktu'];} ?>';
  14. opt.selected = true;
  15. znacznik.appendChild(opt);
  16. var b = z++;
  17. var waga = document.createElement('input');
  18. waga.setAttribute('type', 'text');
  19. waga.setAttribute('name', 'waga[]');
  20. var mybr = document.createElement('br')
  21. var pole = document.getElementById(pole);
  22. pole.appendChild(znacznik);
  23. pole.appendChild(waga);
  24. pole.appendChild(mybr);
  25.  
  26. }
  27.  
  28. </script>
  29.  
  30.  


Proszę o pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Po stronie PHP gdzieś na górze wygeneruj sobie tablicę albo json do zmiennej z danych mysqli. A później od linii 11 iterując po tablicy twórz nowe option.
Go to the top of the page
+Quote Post
wach12
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Pomógłbyś mi to napisać ?
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


var dane = <?php json_encode(mysqli_fetch_all($result)); ?>

Na danych https://developer.mozilla.org/en-US/docs/We...s/Array/forEach czy jakakowliek pętla i wrzucasz kod od linii 11.
Go to the top of the page
+Quote Post
wach12
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Nie rozumiem kompletnie javy (IMG:style_emoticons/default/haha.gif) ani JSON

Napisałbyś mi instrukcje dla debili
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Nie java, a javascript.

I nie, ty nie chcesz instrukcji dla debili, ty czekasz poprostu na gotowca.

@viking tak sie zastanawiam jak dlugo jeszcze wytrzymasz (IMG:style_emoticons/default/wink.gif) I nie mowie tu juz tylko o tym jednym watku (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Dzisiaj piąteczek, daję radę (IMG:style_emoticons/default/smile.gif)

Cytat
$a = json_encode(['a', 'b', 'c', 'd']);

echo 'var dane = '. $a;
echo ";var znacznik = document.createElement('select');";
echo 'dane.forEach(function(element) {
var opt = document.createElement(\'option\');
opt.value = \'skladnik[]\';
opt.innerHTML =element;
znacznik.appendChild(opt);
});';


Popraw sobie składnię. A na przyszłość skoro kompletnie nie znasz języka to mamy taki dział Forum: Gielda ofert
Go to the top of the page
+Quote Post
Niree
post
Post #8





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


Tutaj masz gotowy skrypt: http://www.w3schools.com/php/php_ajax_database.asp
Go to the top of the page
+Quote Post
wach12
post
Post #9





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Co robie takiego zle że nie działa poprawnie ?

  1. <script type="text/javascript">
  2.  
  3. <!--
  4.  
  5. $a = json_encode(['a', 'b', 'c', 'd']);
  6.  
  7. function dodaj(pole){
  8.  
  9. var dane = $a;
  10. var znacznik = document.createElement('select');
  11. dane.forEach(function(element) {
  12. var opt = document.createElement('option');
  13. opt.value = 'skladnik[]';
  14. opt.innerHTML =element;
  15. znacznik.appendChild(opt);
  16. });
  17.  
  18. var waga = document.createElement('input');
  19. waga.setAttribute('type', 'text');
  20. waga.setAttribute('name', 'waga[]');
  21. var mybr = document.createElement('br')
  22. var pole = document.getElementById(pole);
  23. pole.appendChild(znacznik);
  24. pole.appendChild(waga);
  25. pole.appendChild(mybr);
  26.  
  27. }
  28.  
  29. </script>
  30.  
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Znasz w ogóle różnicę między PHP a JavaScript? Wkładanie kodu PHP do JS na pewno nie sprawi że zadziała.
Go to the top of the page
+Quote Post
wach12
post
Post #11





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Racja przecierz dodałem
$a = json_encode(['a', 'b', 'c', 'd']);


Po usunieciu kod nadal nie pracuje
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


A jak ma pracować skoro nie ma danych? Poza tym według tego co tu wklejasz całość kodu JS jest zakomentowana.
Go to the top of the page
+Quote Post
wach12
post
Post #13





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Pobiera dane w PHP

  1. <?php
  2. $pdo=new PDO("mysql:dbname=xx;host=localhost","xx","xx");
  3. $stmt = $pdo->query("SELECT nazwa_produktu FROM produkty");
  4. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  5. echo json_encode($results);
  6. $a = json_encode($results);
  7. ?>
  8.  


Skrypt jest odkomentowany tylku tutaj niechcacy z tym wstawilem
Go to the top of the page
+Quote Post
viking
post
Post #14





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


I teraz według ciebie var dane = $a; magicznie przeniesie json z PHPa?
Go to the top of the page
+Quote Post
wach12
post
Post #15





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Dodając w ten sposób:
  1. var dane = <?php echo json_encode($a) ?>;


Nie działa skrypt
Go to the top of the page
+Quote Post
viking
post
Post #16





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


W takim razie uruchom konsolę w przeglądarce i zobacz błędy jakie się w niej pojawiają. Chyba że przez "nie działa skrypt" masz na myśli PHP.
Go to the top of the page
+Quote Post
wach12
post
Post #17





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.11.2016

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


Okej działą już wszystko poprawnie, prawie poprawnie w polu option wyswietla mi nazwe [object Object] ale wyswietla tyle razy ile jest rekordów w sql
Go to the top of the page
+Quote Post

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: 23.12.2025 - 21:58