Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ustawienie w select na odpowiednim polu
Forum PHP.pl > Forum > Gotowe rozwiązania
lsasza
Witam!
Powiem tak mam dwie tabele dostawcy i kod (pocztowy oczywiście)
w tabeli dostawcy mam pole z kodem (oczywiscie jako id_kod z tabeli kod)
teraz mam problem tego typu że jak chcę wyedytować te dane to nie wiem jak zrobić żeby kursor w polu wyboru był już ustawiony no kodzie wczesniej podanym
Chciałem zrobić to tak ale nie działa :
pierwsza czesc
Kod
$wynik = mysql_query("SELECT * FROM dostawcy WHERE id_dostawcy = $id_dostawcy;") or die ("Błąd w pytaniu 1");



      while ($rekord = mysql_fetch_array ($wynik)) {

        $id_dostawcy = $rekord[0];

        $nazwa = $rekord[1];

        $ulica = $rekord[2];

        $kod = $rekord[3];

        $miejscowosc = $rekord[4];

        $mail = $rekord[5];

        $telefon = $rekord[6];

i dalej jest tak
Kod
<select name="kod" >

    

     <? $wynik = mysql_query ("SELECT * FROM kod;") or

        die ("błąd w pytaniu");



      while ($rekord_kod = mysql_fetch_array ($wynik)) {

        $id_kod = $rekord_kod['id_kod'];

        $kod2 = $rekord_kod['kod'];

?>



<option <? if($rekord['kod']==$rekord_kod['id_kod']) { echo "selected"; } ?>value="<? echo $rekord_kod['kod']; ?>">



<? echo $rekord_kod['kod'];

}

?>    </select></td>



co tutaj jest nie tak pomóżcie bo jestem początkujący smile.gif
Jabol
Cytat
Kod
$wynik = mysql_query("SELECT * FROM dostawcy WHERE id_dostawcy = $id_dostawcy;") or die ("Błąd w pytaniu 1");



      while ($rekord = mysql_fetch_array ($wynik)) {

        $id_dostawcy = $rekord[0];

        $nazwa = $rekord[1];

        $ulica = $rekord[2];

        $kod = $rekord[3];

        $miejscowosc = $rekord[4];

        $mail = $rekord[5];

        $telefon = $rekord[6];
Tutaj na pewno masz błąd. Używasz mysql_fetch_array a widząc w jaki sposób wyciągasz dane powinieneś użyć mysql_fetch_row
Tam dalej coś masz całkiem namieszane. Może mógłbym ci lepiej pomóc gdybyś pokazał tutaj strukture tych tabel oraz powiedział dokładnie co chcesz zrobić
lsasza
Kod
Struktura tabel:

Dostawcy:

   ID_dostawcy int(5) unsigned zerofill NOT NULL auto_increment,

  nazwa varchar(30) NOT NULL default '',

  ulica varchar(20) NOT NULL default '',

  kod int(5) unsigned NOT NULL default '0',

  miejscowosc int(5) unsigned NOT NULL default '0',

  mail varchar(30) NOT NULL default 'brak',

  telefon varchar(20) NOT NULL default 'brak',

  PRIMARY KEY  (ID_dostawcy),

  UNIQUE KEY ID_dostawca (ID_dostawcy)

TYPE=MyISAM CHECKSUM=1 DELAY_KEY_WRITE=1;

Kod

id_kod int(5) unsigned zerofill NOT NULL auto_increment,

  kod varchar(6) NOT NULL default '',

  PRIMARY KEY  (id_kod),

  UNIQUE KEY id_kod (id_kod)

) TYPE=MyISAM;



    

chodzi mi o to ze jak wyswietlam dane w formularzu który będzie edytował dostawców to zeby w liscie wyboru był ustawiony kod pocztowy, który faktycznie dostawca ma a nie pierwszy z brzegu smile.gif mam nadzieje ze teraz powiedziałem to jasniej niz wczesniej smile.gif
Jabol
A po co chcesz mieć wszystkie kody pocztowe wypisane? Nie łatwiej byłoby zmienić to pole na pole do którego wpisujesz kod pocztowy!
A jeżeli wolisz jednak mieć tą tablicę kodów, to proponuje wybrać kod który ma dostawca
Kod
SELECT kod from kod WHERE kod_id=(SELECT kod_id FROM Dostawcy WHERE ID_dostawcy=$id_dostawcy)
Możesz zastąpić podselecta (Drugi select wzięty w () w środku zapytania) wyciągniętą przedtem zmienną.
To ma pewne zalety bo podejrzewam, że jest troche wydajniejsze a po drugie kod (aktualny) dostawcy jest na pierwszym miejscu w liście.
Potem robisz zwykłe wypisanie innych kodów za pomocą while i zapytania
Kod
SELECT kod FROM kod WHERE kod<>$wybrany_przedtem_kod_lub_podselect_podobny_do_poprzedniego
lsasza
Tzn w moim pierwszym poście ta pierwsza część działa, chodzi mi bardziej o tą drugą część dokładniej to napisze. W momencie gdy wyświetlam tabele to wszystko jest ok (czyli wyświetla mi się żę dany dostawca ma takąnazwę taki kod itd.) , tylko np. jak zmieni się adres dostawcy to pasuje go zmodyfikować ale nie zaglądając do bazy tylko ze strony. Wtedy dane typu nazwa dostawcy o odpowiednim ID wyświetlam w polach <input> co działa np
Kod
<td>

&&&<INPUT TYPE="text" NAME="nazwa" value="<?echo "$nazwa"?>">

</td>

żeby można je było zmienić i zrobić UPDATE tabeli dostawcy o danym ID. Tak samo chcę zrobić z kodem tylko nie chcę go wyświetlać w polu <input> a wybrać z listy <select><option>tylko żeby na początku był już ustawiony kod który już dostawca miał przypisany do siebie(czyli żeby już ten kod był wybrany i ewentualnie żebym mógł wybrać inny.
Bardziej chodzi mi o tą część kodu
Kod
<select name="kod" >

    

     <? $wynik = mysql_query ("SELECT * FROM kod;") or

        die ("błąd w pytaniu");



      while ($rekord_kod = mysql_fetch_array ($wynik)) {

        $id_kod = $rekord_kod['id_kod'];

        $kod2 = $rekord_kod['kod'];

?>



<option <? if($rekord['kod']==$rekord_kod['id_kod']) { echo "selected"; } ?>value="<? echo $rekord_kod['kod']; ?>">



<? echo $rekord_kod['kod'];

}

?>    </select></td>


tak dokładniej to o pole <option>

a tak wogóle to dzięki smile.gif
Jabol
select... niech ja sobie przypomne co to było... czy to nie była lista rozwijalna albo coś takiego?? Proponuje ci zastosować
Kod
<input type="radio" name="kod" />tutaj kod<br />
Bo w seleccie można za pomocą CTRL'a wybrać pare opcji.
Proponuje więc tak:[php:1:630d38319b]<?php
$wynik = mysql_query ("SELECT id_kod, kod FROM kod;") or
die ("błąd w zapytaniu");
while (list($kod_id, $kod_kod) = mysql_fetch_array ($wynik)) {
?>
<input type="radio" name="kod" <?php if($kod_id==$kod/*przypomnij sobie nazwe użytej zmiennej*/) {
echo "selected="selected"";
} ?>value="<?php echo $kod_kod; ?>" />
<?php echo $kod_kod.'<br />';
}
?>[/php:1:630d38319b]lub jeśli wolisz select to[php:1:630d38319b]<select name="kod"><?php
$wynik = mysql_query ("SELECT id_kod, kod FROM kod;") or
die ("błąd w zapytaniu");
while (list($kod_id, $kod_kod) = mysql_fetch_array ($wynik)) {
?>
<option <?php if($kod_id==$kod/*przypomnij sobie nazwe użytej zmiennej*/) {
echo "selected="selected"";
} ?>value="<?php echo $kod_kod; ?>">
<?php echo $kod_kod, "</option>";
}
?></select>[/php:1:630d38319b]
lsasza
o to własnie chodziło smile.gif dzięki !!!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.