Avatar billede konder Nybegynder
23. januar 2010 - 14:48 Der er 37 kommentarer og
1 løsning

Gennemskue fejl i i scrip med session

Mit første script med session virker atter ikke. Jeg har fået hjælp fra Eks. med flg. der desværre ikke henter noget fra tabellen BI mere. Jeg må have gjort et el. andet galt da jeg forsøgte at oprette endnu en session.<?php
if($_POST['op'] == "ds"){

    $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'])) {
echo "dejligt";       
    include "../dat/conn.php";
    $kr_ialt = 0;
    foreach($_POST['varer'] as $kud) {

$find[] = $kud;


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

while ($rows=mysql_fetch_assoc($foresp)){
echo "dejligt1";
echo "dejligt2";
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 konder Nybegynder
23. januar 2010 - 15:12 #1
Ups Fejlen i: $foresp = mysql_query("SELECT * WHERE navn IN ('".implode("','",$find)."')")or die (mysql_error());
er rettet
$foresp = mysql_query("SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')")or die (mysql_error());

uden resultat.
Avatar billede Ewade Nybegynder
23. januar 2010 - 16:02 #2
<?php
session_start():

Mangler vist i toppen :)
Avatar billede konder Nybegynder
23. januar 2010 - 16:15 #3
Desværre ikke, suk
Avatar billede Ewade Nybegynder
23. januar 2010 - 16:21 #4
Hvad gør den / gør den ikke?
Avatar billede konder Nybegynder
23. januar 2010 - 16:21 #5
Der hvor det ikke virker er i udtrækket fra bi.....
Når jeg sætter if(mysql_num_rows($foresp) > 0) {
    echo "indhold";} kommer der ikke til at stå indhold.
Avatar billede Ewade Nybegynder
23. januar 2010 - 16:24 #6
$foresp = mysql_query("SELECT * WHERE navn IN ('".implode("','",$find)."')")or die (mysql_error());

Er jo helt forkert kan jeg se..

du har ikke valgt nogen tabel..

$foresp = mysql_query("SELECT * FROM tabel_navn osv..
Avatar billede repox Seniormester
23. januar 2010 - 16:24 #7
Hvad med om du viste din fulde kildekode - det er jo ikke til at gætte på fejlen ud fra en stump...
Avatar billede Ewade Nybegynder
23. januar 2010 - 16:25 #8
Som repox siger. nemmere med fulde kode :D
Avatar billede Ewade Nybegynder
23. januar 2010 - 16:27 #9
Fik lige vrøvlet lidt der.. nej selvfølgelig har du ikke valgt en tabel . hehe.  Skal du heller ikke. nvm :D den der...

Tjek at der faktisk er noget at hente
Avatar billede konder Nybegynder
23. januar 2010 - 16:43 #10
noget med at checkbokse ikke må hedde det samme?
Avatar billede konder Nybegynder
23. januar 2010 - 16:53 #11
Resultatet fra checkbox forige side:

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

}
Avatar billede Ewade Nybegynder
23. januar 2010 - 17:38 #12
hver vare skal have sit eget navn ,eller vil det slet ikke virke.
Avatar billede showsource Seniormester
23. januar 2010 - 19:45 #13
checkboxe:

<input type="checkbox" name="varer[]" value="<?php echo htmlspecialchars($row["navn"]); ?>">

Ved at bruge [] til navnet, får du et array når du poster.

$find = array();

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

    $find[] = $kud;

    }

$sql = "SELECT * FROM tabelnavn WHERE navn IN ('".implode("','",$find)."')";

$foresp = mysql_query($sql) or die (mysql_error());
Avatar billede konder Nybegynder
23. januar 2010 - 20:59 #14
Jeg kan simpelthen ikke komme videre end til dette. Der er ingen reaktion på foreach.

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

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

    $find[] = $kud;
    }
$sql = "SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')"
or die (mysql_error());
while ($rows=mysql_fetch_assoc($sql)){

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

$kr_ialt += $rows["kr"];
}
  }
  }
