Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ongelma exploden käytössä

Sivun loppuun

lahtis [28.01.2007 20:37:42]

#

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>";
}
?>

Antti Laaksonen [28.01.2007 21:15:11]

#

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.

lahtis [28.01.2007 21:30:34]

#

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ä.

<?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>";

foreach($_POST as $arvo)  {

  $word1 = explode("|", $arvo);
}

echo "$word1[0]<br>";
echo "$word1[1]<br>";

?>

Merri [28.01.2007 21:35:33]

#

$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:

$words = array();

foreach($_POST as $avain => $arvo)  {
  $words[$avain] = explode("|", $arvo);
}

$words['id'][0] = _POST['id']:n ensimmäinen sana.

lahtis [28.01.2007 21:41:08]

#

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&auml;het&auml;  \">
</form>";

$selected = $_POST['selected'];
foreach($selected as $id){
$words = explode("|", $id);

echo "$words[0]<br>";
echo "$words[1]<br>";
}


?>

nyt sitä on ihan sekaisin...

pistemies [28.01.2007 22:18:26]

#

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&auml;het&auml;  \">
</form>";
?>

lahtis [28.01.2007 23:01:17]

#

tarkoitus tossa olisi se että $words[0] $words[1] vietäisiin arrayhin.
ja sieltä luettaisiin sitten ja tehtäisiin mitä tehdään.

pistemies [28.01.2007 23:23:10]

#

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ä?

lahtis [29.01.2007 00:44:52]

#

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/extramens/inc/testi4.php

pistemies [29.01.2007 16:10:52]

#

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

lahtis [30.01.2007 08:26:23]

#

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&auml;het&auml;  \">
</form>";


$selected = $_POST['selected'];

if(!$selected) {
echo "Selected on tyhj&auml;<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.";


?>

pistemies [30.01.2007 09:51:05]

#

Ei hassumpi.
Tuossa sen kivan, mitä niille tekee, joutuu tekemään tuon silmukan sisällä. Silmukan ulkopuolella voi vaikuttaa vain viimeksi valittuun checkboxiin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta