PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine PHP & MySQL Dünaamiline rippmenüü ainult php'ga

Kokku on 55 postitust, jaotatud 4 leheküljele: 1-2-3-4. Praegu näidatakse postitused 1-15.

Autor Abi Postitus Abi

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
Dünaamiline rippmenüü ainult php'ga

Olen taolise teema kunagi teinud aga ei suutnud enam üles leida. Leidsin ka javascriptiga tehtud menüüsid aga soov teha ainult php põhine kuna javascripti saab välja lülitada, riikide ja linnade nimesid on sadu ning soov panna need omaette andmebaasi.
Sooviks, et riigi valimisel uuendatakse järgmist listi automaatselt ainult selle riigi linnadega.

Üks näide ka, kus sarnane asi hästi lahendatud on:
PHP kood:


// keys are 0, 1, 2
require 'HTML/QuickForm.php';
$form = new HTML_QuickForm();
$meals array('Breakfast''Lunch','Dinner');

// keys of dimension 1 are 0, 1, 2
// keys of dimension 2 are 0, 1, 2
$dishes array(array('Toast','Cold Cereal','Porridge'),
                array(
'Sandwich''Soup','Salad'),
                array(
'Meat and Potatoes','Stir-fried Tofu','Steamed Fish'));


// keys of dimension 1 are 0, 1, 2
// keys of dimension 2 are 0, 1, 2
// keys of dimension 3 are 0, 1
$garnishes array(array(array('Jam','Butter'),
                         array(
'Sugar','Bananas'),
                         array(
'Gruel','More Gruel')),
                   array(array(
'Lettuce','Tomato'),
                        array(
'Crackers','Salt'),
                        array(
'French Dressing','Russian Dressing')),
                   array(array(
'Mustard','Horseradish'),
                         array(
'Soy Sauce','Mustard'),
                         array(
'Ginger','Scallions')));
    
                         

$sel =& $form->addElement('hierselect','food');
$options array($meals$dishes$garnishes);
$sel->setOptions($options);

$form->display();


Sain selle siit http://www.sklar.com/talks/index.php/nyphp-quickform/23

Pole OOP kogemusi niipalju, et suudaks asja tööle saada.
Kopeerisin scripti faili ja panin tööle. Tulemuseks ei näidata ühtegi formi.
Ka ei saa aru, miks seda require 'HTML/QuickForm.php'; vaja on ja mida see sisaldama üldse peab

___________________________________________________
Kui sul pole midagi öelda, ole vait.

17.09.2005 12:14:33 Vajutades siia näed kasutaja mairo22 profiili

laurik
_/<

Postitusi: 847
Tase: 8
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

Vaja on installida PEAR-i Quickform. Kui sul on php oma arvutisse paigaldatud, siis seal php kataloogis peaks olema pear.bat - selle käivitamisel peaks küsitama mõned küsimused ning basic paketid installitama. Kui see tehtud siis käsureal

Koodijupp:
pear.bat install HTML_Quickform


peaks installima selle Quickformi. Sealt saab hiljem vajalikud failid veebikohta kopeerida ning .htaccessi või ini_set-iga tuleb määrata include_path.


17.09.2005 13:17:59 Vajutades siia näed kasutaja laurik profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

HTML/QuickForm.php on
Tsiteeritud tekst:
PEAR::HTML_QuickForm is a way to encapsulate many aspects of dealing with HTML forms in your PHP application.
Ehk siis üks osa PEAR paketist.

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

17.09.2005 13:42:28 Vajutades siia näed kasutaja muidumeez profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Aga kui ma sama asja pärast zerver.ee serversisse kopeerin, jääb see asi ka tööle?
Või peab enne neilt järele uurima, kas neil see pakett installitud on?

Ehk teab keegi lihtsamat varianti, kuidas dünaamilist rippmenüüd tööle saada phpga ainult.

___________________________________________________
Kui sul pole midagi öelda, ole vait.

17.09.2005 15:17:29 Vajutades siia näed kasutaja mairo22 profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Installisin alguls HTML_Commoni ja siis Quickformi kuna tekkisid muidu sõltuvuse probleemid:
Koodijupp:

[root@alpha ~]# pear install HTML_Common
downloading HTML_Common-1.2.2.tgz ...
Starting to download HTML_Common-1.2.2.tgz (4,240 bytes)
.....done: 4,240 bytes
install ok: HTML_Common 1.2.2
[root@alpha ~]# pear install HTML_Quickform
downloading HTML_QuickForm-3.2.5.tgz ...
Starting to download HTML_QuickForm-3.2.5.tgz (97,612 bytes)
......................done: 97,612 bytes
install ok: HTML_QuickForm 3.2.5



Tegin httpd deemonile restardi.
Lasin ülaltoodud koodi käima aga täpselt sama kaugel ajaga - ei teki mingit formi.
Äki on probleem selles require järel olevas tees HTML/.... et peab seda muutma ?

___________________________________________________
Kui sul pole midagi öelda, ole vait.

17.09.2005 15:36:42 Vajutades siia näed kasutaja mairo22 profiili

laurik
_/<

Postitusi: 847
Tase: 8
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

Mul läks see koodijupp tööle küll..

Zerver.ee-s või üldse suvalises kohas saab seda kasutada peale seda, kui oled pear'i kataloogi veebikohta kopeerinud ja lisanud selle include_path'i.

Ning seda ka veel, et tegelikult kasutab antud lahendus siiski javascripti abi... Näide

17.09.2005 16:40:00 Vajutades siia näed kasutaja laurik profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Jäin ka lõpuks siis javascripti jurde pidama kuna kusagilt ainult php põhist varianti ei leidnud ja ülevalolevat ka tööle ei saanud (sh ka zerver.ee keskkonnas).

Tegin midagi sellist:
Koodijupp:

<form action="pakusoitu.php" method="post" name="" id="">
<div>
<table border="0">
<tr>
<td align="right" valign="top"></td>
<td valign="top" align="left"><script type="text/javascript">
//<![CDATA[
hs_food_0 = {
"0":"Haapsalu",
"1":"Pärnu",
"2":"Tallinn",
"3":"Tartu",
"4":"Viljandi"
}
hs_food_1 = {
"0":"Klaipeda",
"1":"Palanga",
"2":"Vilnius"
}
hs_food_2 = {
"0":"Ogre",
"1":"Riia",
"2":"Saldus",
"3":"Talsi",
"4":"Valka"
}
hs_food_3 = {
"0":"Lublin",
"1":"Opole",
"2":"Sileesia"
}
hs_food_4 = {
"0":"Berliin",
"1":"Münhen",
"2":"Weimar"
}
function swapOptions(frm, grpName, eleIndex, nbElements, arName)
{
    var n = "";
    var ctl;

    for (var i = 0; i < nbElements; i++) {
        ctl = frm.form[grpName+'['+i+']'];
        if (!ctl) {
            ctl = frm.form[grpName+'['+i+'][]'];
        }
        if (i <= eleIndex) {
            n += "_"+ctl.value;
        } else {
            ctl.length = 0;
        }
    }

    var t = eval("typeof("+arName + n +")");
    if (t != 'undefined') {
        var the_array = eval(arName+n);
        var j = 0;
        n = eleIndex + 1;
        ctl = frm.form[grpName+'['+ n +']'];
        if (!ctl) {
            ctl = frm.form[grpName+'['+ n +'][]'];
        }
        for (var i in the_array) {
            opt = new Option(the_array[i], i, false, false);
            ctl.options[j++] = opt;
        }
    }
    if (eleIndex+1 < nbElements) {
        swapOptions(frm, grpName, eleIndex+1, nbElements, arName);
    }
}
//]]>
</script><select name="food[0]" onchange="swapOptions(this, 'food', 0, 3, 'hs_food');">
<option value="0">Eesti</option>
<option value="1">Leedu</option>
<option value="2">Läti</option>
<option value="3">Poola</option>
<option value="4">Saksamaa</option>
</select> <select name="food[1]" onchange="swapOptions(this, 'food', 1, 3, 'hs_food');">
<option value="0">Haapsalu</option>
<option value="1">Pärnu</option>
<option value="2">Tallinn</option>
<option value="3">Tartu</option>
</select> <select name="food[2]">
</select></td>
</tr>
</table>
</div>
</form>



Sama asi on üleval ka aadressil http://beta.soida.ee/index.php?page=pakusoitu lehe täiesti allosas

Probleem on selles, et skriptist tegin nö copy-paste ja kui tahan võtta kolmanda select menüü (select name="food[2]") ära, ei tööta script üldse enam. Mida veel muutma peaks, et asi tööle jääks?

Ka tahaks linnade nimed hiljem andmebaasist võtta. Kuidas seda javascriptiga lahendada.

___________________________________________________
Kui sul pole midagi öelda, ole vait.

17.09.2005 21:25:59 Vajutades siia näed kasutaja mairo22 profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Ülaloleva probleemi sain korda aga nüüd järgmine.
Lisasin submit nupu ja kuvasin tulemuse järgmisel lehel.

PHP kood:


$riigid $_POST["food"];
echo 
$riigid[0];



See kuvab mulle kenasti arrays oleva riigi id aga oleks vaja ka teises rippmenüüs oleva linna id'd teada.
proovisin $riigid[1] aga ei anta mulle midagi vastuseks.

___________________________________________________
Kui sul pole midagi öelda, ole vait.

18.09.2005 11:57:57 Vajutades siia näed kasutaja mairo22 profiili

laurik
_/<

Postitusi: 847
Tase: 8
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

Pane lehe algusesse
PHP kood:

print_r($_POST);


See näitab saadetud muutujaid..


18.09.2005 12:24:11 Vajutades siia näed kasutaja laurik profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Valisin esimesel rippmenüül valides teise ja teisel rippmenüül kolmanda valiku ning tuli selline väljund:

Koodijupp:

array ( [food] => array ( [0] => 1 [1] => 2 ) )




Kuidas nüüd need 1 ja 2 ainult kuvada?

EDIT:

Siiski, 10 erinevat varianti läbi proovitud ja sain lõpuks rahuldava tulemuse:

PHP kood:


print_r($_POST[food][0]);
print_r($_POST[food][1]);




___________________________________________________
Kui sul pole midagi öelda, ole vait.

18.09.2005 18:17:57 Vajutades siia näed kasutaja mairo22 profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

foreach() abx

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

18.09.2005 18:22:17 Vajutades siia näed kasutaja muidumeez profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Nüüd edasi järgmise probleemi juurde:

Kuna alljärgnev kood on javascipti põhine:

Koodijupp:

//<![CDATA[
hs_food_0 = {
"0":"Haapsalu",
"1":"Pärnu",
"2":"Tallinn",
"3":"Tartu",
"4":"Viljandi"
}
hs_food_1 = {
"0":"Klaipeda",
"1":"Palanga",
"2":"Vilnius"
}
hs_food_2 = {
"0":"Ogre",
"1":"Riia",
"2":"Saldus",
"3":"Talsi",
"4":"Valka"
}



Kuidas saaks siia listi lisada linnade nimesid mujalt failist ehk kuidas javascripti phpga siduda.

___________________________________________________
Kui sul pole midagi öelda, ole vait.

18.09.2005 18:39:09 Vajutades siia näed kasutaja mairo22 profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Korra esimese variandi ehk php'ga tehtud listboxi juurde tagasi.

Unustasin enne installimata pear paketi enda kuigi installisin HTML_Quickformi.
Ehk
Koodijupp:

pear install


oleks ka kasulik teha.

Aga kuidas seda zerver.ee keskkonnas tööle saada? Seal ei saa konsoolis lihtsalt pear install tippida....

___________________________________________________
Kui sul pole midagi öelda, ole vait.

19.09.2005 21:12:19 Vajutades siia näed kasutaja mairo22 profiili

laurik
_/<

Postitusi: 847
Tase: 8
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Dünaamiline rippmenüü ainult php'ga

Tsiteeritud tekst:
Zerver.ee-s või üldse suvalises kohas saab seda kasutada peale seda, kui oled pear'i kataloogi veebikohta kopeerinud ja lisanud selle include_path'i.


http://www.bytez.net/test/quickform/quickform.zip

19.09.2005 21:26:51 Vajutades siia näed kasutaja laurik profiili

mairo22

Postitusi: 220
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10Administratiivhinnang: 4/10
RE: Dünaamiline rippmenüü ainult php'ga

Suurimad tänud, asi töötab ideaalselt!

___________________________________________________
Kui sul pole midagi öelda, ole vait.

19.09.2005 22:00:02 Vajutades siia näed kasutaja mairo22 profiili

Kokku on 55 postitust, jaotatud 4 leheküljele: 1-2-3-4. Praegu näidatakse postitused 1-15.

Kokku: 25955 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on neljapäev, 28. mai 2020. Kell on 03:45.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2020 PHP Center. Kõik õigused reserveeritud.