Avatar billede konder Nybegynder
23. januar 2010 - 21:47 #15
Jeg får godtnodt de første echoer frem her under isset men intet under foreach.
if (isset($_POST['varer'])) {
    $varer = $_POST['varer'];
    echo "<br />".$varer[0];
        echo "<br />".$varer[1];
            echo "<br />".$varer[2];
                echo "<br />".$varer[3];
                    echo "<br />".$varer[4];

    $kr_ialt = 0;
      $find = array();

    foreach($varer[] as $kud) {

    }
$sql = "SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')"
or die (mysql_error());
while ($rows=mysql_fetch_assoc($sql)){

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

$kr_ialt += $rows["kr"];
}
  }
  }
Avatar billede konder Nybegynder
23. januar 2010 - 22:40 #16
Undskyld jeg har selvfølgelig      foreach($varer as $kud){
    $find[] = $kud; }
men forstår efterhånden hvor grå hår kommer fra.
Avatar billede showsource Seniormester
24. januar 2010 - 06:18 #17
Du får ikke udført nogen query!
Prøv med:

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

echo $sql;

$foresp = mysql_query($sql)or die (mysql_error());
Avatar billede konder Nybegynder
24. januar 2010 - 08:44 #18
Den kommer godtnok ud med resultatet:
SELECT * FROM bi WHERE navn IN ('Luksus kurv','Muddermaske','Hjernehat')
Avatar billede konder Nybegynder
24. januar 2010 - 08:55 #19
Pust og støn. Det spiller med:
while ($rows=mysql_fetch_assoc($foresp)){
så nu er jeg snart beredt på næste skridt
Avatar billede konder Nybegynder
24. januar 2010 - 11:15 #20
De sessions der skal videre til næste side -skal de registreres  på en eller anden måde? Jeg kan kun overføre den nyeste session og ikke de gamle.
Avatar billede showsource Seniormester
24. januar 2010 - 11:23 #21
Jahh, du skal jo sætte de sessions du vil, inden næste side.
Og pas på du ikke får overskrevet dem.
Avatar billede konder Nybegynder
24. januar 2010 - 11:38 #22
Jeg har jo de gamle sessions f.eks.$_SESSION['nin'] der viser datoen på den foregående side.
men som ikke vises ved echo "Du har denne dato:<br>{$_SESSION['ialtkr']}";

Hvordan sætter jeg de gamle sessions videre?
Du skal iøvrigt bare lægge et svar så deler jeg pointene.
Avatar billede konder Nybegynder
24. januar 2010 - 11:49 #23
Det er selvfølgelig $_SESSION['nin'] jeg forsøger at vise på den 3.side
Avatar billede konder Nybegynder
24. januar 2010 - 12:05 #24
Har sat
session_register("gin");
session_register("nin");
ind på een af de første sider og kan så trække dem ud senere. Er det efter bogen?
Avatar billede showsource Seniormester
24. januar 2010 - 12:08 #25
Prøv at vænne dig til at hoppe ud og ind i phpkode.

echo"Du har denne dato: ".$_SESSION["nin"]." og denne pris: ".$_SESSION["ialtkr"];

Og hold til eneten at bruge ' eller " når de skal bruges.

Og, hvis du som det første i scriptet bruger:

<?php
ini_set("error_reporting", E_ALL);

// indhold af script


?>


vil du altid få vist alle fejlmeddelser.
Avatar billede showsource Seniormester
24. januar 2010 - 12:11 #26
Nej, det er IKKE efter bogen.
Brug
$_SESSION["gin"] = "hvad du vil ha'";
Avatar billede konder Nybegynder
24. januar 2010 - 12:19 #27
Men jeg sætter jo senere på siden
$_SESSION['gin'] = $_POST['datoen'];
$_SESSION['nin'] = $_POST['navnet'];
$_SESSION['mas'] = $_POST['massage'];
$_SESSION['pris'] = $_POST['pris'];

og kan vel ikke sætte dem op til session_start før jeg tjekker
if($_POST['op'] == "ds")

-jeg skal nok prøve at lære det med ' og "
Avatar billede konder Nybegynder
24. januar 2010 - 12:38 #28
Skal desværre gå nogle timer, men tænker over hvordan jeg får listen med alle navn + kr med over på den sidste side.
$sql = "SELECT * FROM bi WHERE navn IN ('".implode("','",$find)."')";

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

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

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

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

men det må som sagt vente nogen timer.
Avatar billede showsource Seniormester
25. januar 2010 - 07:12 #29
I stedet for at bruge
$find = array();
kan du bruge:
$_SESSION["find"] = array();

og så udskifte $find med $_SESSION["find"]

Og tilsidst til pris:

$_SESSION["samletpris"] = $kr_ialt;
Avatar billede konder Nybegynder
26. januar 2010 - 09:38 #30
Ville egentligt så gerne forsøge med et hidden felt. men jeg prøver dit forslag
Avatar billede konder Nybegynder
26. januar 2010 - 11:47 #31
Det tætteste jeg kommer er på næstsidste side at kunne echo "('".implode("','",$find)."')";
og listen ses. Har forsøgt snart sagt alt.
Men jeg kan ikke f.eks. sige $_session['find'] = "('".implode("','",$find)."')";
$_session['find'] blir kun eet element i listen.
Avatar billede showsource Seniormester
26. januar 2010 - 13:01 #32
Nu viser du ikke din kode, men vil tro at du igen "roder rundt" inde i din foreach ?
Avatar billede konder Nybegynder
26. januar 2010 - 13:17 #33
Jeg forsøgte først at gøre som du sagde og skifte $find ud med sessionen men siden vises så ikke.
if (isset($_POST['varer'])) {
    echo "<BR><BR><B>Desuden følgende ekstra:</B><br>";

    $varer = $_POST['varer'];


    $kr_ialt = 0;
      $_SESSION["find"] = array();


    foreach($varer as $kud){


    $_SESSION["find"] = $kud;
    }


$sql = "SELECT * FROM bi WHERE navn IN ('".implode("','",$_SESSION["find]")."')";

$foresp = mysql_query($sql)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["ialtkr"] += $kr_ialt += $_SESSION["pris"];
echo "ha ha ha";
echo "<BR>Listen er således{$_SESSION['find']}";

?>
Avatar billede konder Nybegynder
26. januar 2010 - 13:24 #34
På den "gamle" facon kan jeg i det mindste få udskrevet listen i echo "('".implode("','",$find)."')";. Men så heller ikke længere.





if (isset($_POST['varer'])) {
    echo "<BR><BR><B>Desuden følgende ekstra:</B><br>";

    $varer = $_POST['varer'];


    $kr_ialt = 0;
      $find = array();


    foreach($varer as $kud){


    $find[] = $kud;
    }


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

$foresp = mysql_query($sql)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["ialtkr"] += $kr_ialt += $_SESSION["pris"];
echo "ha ha ha";
$_session['find'] = array();
echo "<BR>Der jo nu koster{$_SESSION['ialtkr']}";
echo "('".implode("','",$find)."')";

$_session['find'] = "('".implode("','",$find)."')";
echo "<BR>Listen er således{$_SESSION['find']}";

?>
Avatar billede showsource Seniormester
27. januar 2010 - 07:23 #35
Du glemmer []

foreach($varer as $kud){

    $_SESSION["find"][] = $kud;
}
Avatar billede showsource Seniormester
27. januar 2010 - 14:21 #36
Fandt du ud af det ????
Avatar billede konder Nybegynder
27. januar 2010 - 14:32 #37
Ja, tak nøjagtig som du sagde. Læg et svar.
Avatar billede konder Nybegynder
27. januar 2010 - 14:33 #38
Nåh nej, du har jo allerede fået.
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