Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
01.09.2012 19:20:54
[SOLVED]Vajan abi PHP dropdown listiga |
|
|
vaja on teha nii et kui valid dropdown menust asja siis l2htuvalt sellest mis valid annab ta andmed andmebaasist
hetke olen kahte moodi proovinud
Spoiler 
<form id="form1" name="form1" method="post" action="">
<?php
$county = array (´Kent´,´West Susses´,´East Sussex´,´Sommerset´,´Hampshire´,´London´,´Essex´);
$hear = array (´Google´,´Other Search Engine´,´Magazine´,´Recommendation´);
?>
<?php
function createDropdown($arr, $frm) {
echo '<select name="'.$frm.'" id="'.$frm.'"><option value="">Select one…</option>';
foreach ($arr as $key => $value) {
echo '<option value="'.$value.'">'.$value.'</option>';
}
echo '</select>';
}
?>
<form id="form1" name="form1" method="post" action="">
<label for="frmcounty">County:</label>
<label for="frmhowhear">How did you hear about us?:</label>
</form>
teine nii
Spoiler 
<form id="form1" name="form1" method="post" action="">
<?php
$valitoo = array(
'Kerjus' => 1,
'Pudelikorjaja' => 2,
'Tööline' => 3
// 'Turvamees' => 4
// 'Torumees' => 5
// 'Kokk' => 6
// 'Puskarimüüja' => 7
// 'Pedagoog' => 8
// 'Politseinik' => 9
// 'Ehitaja' => 10
// 'Raamatupidaja' => 11
// 'Peakokk' => 12
// 'Terrorist' => 13
// 'Jurist' => 14
// 'Kirurg' => 15
// 'Ärimees' => 16
// 'Aktsionär' => 17
// 'Programmeerija' => 18
// 'Kooli direktor' => 19
// 'Riigikogulane' => 20
// 'Peaminister' => 21
// 'Õiguskantsler' => 22
// 'Näitleja' => 23
);
echo $valitoo;
?>
</form>
kui saaks kõige lihtsamalt öeldes kasvõi echo sellest listist siis ülejäänud on juba l2bi muutuja
mul lihtsalt jääb midagi kahe silma vahele vist
_________________

viimati muutis Murtpoiss 14.09.2012 12:17:49, muudetud 1 kord |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
01.09.2012 21:47:53
|
|
|
listist echo saad ju samamoodi nagu esimese näitega, kas foreach loop või debugimiseks print_r($valitoo)
Kui ekraanile saamist mõtled, siis esimesel juhul on nii
html:
|
<form id="form1" name="form1" method="post" action=""> <label for="frmcounty">County: </label><?createDropdown($country, 'country')?> <label for="frmhowhear">How did you hear about us?: </label><?createDropdown($hear, 'hear')?> </form>
|
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
05.09.2012 20:34:35
|
|
|
Raske on öelda miks kood ei tööta kui pole kirjeldust, mida see kood üldse tegema peab. Ehk küsimust esitades püüa täpsem olla(btw, see on ka peamine põhjus, miks foorumis algajate küsimustele tihti vastata ei viitsita - kui inimene ei viitsi isegi nii palju vaeva näha, et probleem/küsimus täpselt sõnastada, miks peaks siis teised viitsima vaeva näha nuputamisega mida küsija teada tahab)..
Sellise "spageti" haldamine kasvab sul varsti üle pea. Kui tahad koodi lühemaks ja loetavamaks saada, tõsta funktsionaalsus eraldi klassidesse või kui see esialgu liiga keeruline tundub, siis vähemalt funktsioonidesse. Kood näeks juba siis palju parem välja kui see oleks midagi sellist:
php:
|
$playerinfo =get_playerinfo($player); $levelinfo =get_levelinfo($player); $tooteinfo =get_tooteinfo($toodanguinfo); set_hetkeexper($player,$levelinfo);
|
jne.
Dropdowni täitmiseks oleks kood umbes selline:
php:
|
$q ="SELECT id, nimetus from tooted "; { $values[$r['id']]=$r['nimetus']; } ?> <select name="dropdownname"> <?foreach($values as $k=>$v){?> <option value="<?=$k?>"><?=$v?></option> <?}?> </select>
|
aga see jääb sulle koduseks ülesandeks, kuidas createDropdown funktsiooni muuta ja asi natuke viisakamaks teha.
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
07.09.2012 14:39:34
|
|
|
Murtpoiss, loetavuse huvides ära pane HTML'i ja PHP'd niimoodi segamini. Tee parem PHP sees echo või muu soovitud viisiga väljastamine.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
07.09.2012 15:02:48
|
|
|
mikk36 kirjutas: |
Murtpoiss, loetavuse huvides ära pane HTML'i ja PHP'd niimoodi segamini. Tee parem PHP sees echo või muu soovitud viisiga väljastamine. |
ok selle tegin korda
kuigi erilist vahet pole sellel kas seal on vahel echo v6i on php l6pp ja algus
_________________
 |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
07.09.2012 17:41:52
|
|
|
Midagi sellist pidasin silmas. Vaid kaks php plokki.
php:
|
<form action="house.php" method="post"> <div id="con_div"> <table cellpadding="5" cellspacing="10"> <tr> <td>Vali elukoht:</td> <td> <select name="valimaja"> <option id="0">-- Vali elukoht --</option> <?php echo " <option id=\"{$maja['id']}\">{$maja['nimetus']}</option>\n"; } ?> </select> </td> <td> <?php if(isset($_POST['valimaja'])) { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/> <input type=\"submit\" name=\"osta\" value=\"Osta\"/>\n"; } else { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/>\n"; }
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
07.09.2012 18:49:35
|
|
|
Ma nüüd ei tea, kas sel mingit erilist vahet on, kuid ise eelistan võimalikult vähe escapeda jutumärke, kood näev palju mõistlikum välja.
echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/>
<input type=\"submit\" name=\"osta\" value=\"Osta\"/>\n"; |
echo ' <input type="submit" name="vaata" value="Vaata"/>
<input type="submit" name="osta" value="Osta"/>'."\n"; |
Edit:
tegelikult siin on vahe küll, ennem ei märganud \n toimib ainult topeltjutumärkide sees. Kuigi milleks seda üldse sinna panna seda ma ei tea?
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
07.09.2012 20:21:27
|
|
|
andrusny, selleks, et pärast html ka ilus oleks lugeda endal.
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
07.09.2012 21:47:28
|
|
|
Sa mõtled kood näeks kena välja? Mille paganaga sa siis seda koodi kirjutad, mul Notepad++ salvestab kül reavahetused ise ja ka teised editorid on sellega kenasti toime tulnud.
selliselt kirjutatud kood on kenasti üksteise all source s vaadatuna
echo '<input type="submit" name="osta" value="Osta"/>
<input type="submit" name="osta" value="Osta"/>
<input type="submit" name="osta" value="Osta"/>'; |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
08.09.2012 01:25:47
|
|
|
aga siiski mu endise kysimuse juurde tagasi ...
kuias ma saan s2ttida nii et kui lehele tuled on selected 0 ja kui 2ra valid j22b selected see mis ise valisid ning seda seni kui lehelt lahkud v6i kui vajutad osta
_________________
 |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
08.09.2012 10:37:50
|
|
|
andrusny, tee teine samasugune echo veel ja kaks inputi on üksteise järgi.
Murtpoiss, midagi sellist ehk?
Muutsin optionitel id value'ks et PHP'le siis vastav valik ka edastataks. Lisasin ka kontrolli sinna väljastamise keskele, et võrreldaks valiku väärtust hetkel väljastatava maja id'ga ja vajaduse korral siis väljastatakse märksõna "selected", mis muudab selle aktiivseks. Kui sul on vaja miskit vingemat meelespidamist, siis peab selle eraldi välja aretama, praegune versioon on ülilihtne ja säilib vaid senikaua, kuni house.php lehel asuda.
Lisaks panin allaotsa lisakontrolli, et see väli alati aktiivseks ei muutuks. Isegi esimese valiku korral muutus see varem aktiivseks.
php:
|
<form action="house.php" method="post"> <div id="con_div"> <table cellpadding="5" cellspacing="10"> <tr> <td>Vali elukoht:</td> <td> <select name="valimaja"> <option value="0">-- Vali elukoht --</option> <?php echo " <option value=\"{$maja['id']}\">{$maja['nimetus']}"; if(isset($_POST['valimaja'] && intval($_POST['valimaja']) == $maja[id ]) { } } ?> </select> </td> <td> <?php if(isset($_POST['valimaja']) && intval($_POST['valimaja'] != 0) { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/> <input type=\"submit\" name=\"osta\" value=\"Osta\"/>\n"; } else { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/>\n"; }
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
08.09.2012 13:37:10
|
|
|
tsitaat: |
Muutsin optionitel id value'ks et PHP'le siis vastav valik ka edastataks. |
Ma siin vaatasin, et kaks pea sarnast teemat hetkel ja mõlemal on puudu option sees value. Hakkasin siis huvipärast proovima ja ta on vägagi nõus saatma andmeid ka ilma value kasutamata, saadetakse lihtsalt option sisu. Kas see on nüüd uuema php ga tekkinud või oli selline variant kogu aeg?
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
08.09.2012 19:39:15
|
|
|
See on kogu aeg olnud ja php-ga pole see kuidagi seotud, puhas browseri teema. Value on selleks, et saaks näidata inimesele loetavat teksti ja saata masinale midagi muud näiteja <option value="112884">Roheline maja</option>
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
12.09.2012 19:54:54
|
|
|
mikk36 kirjutas: |
andrusny, tee teine samasugune echo veel ja kaks inputi on üksteise järgi.
Murtpoiss, midagi sellist ehk?
Muutsin optionitel id value'ks et PHP'le siis vastav valik ka edastataks. Lisasin ka kontrolli sinna väljastamise keskele, et võrreldaks valiku väärtust hetkel väljastatava maja id'ga ja vajaduse korral siis väljastatakse märksõna "selected", mis muudab selle aktiivseks. Kui sul on vaja miskit vingemat meelespidamist, siis peab selle eraldi välja aretama, praegune versioon on ülilihtne ja säilib vaid senikaua, kuni house.php lehel asuda.
Lisaks panin allaotsa lisakontrolli, et see väli alati aktiivseks ei muutuks. Isegi esimese valiku korral muutus see varem aktiivseks.
php:
|
<form action="house.php" method="post"> <div id="con_div"> <table cellpadding="5" cellspacing="10"> <tr> <td>Vali elukoht:</td> <td> <select name="valimaja"> <option value="0">-- Vali elukoht --</option> <?php echo " <option value=\"{$maja['id']}\">{$maja['nimetus']}"; if(isset($_POST['valimaja'] && intval($_POST['valimaja']) == $maja[id ]) { } } ?> </select> </td> <td> <?php if(isset($_POST['valimaja']) && intval($_POST['valimaja'] != 0) { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/> <input type=\"submit\" name=\"osta\" value=\"Osta\"/>\n"; } else { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/>\n"; }
|
|
esiteks on siit mingi hunnik sulge puudu ... millest ma ei saa aru et kas ei peagi olema v6i kas on mingid asjad yle v6i lihtsalt sulud puudu ...
ja teiseks see ei t66ta ikkagi ... nüüd on isegi nii et kui vajutada vaata ei tule andmeid lehele ka enam ...
pmtl v6in ma nii ka teha et ma ei v6ta neid andmeid tabelist aga sel juhul ma peaksin saama igale valikule kirjutada veel andmeid juurde ...
kuidas kellegi arvates oleks lihtsam selline asi yldse teha ???
mis teie arvate ?
_________________
 |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
12.09.2012 22:09:31
|
|
|
Selliselt peaks töötama, selected oli valesse kohta kirjutatud lihtsalt.
php:
|
<form action="?" method="post"> <div id="con_div"> <table cellpadding="5" cellspacing="10"> <tr> <td>Vali elukoht:</td> <td> <select name="valimaja"> <option value="0">-- Vali elukoht --</option> <?php echo '<option value="'. $maja['id']. '"'; if(isset($_POST['valimaja']) && intval($_POST['valimaja']) == $maja['id']) { } echo '>'. $maja['nimetus']. '</option>'; } ?> </select> </td> <td> <?php if(isset($_POST['valimaja']) && intval($_POST['valimaja'] != 0)) { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/> <input type=\"submit\" name=\"osta\" value=\"Osta\"/>\n"; } else { echo " <input type=\"submit\" name=\"vaata\" value=\"Vaata\"/>\n"; } ?> </form> </td></tr></table>
|
_________________

viimati muutis andrusny 13.09.2012 17:11:52, muudetud 2 korda |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
13.09.2012 12:14:54
|
|
|
Oih, natuke mööda oli jah asukoht
andrusny, miks iga koodirea järel tühi rida?
Ja "selected"-i ette oleks ilus ikkagi tühik ka panna, et ei oleks nii: '<option value="1"selected>asd</option>
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
13.09.2012 12:22:41
|
|
|
Ma ei teagi miks, kopeerisin siit koodi oma teksti editori ja oligi sedasi, ei hakanud muutma. Küllap need nähtamatud \r\n realõppudes.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
13.09.2012 17:14:13
|
|
|
Selliselt äkki, sa tahad vist kuvada ikka seda, mille sa oled valinud ja saatnud juba.
<?php
if(isset($_POST['valimaja'])){
echo $_POST['valimaja'];
}
?> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
13.09.2012 17:19:24
|
|
|
andrusny kirjutas: |
Selliselt äkki, sa tahad vist kuvada ikka seda, mille sa oled valinud ja saatnud juba.
<?php
if(isset($_POST['valimaja'])){
echo $_POST['valimaja'];
}
?> |
|
reaalselt seda jah ... aga peale selle nimetuse mis valikust valid on tabelis veel hind ja hoiusmax ... kas ma pean tegema sellejaoks uue p2ringu siis ning tegema uue muutuja
<?php
if(isset($_POST['valimaja'])){
$vmaja_get = mysql_query("SELECT * FROM `maja` WHERE `nimetus`='".$_POST['valimaja']."'") or die(mysql_error());
$vmaja = mysql_fetch_assoc($vmaja_get);
}
echo $vmaja['hind'];
}
?> |
aga kas ma saan lihtsalt nii et ma panen lehe p2isesse p2ringu ning kasutan lehel $vmaja ?
_________________
 |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
13.09.2012 17:32:13
|
|
|
Kõik asjad on ühes tabelis? Siis pole mõtet vast kogu kraami saata saad $_POST['valimaja'] kaudu tabeli id kätte ja teed selle id peale uue päringu ning saad kogu kupatuse,mis vaja on
$id = $_POST['valimaja'];
$maja_get = mysql_query("SELECT * FROM `maja` WHERE id = $id");
while($maja = mysql_fetch_array($maja_get))
// siin võtad kõik vajalikud asjad välja
} |
tsitaat: |
aga kas ma saan lihtsalt nii et ma panen lehe p2isesse p2ringu ning kasutan lehel $vmaja ? |
Kui sul on ainult üherealine päring, siis küll, kui on mitu rida, siis jääb sul sinna sisse ainult viimane rida ju.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Murtpoiss
HV kasutaja

liitunud: 07.12.2010
|
14.09.2012 12:17:29
|
|
|
okey ...
t2nud k6igile kes aitasid ... Tööle sain l6puks selle
_________________
 |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
|