Avatar billede nyst Nybegynder
09. december 2008 - 14:13 Der er 11 kommentarer og
1 løsning

lægge tal sammen fra form og via sessions give forskellige svar

Hi,

jeg har en form

<input name="vd1" type="text" size="2" maxlength="1">
<input name="vd2" type="text" size="2" maxlength="1">
osv til vd24

Denne submitter til en anden fil med en session som skal lægge tallene sammen og retunere værdien delt op i svar

<?php
session_start();

if(isset($_POST['tal'])) {
  if(isset($_POST['vd1']) && $_POST['vd2'] != 0) {
    $vd1 = $_REQUEST["vd1"];
    $vd2 = $_REQUEST["vd2"];
    $vd3 = $_REQUEST["vd3"];
    $vd4 = $_REQUEST["vd4"];
    $vd5 = $_REQUEST["vd5"];
    $vd6 = $_REQUEST["vd6"];
    $vd7 = $_REQUEST["vd7"];
    $vd8 = $_REQUEST["vd8"];
    $vd9 = $_REQUEST["vd9"];
    $vd10 = $_REQUEST["vd10"];
    $vd11 = $_REQUEST["vd11"];
    $vd12 = $_REQUEST["vd12"];
    $vd13 = $_REQUEST["vd13"];
    $vd14 = $_REQUEST["vd14"];
    $vd15 = $_REQUEST["vd15"];
    $vd16 = $_REQUEST["vd16"];
    $vd17 = $_REQUEST["vd17"];
    $vd18 = $_REQUEST["vd18"];
    $vd19 = $_REQUEST["vd19"];
    $vd20 = $_REQUEST["vd20"];
    $vd21 = $_REQUEST["vd21"];
    $vd22 = $_REQUEST["vd22"];
    $vd23 = $_REQUEST["vd23"];
    $vd24 = $_REQUEST["vd24"];
    $tal = ();
    $_SESSION['tal'] = $tal;
        header('location:'.$_SERVER['HTTP_REFERER']);
        exit;
  }
    else {
    $_SESSION['tal'] = ("Fejl!");
    header('location:'.$_SERVER['HTTP_REFERER']);
  }
}
?>

som så retunere til forrige side

<?php
if(isset($_SESSION['tal']) && $_SESSION['tal'] != "0") {
  echo "<b>".$_SESSION['tal']."</b><br>";
}
?>

og giver forskellige svar alt efter summen af tal

<?php
if(isset($_SESSION['tal']) && $_SESSION['tal'] != "0" && is_numeric($_SESSION['tal'])) {
        if($_SESSION['tal'] <= 24) { echo"svar 1"; }
                elseif ( $_SESSION['tal'] <= 37) {echo "svar 2";}
                elseif ( $_SESSION['tal'] <= 68) {echo "svar 3";}
        }
?>

men kan skisme ikek helt få det til at virke.

Session er valgt fordi siden hele siden ikke skal opdaterer men bare vise resulttatet ved klik.

Kan nogen hjælpe mig videre?
Avatar billede dkfire Nybegynder
09. december 2008 - 14:40 #1
Har du prøvet med
$tal = $vd1 + $vd2
Avatar billede nyst Nybegynder
09. december 2008 - 14:49 #2
når jeg sætter denne ind i stedet for $tal = ();

    $tal = $vd1 + $vd2 + $vd3 + $vd4 + $vd5 + $vd6 + $vd7 + $vd8 + $vd9 + $vd10 + $vd11 + $vd12 + $vd13 + $vd14 + $vd15 + $vd16 + $vd17 + $vd18 + $vd19 + $vd20 + $vd21 + $vd22 + $vd23 + $vd24;

giver den bare blank side

måske det ligger i

<?php
if(isset($_SESSION['tal']) && $_SESSION['tal'] != "0") {
  echo "<b>".$_SESSION['tal']."</b><br>";
}
?>
Avatar billede nyst Nybegynder
09. december 2008 - 14:50 #3
eller denne som vel også skal ændres:

  if(isset($_POST['vd1']) && $_POST['vd2'] != 0) {
Avatar billede dkfire Nybegynder
09. december 2008 - 14:50 #4
Kunne det tænkes du mangler en session_start() på ALLE sider ??
Avatar billede nyst Nybegynder
09. december 2008 - 14:59 #5
nej den nærmest skifter side men til samme adresse og retunere blank side *S*
Avatar billede nyst Nybegynder
09. december 2008 - 15:01 #6
ville yderligere godt have den til at tjekke at tallene kun er mellem 1 og 4 ellers fejlbesked samt at alle felter er udfyldt !
Avatar billede nyst Nybegynder
09. december 2008 - 15:14 #7
har nu fået den til at retunre tal og korrekt værdisvar, men har lidt problmer med at der kan tastets tal der ikke har værien mellem 1 og 4 samt tomt felt

Kan man få den til at 'springe' ned til svaret - nu skal man scrolle ned for at se tallet ?
Avatar billede dkfire Nybegynder
09. december 2008 - 15:46 #8
Jeg vil foreslå dig at gemme dine svar i et array i stedet for som nu i hver sin variabel. Det vil hjælpe dig meget.
Du kan så løbe arrayet igennem og tjekke værdier.

Ellers skal du måske ud i noget:
$error = 0;
for( $i = 1; $i < 25; $i++) {
    $svar = "vd" . $i;
    if( empty($$svar) || ( $$svar < 0 || $$svar > 4 ) ) {
        $error = 1;
        break;
    }
}
Hvis error så er 1 er alle felter ikke korrekt udfyldt.
Avatar billede nyst Nybegynder
11. december 2008 - 13:05 #9
hej dkfire,
nu har jeg fået den til at virke, men vil lige spørge om du kan se om denne:

if(isset($_POST['tal'])) {
  if(isset($_POST['vd1']) && $_POST['vd2'] != 0) {
    $vd1 = $_REQUEST["vd1"];
    $vd2 = $_REQUEST["vd2"];
    $vd3 = $_REQUEST["vd3"];
    $vd4 = $_REQUEST["vd4"];
    $vd5 = $_REQUEST["vd5"];
osv osv

ikke skal laves lidt om, det er denne linje jeg mener:

  if(isset($_POST['vd1']) && $_POST['vd2'] != 0) {

hvorfor () om første POST og ikke () om anden post og bør den så ikke fortsætte med alle vd'er.

!= 0 tjekker vel bare om det er et tal - ikke ?

:-)
Avatar billede supersquirrel Nybegynder
11. december 2008 - 13:07 #10
Der er () om den første POST, fordi der er i en isset() ..
!= 0 tjekker at den IKKE er lig med 0 ..
Avatar billede nyst Nybegynder
22. december 2008 - 17:25 #11
dkfire kommer du med et svar til points ???
Avatar billede dkfire Nybegynder
22. december 2008 - 18:22 #12
Det gør jeg da gerne :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester