Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP $_POST:ien yhteenlaskeminen?

jonezy [24.05.2008 13:15:10]

#

Eli mulla on sivulla listattuna numeroita riveittäin ja checkbox:it niissä.
Formilla lähetän valitut numerot eteenpäin ja niistä pitäisi saada laskettua summa.

<?php
  $laske = $_POST['laske'];

  if(isset($laske)){
    foreach($_POST as $key => $value){
      if($key != "laske"){
        $value = $_POST[$key];
        echo "<div>$value</div>";
        echo "<div>$key</div>";
        unset($value);
      };
    };
  };
?>

Edellä oleva koodi toimii, eli se tulostaa oikeat valitut numerot, mutta miten saan laskettua ne yhteen?
$key on tyyliin rivi0, $rivi1, ... jne.
Olen tässä nyt aamusta asti asiaa pohtinut, mutta ei ole onnistunut.

Antti Laaksonen [24.05.2008 13:37:44]

#

Tämä voisi toimia:

<?php
  $laske = $_POST['laske'];
  if(isset($laske)){
    $summa = 0;
    foreach($_POST as $key => $value){
      if($key != "laske"){
        $value = $_POST[$key];
        $summa += $value;
        echo "<div>$value</div>";
        echo "<div>$key</div>";
        // unset($value);  (mikä tämän tarkoitus oli?)
      }
    }
    echo $summa;
  }
?>

jonezy [24.05.2008 13:43:57]

#

Kiitos avusta.
Tuo toimii.

Kaikkialla vaan suositellaan käyttämään foreachin kanssa unset:ia.

Antti Laaksonen [24.05.2008 13:57:00]

#

Itse asiassa myös rivi

        $value = $_POST[$key];

on tarpeeton, koska foreach-silmukassa asetetaan sekä $key että $value.

Ainakaan yleensä foreach-silmukka ei vaadi unset-funktion käyttöä.

punppis [27.05.2008 13:49:22]

#

Pistetään nyt tähän topikkiin, että tarviiko tuota unset-funktiota oikeasti missään? Ei varmaan mitkään sivut ole niin isot, että tarvitsisi muuttujia poistaa viemästä serverin muistia. Eikös ne kuitenkin lähde sieltä muistista kun skripti on suoritettu?

Antti Laaksonen [27.05.2008 15:43:30]

#

Ainakin silloin unset-funktiolle on käyttöä, jos muuttuja pitää poistaa, jotta skripti toimii oikein. Esim. seuraavassa muuttujalle $tieto on annettu arvo, mutta if-lauseessa vaaditaan, ettei muuttujaa ole olemassa. Ratkaisu on käyttää välissä unset-funktiota.

<?php
$tieto = 123;

// ???

if (!isset($tieto)) {
    // tänne pitäisi päästä
}
?>

Siis ohjelmoidessa voi syntyä tilanne, jolloin unset-funktiosta on hyötyä.

Teuro [27.05.2008 15:55:43]

#

punppis kirjoitti:

Pistetään nyt tähän topikkiin, että tarviiko tuota unset-funktiota oikeasti missään? Ei varmaan mitkään sivut ole niin isot, että tarvitsisi muuttujia poistaa viemästä serverin muistia. Eikös ne kuitenkin lähde sieltä muistista kun skripti on suoritettu?

Lähinnä tulisi mieleen poistella muuttujia, ettei pääse tapahtumaan tuplapostausta tai vastaavaa. Muitin takia niitä ei ole tarvetta poistaa. Antin esimerkki tuntuu jotenkin kömpelöltä, koska miksi esitellä muuttuja, ja sen jälkeen tarkistaa onko se asetettu.

Vastaus

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

Tietoa sivustosta