Avatar billede konder Nybegynder
19. januar 2010 - 22:08 Der er 21 kommentarer og
1 løsning

Udtræk fra database skal ende i array.

Jeg har et udtræk
foreach ($_POST [blomst]....der vises som
echo $rows["tal"];
i en løkke.
Jeg vil meget gerne samle de forskellige $rows["tal"]; i et array som jeg så kan bruge/vise senere. Kan det ikke lade sig gøre?
Avatar billede DGudiksen Nybegynder
19. januar 2010 - 22:11 #1
$array = New Array();
foreach () { // foreach her
$array[] = $rows["tal"];
}
.
Så kan du bare echo det således:
echo $array[0];
echo $array[1];

osv.

Mvh
Avatar billede konder Nybegynder
19. januar 2010 - 22:25 #2
Det får jeg ikke til at virke. Der sker ingen ting. Jeg ville gerne kalde
echo $array[0];
echo $array[1]; uden for det hele/løkken
Avatar billede konder Nybegynder
19. januar 2010 - 22:40 #3
Jeg har sat $array = New Array(); ind efter min if (isset
og inden min mysql_query.
Avatar billede DGudiksen Nybegynder
19. januar 2010 - 22:53 #4
kan du prøve og vise mig hele scriptet?
Avatar billede konder Nybegynder
19. januar 2010 - 23:09 #5
Det hænger sådan sammen at jeg samler op fra en mængde checkbokse-og så kalder jeg en tabel. Resultatet herfra vil jeg gerne kunne bruge senere.
if (isset($_POST['blomst'])) {
    foreach($_POST['blomst'] as $kud) {

    $ud = New Array();
    include "../dat/conn.php";



$foresp = mysql_query("SELECT * FROM bi WHERE navn = '$kud'")
or die (mysql_error());
while ($rows=mysql_fetch_assoc($foresp)){

echo $rows["navn"];
echo  "  kr.";
echo $rows["kr"];
$ud[] = $rows["tal"];
}
echo $ud[0];
echo $ud[1];
}
Avatar billede showsource Seniormester
20. januar 2010 - 06:06 #6
Du gør det forkert
Du laver først array'et i din foreach.
Og du includer også i din foreach.
Og så er det:
$ud = array();

Utestet:

if (isset($_POST["blomst"])) {
$find = array();

    foreach($_POST["blomst"] as $kud) {
    $find[] = $kud;
    }

include "../dat/conn.php";

$sql = "SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')";
// Hvis værdi af "blomst" er et tal, skal der ikke bruges ' omkring værdien i query

$foresp = mysql_query($sql) or die (mysql_error());

    if(mysql_num_rows($foresp) > 0) {
    $ud = array();

        while ($rows=mysql_fetch_assoc($foresp)){

        echo "<br />".$rows["navn"];
        echo  "&nbsp; kr.";
        echo $rows["kr"];

        $ud[] = $rows["tal"];
        }

    echo $ud[0];
    echo $ud[1];

    }else{

    echo "Ingen rows fundet i db ud fra request!";

    }

}
Avatar billede konder Nybegynder
20. januar 2010 - 12:26 #7
Så langt så godt, tak. Jeg har brugt flg. som virker ok(næsten)

$foresp = mysql_query("SELECT * FROM bi WHERE navn = '$k'")
or die (mysql_error());
if(mysql_num_rows($foresp) > 0) {
    $ud = array();
while ($rows=mysql_fetch_assoc($foresp)){

echo "<br />".$rows["navn"];
echo  "&nbsp; kr.";
echo $rows["kr"];
$ud[] = $rows["kr"];
}
echo $ud[0];
}else{
echo "Ingen rows fundet i db ud fra request!";
}
men jeg får echo $ud[0] ud for hver linie: navn kr. 39.oo39.00
og alle pladser og ikke kun nr.[0]. til gengæld ingen hvis jeg skriver echo $ud[];og ingen side hvis jeg undlader at echo $ud[o], så der er noget der er lidt løst i det.

Men jeg vil gerne benytte arrayet til at lægge tallene sammen og smide det i min $_SESSION['pris'] på en eller anden måde.
Avatar billede showsource Seniormester
21. januar 2010 - 09:40 #8
Nu viser du ikke al din kode, men hvis du blot vil lægge sammen:

$kr_ialt = 0;

while() {

$kr_ialt += $rows["kr"];
}

$_SESSION["pris"] = $kr_ialt;
Avatar billede konder Nybegynder
21. januar 2010 - 12:46 #9
Der er desværre kludder i det.Den viser de forskellige "varer" til "kr" der er valgt og efter står prisen igen.
Den tæller ikke noget op.

<?php
if($_POST['op'] == "ds"){
echo "Du har denne dato:<br>{$_SESSION['gin']}";
echo "<BR>Valgt&nbsp;{$_SESSION['nin']}";
echo "<BR>Der jo koster{$_SESSION['pris']}";
echo "<BR>og kan få denne tid:{$_SESSION['mas']}<BR>Ekstra tilbehør:<BR>";

if (isset($_POST['varer'])) {
    foreach($_POST['varer'] as $kud) {

    include "../dat/conn.php";



$foresp = mysql_query("SELECT * FROM bi WHERE navn = '$kud'")
or die (mysql_error());

$kr_ialt = 0;
while ($rows=mysql_fetch_assoc($foresp)){



echo "<br />".$rows["navn"];
echo  "&nbsp; kr.";
echo $rows["kr"];

$kr_ialt += $rows["kr"];



$_SESSION["pris"] = $kr_ialt;
echo $kr_ialt;
}
}
  }
  } 

?>
Kom bare i god form uden problem.
Avatar billede showsource Seniormester
21. januar 2010 - 13:04 #10
Fordi du stadig "roder rundt" inde i din foreach
Avatar billede konder Nybegynder
21. januar 2010 - 14:33 #11
Tusind tak hvor har du bare ret;)
Nu er det så bare at min sessionPris fra forgående side
som osse bliver vist her, gerne skulle optælles med kr_ialt
og helst vise den nye sammentælling.
altså øverst vise kr. fra $_SESSION['pris']
dernæst  prisen kr_ialt
og sidst på siden
$_SESSION['pris']+ kr_ialt som så er den nye gældende $_SESSION['pris']
Avatar billede konder Nybegynder
21. januar 2010 - 15:09 #12
Det mener jeg nu at have fået til at virke med
$_SESSION["pris"] += $kr_ialt;
Avatar billede konder Nybegynder
21. januar 2010 - 15:39 #13
Så du må gerne lægge et svar.
Måske ved du også hvordan man takler; tryk på enter-
Jeg har jo en side hvor du kan vælge mellem flere forskellige ting via submitknapper. Kan jeg sætte en "fejlmelding" op hvis man trykker på enter "du skal vælge en mulighed"?
Avatar billede showsource Seniormester
21. januar 2010 - 19:07 #14
Det med fejlmelding skal laves i javascript.
Dog skal du altid også tjekke serverside om der er et forventet resultat.
Avatar billede konder Nybegynder
21. januar 2010 - 20:01 #15
Hvad hedder det med at tjekke for forventet resultat på serverside?
Avatar billede konder Nybegynder
21. januar 2010 - 21:20 #16
Nu har jeg forsøgt vildt at sætte et array op indeholdende alle $rows["navn"] på den måde du har lært mig:
først definere uden foreach og så videre. Men kan ikke få det til at virke. Jeg skulle gerne få $rows["navn"] gjort til en session osse.
<?php
if($_POST['op'] == "ds"){
echo "Du har denne dato:<br>{$_SESSION['gin']}";
echo "<BR>Valgt&nbsp;{$_SESSION['nin']}";
echo "<BR>Der jo koster{$_SESSION['pris']}";
echo "<BR>og kan få denne tid:{$_SESSION['mas']}<BR>Ekstra tilbehør:<BR>";

$tilbud = array();


if (isset($_POST['varer'])) {
    $kr_ialt = 0;
    foreach($_POST['varer'] as $kud) {

    include "../dat/conn.php";



$foresp = mysql_query("SELECT * FROM bi WHERE navn = '$kud'")
or die (mysql_error());

while ($rows=mysql_fetch_assoc($foresp)){



echo "<br />".$rows["navn"];


$tilbud[] = $rows["navn"];

echo  "&nbsp; kr.";
echo $rows["kr"];

$kr_ialt += $rows["kr"];






}
}
  }
  } 
$_SESSION["pris"] += $kr_ialt;

echo "ha ha ha";
echo "<BR>Der jo nu koster{$_SESSION['pris']}";
echo $tilbud[];
?>
Avatar billede showsource Seniormester
21. januar 2010 - 21:37 #17
1. Når du har tjekket for post, så include conn.php FØR foreach !
2. Du opretter stadig $tilbud inde i din foreach.
3. Hvor får du $kud fra ?

if (isset($_POST["varer"])) {
    $kr_ialt = 0;
    $_SESSION["navne"] = array();

// ::::::::::::::::::::::


while ($rows=mysql_fetch_assoc($foresp)){



echo "<br />".$rows["navn"];


$_SESSION["navne"][] = $rows["navn"];

}

Mener jeg vil virke.
Og to gode råd:
1. Brug altid enten ' eller " i din phpkode, lad endelig være med at "mixe", blot for alle tilfældes skyld.

2. Brug altid forskellige navne på php vars. Altså ikke noget med:

$navn = $_POST["navn"];
$_SESSION["navn"] = $navn;

o.s.v.
Hvis dun kode skulle komme til at ligge på en server med register_globals sat til on, risikerer du at få problemer,
Avatar billede showsource Seniormester
21. januar 2010 - 21:43 #18
Og igen:
$_POST["varer"] er et navn?

$find = array();

foreach($_POST["varer"] as $name) {

$find[] = $_POST["navn"];

}

Og så

SELECT * FROM bi WHERE navn IN ('".implode("',', $find)."')

D.v.s en query, istedet fur at en for hver.
Avatar billede konder Nybegynder
22. januar 2010 - 23:52 #19
Ved ikke om du hænger på endnu men det er mit første script med sessions overhovedet og det virker desværre ikke rigtigt. jeg har ellers forsøgt at gøre nogenlunde som du har forklaret.
Skal jeg mon oprette spg. igen?


<?php
if($_POST['op'] == "ds"){
   
    include "../dat/conn.php";
    $find = array();
   
echo "Du har denne dato:<br>{$_SESSION['gin']}";
echo "<BR>Valgt&nbsp;{$_SESSION['nin']}";
echo "<BR>Der jo koster{$_SESSION['pris']}";
echo "<BR>og kan få denne tid:{$_SESSION['mas']}<BR>Ekstra tilbehør:<BR>";

if (isset($_POST['varer'])) {
    $kr_ialt = 0;
$_SESSION["navne"] = array();
    foreach($_POST['varer'] as $kud) {

$find[] = $kud;


$foresp = mysql_query("SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')")
or die (mysql_error());

while ($rows=mysql_fetch_assoc($foresp)){

echo "<br />".$rows["navn"];
$_SESSION["navne"][] = $rows["navn"];
echo  "&nbsp; kr.";
echo $rows["kr"];

$kr_ialt += $rows["kr"];





}
  }
  }
}
$_SESSION["pris"] += $kr_ialt;


echo "ha ha ha";

echo "<BR>Der jo nu koster{$_SESSION['pris']}";
echo "<BR>Der består af disse tilbud{$_SESSION['navne']}";

?>
Avatar billede showsource Seniormester
23. januar 2010 - 16:06 #20
Jeg er stadig på.
Grunden, først og fremmest, til at det ikke virker, er fordi du laver query, inde i din foreach løkke for $_POST["varer"]

Jeg skal lige ud af døren en times tid cirkus, så er jeg tilbage.
Avatar billede showsource Seniormester
23. januar 2010 - 16:08 #21
Altså,

if (isset($_POST['varer'])) {
    $kr_ialt = 0;
    $_SESSION["navne"] = array();

    foreach($_POST['varer'] as $kud) {

    $_SESSION["navne"][] = $kud;

    }


// ALT DIT ANDET PHPKODE



}
Avatar billede konder Nybegynder
23. januar 2010 - 18:08 #22
Jeg venter lige med at få $_SESSION[navne] på før jeg kan få det her til at funke. Det må være de checkboxe jeg sender fra Er der ikke noget med at de ikke må hedde det samme? jeg kalder jo dem alle "varer"
<?php include "../dat/conn.php";

$foresp = mysql_query("SELECT * FROM bi")
or die (mysql_error());
while ($rows=mysql_fetch_assoc($foresp)){

echo $rows["navn"];
echo  "&nbsp; kr.";
echo $rows["kr"];

echo "<input type='checkbox' name='varer' value ='";
echo $rows["navn"];

echo "'><br>";

}
?>
Og så har jeg dette der ikke virker:
<?php
if($_POST['op'] == "ds"){
include "../dat/conn.php";

echo "Du har denne dato:<br>{$_SESSION['gin']}";
echo "<BR>Valgt&nbsp;{$_SESSION['nin']}";
echo "<BR>Der jo koster{$_SESSION['pris']}";
echo "<BR>og kan få denne tid:{$_SESSION['mas']}<BR>Ekstra tilbehør:<BR>";


if (isset($_POST['varer[]'])) {
    $kr_ialt = 0;
      $find = array();

    foreach($_POST['varer[]'] as $kud) {

$find[] = $kud;
    }

$foresp = mysql_query("SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')")
or die (mysql_error());


while ($rows=mysql_fetch_assoc($foresp)){

echo "<br />".$rows["navn"];
echo  "&nbsp; kr.";
echo $rows["kr"];

$kr_ialt += $rows["kr"];
}
  }
  }
$_SESSION["pris"] += $kr_ialt;


echo "ha ha ha";

echo "<BR>Der jo nu koster{$_SESSION['pris']}";

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