Avatar billede scooterDK1 Nybegynder
08. juni 2015 - 23:00 Der er 9 kommentarer og
1 løsning

jeg kan ikke få den til at komme værdierne i et array og trække dem ud igen.

jeg har lavet en lille side der lister en gruppe mennesker med et antal overnatninger.

først har jeg i toppen følgende :

$D = array();

så laver jeg et kald til databasen hvor jeg looper mig igennem. (i en form)

her har jeg følgende kommando :

$dage = array($a4_A,$a5_A,$a6_A,$a7_A,$a8_A,$a9_A,$a10_A);
            $antal_dage = array_sum($dage);
            echo $antal_dage;
            $D[]=$antal_dage;

til sidst kalder jeg arrayet et andet sted hvor jeg vil tælle alle værdierne sammen som er kommet i arrayet.

$T = array_sum($D);
echo $T;
unset($D);

men jeg får altid værdien 0 når jeg echo T;

nogle forslag til hvad der er galt.
Avatar billede moddi100 Seniormester
09. juni 2015 - 00:05 #1
Prøv af udskriv noget af din data, inden du putter det i følgende array:
$dage = array($a4_A,$a5_A,$a6_A,$a7_A,$a8_A,$a9_A,$a10_A);


Derudover er der så nogen grund til at du laver $T som et array, eller der er måske mere ved det, end vi ser?
Avatar billede scooterDK1 Nybegynder
09. juni 2015 - 15:05 #2
$T = array_sum($D); //her er det meningen at jeg tæller værdierne sammen i $D og bagefter udskriver værdien til siden - dette virker dog ikke, jeg får 0 som resultat.

echo $antal_dage; //her kommer en samtælling af værdierne i $dage og jeg skriver værdien på siden. - Dette virker, dvs at $dage = array($a4_A,$a5_A,$a6_A,$a7_A,$a8_A,$a9_A,$a10_A); også virker.

Så min konklusion er at jeg ikke sender nogle værdier til array $D
Avatar billede scooterDK1 Nybegynder
09. juni 2015 - 15:27 #3
Jeg vil lige forklare hvad det er jeg gerne vil gøre:

Jeg har lavet et udtræk fra databasen som ser således ud i en form :

<?
$sql_delta = "SELECT * FROM deltager ORDER BY navn asc";
$result_delta = mysqli_query($link, $sql_delta);
if (mysqli_num_rows($result_delta) > 0) {
while($row_delta = mysqli_fetch_assoc($result_delta)) {   
            $a4_A = $row_delta["a4"];
            $a5_A = $row_delta["a5"];
            $a6_A = $row_delta["a6"];
            $a7_A = $row_delta["a7"];
            $a8_A = $row_delta["a8"];
            $a9_A = $row_delta["a9"];
            $a10_A = $row_delta["a10"]; ?>

<form id="form1" name="form1" method="post" action="">

noget HTML og andre udtræk..

Her tæller jeg dagene sammen og efterfølgende skriver jeg dem ud på på siden ( i en liste ):

$dage = array($a4_A,$a5_A,$a6_A,$a7_A,$a8_A,$a9_A,$a10_A);
$antal_dage = array_sum($dage);
echo $antal_dage;

Nu vil jeg så putte $antal_dage i et nyt array :

$D[]=$antal_dage;

noget mere html

</form>
        <? }}?>

denne looper så igennem alle deltagerne fra udtrækket.

nu vil jeg nederst på siden så lave en total samtælling af alle deltagerne.
$T = array_sum($D);
echo $T;
unset($D);
Avatar billede moddi100 Seniormester
09. juni 2015 - 16:58 #4
I det tilfælde ville jeg nok bare lave en variabel med et tal, fremfor at gemme samtlige værdier i et array. F.eks:
$samlet = 0;

while($row_delta = mysqli_fetch_assoc($result_delta)) {   
 
  $a4_A = $row_delta["a4"];           
  $a5_A = $row_delta["a5"];
  $a6_A = $row_delta["a6"];
  $a7_A = $row_delta["a7"];
  $a8_A = $row_delta["a8"];
  $a9_A = $row_delta["a9"];
  $a10_A = $row_delta["a10"];

  $dage = array($a4_A,$a5_A,$a6_A,$a7_A,$a8_A,$a9_A,$a10_A);
  $antal_dage = array_sum($dage);

  // Lav en total
  $samlet = $samlet + $antal_dage;
}

