Ongelma exploden käytössä. Mikä tässä voisi olla vikana?
Pitäsi postin kautta explodeta kentät näkyville,
palauttaa vain arvon 2. eikä tulosta loppu dataa.
vai olenko kokonaan hakoteillä, pitäsikö toi tehdä jollain muulla tavalla.
toinen vaihtoehto olisi toi tehdä että jos $subject = "t=54354&v=654623";
olisko kellään neuvoa mistä ja miten ton saisi toimimaan.
eli explodeta noi yhdestä postin kentästä saamat arvot.
<?PHP $subject = "2223|45"; echo "<form method=post action=\"$PHP_SELF\"> <input type=\"text\" name=\"key\" value=\"$subject\" size=\"40\"> <input type=submit value=\"send\"> </form>"; if(isset($_POST['key'])) { $data = $_POST['key']; echo "DATA: $data<br>"; // $i=0; $word = explode("|", $data[$i]); echo "$word[0]<br>"; echo "$word[1]<br>"; } ?>
Mikä on muuttujan $i tarkoitus? Muuttuja $data on tavallinen merkkijono, joten sen perään ei kuulu hakasulkeita. Nyt tapahtuu niin, että merkkijonosta valitaan ensimmäinen merkki, joka on "2". Merkkijono on siis tavallaan merkkien taulukko.
Tajusinhan lopulta ton merkityksen. Sain toimimaan vähän erilailla kun oli tarkoitus, mutta kävi lopulta silleen että siihen tarkoitukseen kun tämä tulee niin ei tästä olekaan hyötyä. Olen taas samassa lähtöpisteessä.
$words = array(); foreach($_POST as $arvo) { $words[] = explode("|", $arvo); } $words[0][0] = Ensimmäinen sana ensimmäisessä _POSTissa. $words[1][4] = Viides sana toisessa _POSTissa.
Voit myös tehdä näin:
Muokattu:
Siis tarkoitus oli tehdä tämä näin. Tuli ehkä sanottua vähän väärin.
<?PHP echo "<form method=post action=\"$PHP_SELF\"> testi 1 <input name=\"selected[]\" value=\"2223|45\" type='checkbox'><br> testi 2 <input name=\"selected[]\" value=\"222432|235\" type='checkbox'><br> <input type=submit value=\" lähetä \"> </form>"; $selected = $_POST['selected']; foreach($selected as $id){ $words = explode("|", $id); echo "$words[0]<br>"; echo "$words[1]<br>"; } ?>
nyt sitä on ihan sekaisin...
Tuossa kenttien nimi on sama, selected[], niistä tallentuu vain jälkimmäinen. Entä miten tämä:
<?php $subject = array("2223|45","222432|235"); echo "<form method=post action=\"$PHP_SELF\">"; $x=1; for($i=0;$i<count($subject);$i++){ echo "testi $x <input name=\"selected$i\" value=\"$subject[$i]\" type='checkbox'><br>"; $x++; } echo "<input type=submit value=\" lähetä \"> </form>"; ?>
tarkoitus tossa olisi se että $words[0] $words[1] vietäisiin arrayhin.
ja sieltä luettaisiin sitten ja tehtäisiin mitä tehdään.
Onko tarkoitus, että noista checkboxeista valitaan vain toinen, koska niissä on sama nimi? Silloin niiden tyyppi tulisi olla radio.
Mitä taas arrayhin tulee, eikös se suju Merrin esimerkillä?
Tarkoitus olisi valita haluamansa checkboxit (dataa checkboxin sisällä voi olla enemmänkin). tossa esimerkissä on vain kaksi, niitä voi olla enemmänkin.
Merrin esimerkkiä pitää vielä testata kun tota array:ta en ole koskaan käyttänyt, mutta uskoisin että se pitäsi sillälailla tehdä.
esimerkkinä: http://lahtis.homelinux.org/development/
Tein tässä ajankuluksi tämmöisen:
<?php $arr = array(); foreach($_POST as $data){ array_push($arr,$data); } $words = array(); for($i=0;$i<count($arr);$i++){ $word = explode("|",$arr[$i]); $words[$i] = array($word[0],$word[1]); } // TESTI: echo "<pre>"; print_r($words); echo "</pre>"; ?> <form action "self.php" method=post> <input type="checkbox" name="test" value="22|234"> <input type="checkbox" name="test2" value="156|200"> <input type="submit" value="OK"> </form>
Tämä järjestää kunkin inputin omaan arrayhin seuraavasti:
$words[0][0] 22
$words[0][1] 234
$words[1][0] 156
$words[1][1] 200
Jotain tällästä piti tehdä. Onko tähän parempaa tapaa.
Ja miten saan tietyn kohdan arraystä käyttöön? eli idn eka, toka ja kolmas arvo. Niillä pitäsi tehdä jotain kivaa. Idean tarkoituksena oli tuoda mahdollisimman paljon informaatiota checkboxin tai checkboxien avulla.
<?php echo "<b>testi8.php</b>"; echo "<form method=post action=\"$PHP_SELF\"> testi 1 <input name=\"selected[]\" value=\"0|45|5436\" type='checkbox'><br> testi 2 <input name=\"selected[]\" value=\"1|235|67546465\" type='checkbox'><br> <input type=submit value=\" lähetä \"> </form>"; $selected = $_POST['selected']; if(!$selected) { echo "Selected on tyhjä<br>"; } else { $arr = array(); foreach($selected as $id){ $words = explode("|", $id); array_push($arr,$words); foreach($words as $id => $arvo){ echo "<pre>$id => Array $arvo<br /><pre>"; } echo "Suorituksen loppuminen, jatka seuraavaan jos on.<br>"; } } echo "tekee taulukon annetuilla arvoilla."; ?>
Ei hassumpi.
Tuossa sen kivan, mitä niille tekee, joutuu tekemään tuon silmukan sisällä. Silmukan ulkopuolella voi vaikuttaa vain viimeksi valittuun checkboxiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.