• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP Lista rozwijana, brak wyświetlania tekstu

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,545 wizyt
pytanie zadane 26 marca 2017 w PHP przez sobi94 Początkujący (270 p.)

Witam. Chcę stworzyć listę, na której będzie można wybrać produkt. Jeżeli się go wybierze z listy i zatwierdzi, to wysyła się do następnego skryptu dane jak nazwa produktu i cena. Stworzyłem prostą listę (wklejam skrypt):
 

<?php

require_once "dbconnects.php";
		 
$polaczenie = @new mysqli($host, $user, $password, $database);

$rezultat = @$polaczenie->query(
sprintf("SELECT * FROM sprzedawcy "));

echo '<select name="publikacja">';

echo '<option value="">Wybierz Publikację</option>';

while($option = mysqli_fetch_assoc($rezultat)) {

echo '<option value="'.$option['email'].'">'.'</option>';

}

echo '</select>';

?>

No i...mam problem z wyświetlaniem. Niby łączy się z bazą, jest wszystko ok , zwraca odpowiednią ilość wersów ale nie ma w ogóle napisów, są puste pola. Jeżeli zmienię w skrypcie zmienną na cenę (a zależy mi na wyświetlanie nazwy) to działa normalnie. Dlaczego znaków mi nie wyświetla a cyfry owszem?

 

komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)

Dołożyłem formularz, by dane wybrane z listy wysyłał mi metodą POST do drugiego skryptu. Niestety nie odbieram ich. Jakieś sugestie?
Kod: 
 

<?php

require_once "dbconnects.php";
		 
$polaczenie = @new mysqli($host, $user, $password, $database);

$rezultat = @$polaczenie->query(
sprintf("SELECT * FROM sprzedawcy "));

echo '<form action="kupno.php" method="post">';

echo '<select name="publikacja">';

echo '<option value="">Wybierz Publikację</option>';

while($option = mysqli_fetch_assoc($rezultat)) {

echo '<option value='.$option['id'].'>'.$option['sprzedawca'].'>'.$option['cena']."zl".'</option>';

}


echo '</select>'."<br>";
echo '<input type="hidden" name="cena" value='.$option['cena'].'>';
echo '<input type="hidden" name="sprzedawca" value='.$option['sprzedawca'].'>';
echo '<input type="hidden" name="id" value='.$option['id'].'>';
echo '<input type="submit" value="Kup">';
echo '</form>';

$polaczenie->close();
?>

 

komentarz 26 marca 2017 przez Fenix Nałogowiec (26,750 p.)

Musisz sprawdzić czy masz coś w zmiennej globalnej POST po przesłaniu formularzu, i na podstawiało tego co przyszło podejmować dalsze działania.

komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
edycja 26 marca 2017 przez sobi94

Sprawdzałem. Nie przesyła mi właśnie ;/ Dlaczego?

EDIT:
Okej, udało mi się skończyć. Dorzucam skrypt:
 

<?php

require_once "dbconnects.php";
		 
$polaczenie = @new mysqli($host, $user, $password, $database);

$rezultat = @$polaczenie->query(
sprintf("SELECT * FROM sprzedawcy "));

echo "Wybierz ";

echo '<form action="kupno.php" method="post">';

echo '<select name="XXX">'."<br>";



while($option = mysqli_fetch_assoc($rezultat)) {

echo '<option value='.$option['id'].'>'.$option['sprzedawca'].'>'.$option['cena']."zl".'</option>';

}


echo '</select>'."<br>";
echo '<input type="submit" value="Kup">';

echo '</form>';
?>

By odebrać zmienne wysłane przez ten skrypt, odbieramy w pliku wykonawczym zmienną $_POST XXX. Za pomocą echo wyświetli nam ID wybranego katalogu/produktu etc. więc należy dalej skojarzyć z tablicą po id i wyświetlić resztę zmiennych

2 odpowiedzi

0 głosów
odpowiedź 26 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Są puste pola ponieważ value w option, to nie jest wartość która jest pokazywana. Robi sie to za pomocą <option>Tutaj nazwa</option>
1
komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
Czyli ma to wyglądać tak? :

'<option value="''">'.$option['email'].'</option>'
komentarz 26 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Tak, tylko value jest potrzebne do przekazania wartości, jest to jego wartość a nie nazwa.

Np masz masz wybór imion:

<option value="1">Monika</option>

<option value="2">Karolina</option>

gdzie Monika w db jest zapisana pod id 1 a name ma oczywiście Monika
komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
Dzięki, działa!
komentarz 26 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Nie ma problemu, warto przeczytać docs'y na temat elementów których sie uzywa. Wszystko ładnie opisane/
komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
To teraz trochę inaczej. Chcę tę listę wykorzystać do formularza. Czy mogę zrobić formularz zawierający tę listę i po wyborze odpowiedniego produktu, przesłać nazwę i cenę?
komentarz 26 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Tak możesz, podać id (jako value) które bedzie id produktu w bazie danych. A tam popowinienes miec podpiete pod to cene + nazwe. Wiec łatwo Ci bedzie je pobrać i przetworzyć.
komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
Okej, biorę się za pisanie, dzięki za pomoc!
0 głosów
odpowiedź 26 marca 2017 przez mtk3d Nałogowiec (46,690 p.)
Bo wpisujesz jedynie wartość, bez nazwy. Pomiędzy znacznikami option, tam gdzie masz '.' musisz wyświetlić nazwę.
komentarz 26 marca 2017 przez sobi94 Początkujący (270 p.)
Czy w value mogę wsadzić cenę również pobraną z bazy danych i przesłać w ten sposób to dalej?

Podobne pytania

0 głosów
3 odpowiedzi 1,128 wizyt
pytanie zadane 8 grudnia 2016 w PHP przez wanderer Gaduła (3,710 p.)
0 głosów
1 odpowiedź 607 wizyt
pytanie zadane 23 września 2016 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)
0 głosów
1 odpowiedź 8,867 wizyt
pytanie zadane 1 lutego 2017 w HTML i CSS przez Max Vanach Nowicjusz (150 p.)

93,088 zapytań

142,046 odpowiedzi

321,473 komentarzy

62,435 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...