echo "Samlet resultat: " . $samlet;


Din nuværende kode er der som sådan ikke noget galt med - i hvert fald ikke den del af den jeg kan se. Men mon ikke du kommer til at overskrive nogle værdier et eller andet sted? Prøv eventuelt at lave en
var_dump($dage);


inde i din løkke, så kan vi se om den fanger data rigtigt.
Avatar billede scooterDK1 Nybegynder
11. juni 2015 - 09:09 #5
jeg har fået fælgende til at virke ;)

<? 
$samlet_L = 0;
$sql_L = "SELECT a4 FROM deltager WHERE a4 = 1 ";
$result_L = mysqli_query($link, $sql_L);
if (mysqli_num_rows($result_L) > 0) {
while($row_L = mysqli_fetch_assoc($result_L)) {   
$a4_A = $row_L["a4"];
$samlet_L = $samlet_L + $a4_A;
}}
echo $samlet_L;
?>
Avatar billede scooterDK1 Nybegynder
11. juni 2015 - 09:13 #6
venligst læg et point svar ;)

dog en mindre tillæg spørgsmål, kam man ikke yderlige sorterer i en forespørgsel med en IF statement såsom :

$samlet_bev = 0;
$sql_bev = "SELECT * FROM deltager WHERE a4 = 1 AND gruppe_id = $gr_id";
$result_bev = mysqli_query($link, $sql_bev);
if (mysqli_num_rows($result_bev) > 0) {
while($row_bev = mysqli_fetch_assoc($result_bev)) {   
$a4_bev = $row_bev["a4"];
if ($a4_bev == 1){$samlet_bev = $samlet_bev + $a4_bev;}
}}
Avatar billede moddi100 Seniormester
14. juni 2015 - 19:35 #7
Jeg ville anbefale dig, at give kolonnerne i databasen nogle mere sigende navne, men du kan sagtens tilføje det, så din SQL ser ud som oppe i toppen.

Se også lige følgende guide igennem, så undgår du fremtidige problemer forbundet med variabler direkte i din SQL-sætning:
http://www.eksperten.dk/guide/1480
Avatar billede scooterDK1 Nybegynder
14. juni 2015 - 23:05 #8
;) tak for info, men navnene er meget mere sigende end som så :

$a4_bev = $row_bev["a4"];

a4 = den 4 dag.
_bev = det drejer sig om aldersgruppen bæver..

men jeg vil læse den linket artikkel ;)
Avatar billede moddi100 Seniormester
14. juni 2015 - 23:22 #9
Blot du har styr på det - og kan huske det, når du engang vender tilbage til scriptet om et par måneder :)

Ellers kan du med fordel genoverveje en konstruktion som denne:


// Her laver du en variabel $a4_A for kun
// at benytte den én gang, nemlig på linjen efter
$a4_A = $row_L["a4"];

// Her anvender du så variablen, men hvorfor ikke bruge den originale?
$samlet_L = $samlet_L + $a4_A;


De to linjer kan altså omskrives til:
$samlet_L = $samlet_L + $row_L["a4"];
Avatar billede scooterDK1 Nybegynder
14. juni 2015 - 23:47 #10
jeps, denne har jeg allerede fundet frem til :

<?
                    $samlet_L = 0;
        $sql_B = "SELECT * FROM deltager WHERE styr='$gr_id'";
        $result_B = mysqli_query($link, $sql_B);
        if (mysqli_num_rows($result_B) > 0)
        {
        while($row_B = mysqli_fetch_assoc($result_B))
        {   
            $a4_A = $row_B["a4"];
            $a5_A = $row_B["a5"];
            $a6_A = $row_B["a6"];
            $a7_A = $row_B["a7"];
            $a8_A = $row_B["a8"];
            $a9_A = $row_B["a9"];
            $a10_A = $row_B["a10"];
            // Antal overnatninger
                 
                $samlet_L = $samlet_L + $a4_A + $a5_A + $a6_A + $a7_A + $a8_A + $a9_A + $a10_A ;
                }}
               
                echo $samlet_L;
                $overnatninger = $samlet_L;  ?>

dog har jeg en anden tråd der volder mig lidt problemer..

http://www.eksperten.dk/spm/1004279
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