[php][mysql]Lista rozijana + input

Wszystko o językach skryptowych takich jak PHP i Perl, serwerach WWW, CGI, bazach danych i języku SQL.
rafi-vir
Posty: 4
Rejestracja: 05 sty 2015, 19:00:07
Płeć: Niewybrana
User Agent: Chrome Windows 1680x1050

[php][mysql]Lista rozijana + input

Post autor: rafi-vir »

Witam,
Mam bazę w mysql, a w niej 1 tabelę o nazwie miejscowosc. Tabela ma 3 pola: id, nazwa, odleglosc. Strona napisana w php łączy się z bazą. Mam taki kod:
<tr>
<td>Miejscowość:</td>';
$sql = mysql_query("SELECT id, nazwa FROM miejscowosc ORDER BY nazwa ASC");
echo' <td><select name="miejscowosc_nazwa">';
while($row = mysql_fetch_assoc($sql))
{
echo' <option value="'.($row['nazwa']).'">'.$row['nazwa'].'</option> ';
}
echo "</select>";
echo' </tr>
<tr>
<td>Odległoœść:</td>';
$odleglosc = $_POST['miejscowosc_nazwa'];
$sql = mysql_query("SELECT id, nazwa, odleglosc FROM miejscowosc WHERE nazwa='$odleglosc'");
echo' <td><input type="text" value="'.$_POST['odleglosc'].'" name="odleglosc"></td>
</tr>


Pierwsza część, która dotycz miejscowości i listy rozwijanej działa, miejscowości pobierane są z bazy. Problem jest z tym, że po wybraniu odpowiedniej miejscowości z listy rozwijanej w polu input nie pojawiła się odpowiednia odległość, która jest zapisana w bazie. Dlatego w chce to zrobić w polu input, żeby móc ją (w razie czego) korygować. Da to się jakoś zrobić?
mdwebbuilder
Posty: 49
Rejestracja: 06 wrz 2015, 18:46:57
Płeć: Niewybrana
User Agent: Firefox Windows 1920x1080

[php][mysql]Lista rozijana + input

Post autor: mdwebbuilder »

Witam,
jak pisałem w temacie: viewtopic.php?f=17&t=28461, nie używam baz danych, ale to wygląda mi na prosty błąd w PHP.
Zamiast:

Kod: Zaznacz cały

$sql = mysql_query("SELECT id, nazwa, odleglosc FROM miejscowosc WHERE nazwa='$odleglosc'");
powinno być moim zdaniem:

Kod: Zaznacz cały

$sql = mysql_query("SELECT id, nazwa, odleglosc FROM miejscowosc WHERE nazwa='".$odleglosc."'");
Później zaś mam pewną wątpliwość: czy w formularzu występuje pole o id='odleglosc'?
Jeżeli nie, to nic nie zostaje wstawione w atrybut "value" w polu o atrubucie name='odleglosc' i pole jest domyślnie puste (a NA PEWNO NIE ZAWIERA wartości z bazy danych).
W zamian należy "wyłuskać" ze zmiennej $sql wartość pola bazy danych o nazwie 'odleglosc' i wstawić ją do atrubutu "value". Niestety jako osoba nie używająca baz danych nie wiem, jak to zrobić.... :wink:
Wydaje mi się też, że formularz po wybraniu wartości z listy typu "<select></select>" nie zostaje automatycznie wysłany, stąd nie istnieje w ogóle zmienna $_POST['miejscowosc_nazwa']. Należy wysłać go za pomocą:

Kod: Zaznacz cały

<input type='submit'>
Uwzględnienie tych porad powinno pomóc.
Pozdrawiam
MD
ODPOWIEDZ