Avatar billede shafter Nybegynder
30. oktober 2004 - 10:07 Der er 17 kommentarer

session og mysql

Jeg har denne kode:
<?php
if (isset($_GET['bh'], $_GET['antal'], $_GET['id'])) {
  session_start(); // Lad os begynde!
  $_SESSION["bh"] = $_GET["bh"];
  $_SESSION["id"] = $_GET["id"];
  $_SESSION["antal"] = $_GET["antal"]; // Gem
}
    include("dbconnect.php"); ?>
<table  border="0">
  <tr>
  <td>
<?php

    // Kontroller om der er sendt et id. Hvis der er og det er et tal,
    // så bruger vi det. Ellers søtter vi id til 0:
    $id =(isset($_GET['vis']) && is_numeric($_GET['vis'])) ? $_GET['vis'] : 0;

    if(!$id){
      // vis fejlbesked eller noget i den stil
    } else {
        $resultat = mysql_query("select * from produkt WHERE id = $id");
        $raekke = mysql_fetch_assoc($resultat);
        echo "
        <img src=\"./billeder/".$raekke['billed']."\" width=\"40\" height=\"55\"><br>
        Art nr: ".$raekke['artnr']."<br>
        Info: ".$raekke['tekst']." <br>
    Pris: ".$raekke['pris']."<br>
";   
    }
?>



<?php if (isset($_GET['antal'])) { ?>

<b>Tak for det!</b><br>
Klik her for at kigge i din <a href="session2.php">kurv</a>
<br>
Eller her for at kigge videre i vores <a href="kollektion.php">Kollektion</a>

<?php } else { ?>
<form action="session1.php">

<table width="126" border="0">
  <tr>
    <td>Antal:</td>
    <td align="right" valign="bottom"> <select name="antal">
          <option>1</option>
          <option>2</option>
          <option>3</option>
          <option>4</option>
          <option>5</option>
        </select></td>
  </tr>
  <tr>
    <td>BH:</td>
    <td align="right" valign="bottom"><select name="bh">
          <option>a</option>
          <option>b</option>
          <option>c</option>
          <option>d</option>
          <option>e</option>
        </select></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td  align="right" valign="bottom"><input type="submit" value="køb">
</form>
  </tr>
</table>

<?php } ?>

</body>
</html>


Men den vil ikke gemme mit id som er hentet fra databasen, ind i mine sessions og videre til den næste side, hvorfor? og mere vigtigt, hvordan skal jeg sætte det op, så den husker den også, og sender den videre, så man senere kan bruge den til at hente informationer ud ?
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 10:18 #1
Hvor for du id fra ?
Avatar billede shafter Nybegynder
30. oktober 2004 - 10:52 #2
Her fra:

<?php
$resultat = mysql_query("select * from produkt");

while ($raekke = mysql_fetch_array($resultat)) {
  echo "<b>
<a href=produkt.php?vis=".$raekke['id']."><img src=./billeder/".$raekke['billed']." width=40 height=55></a> -
<a href=produkt.php?vis=".$raekke['id'].">Art nr: ".$raekke['artnr']."</a>
<br>
<br/>";   
}

?>

og det kører fint nok over i næste side, men videre der fra plus de valg man vælger der, og over til den næste side, det vil den ikke
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 10:54 #3
Når du har et link som det her:
produkt.php?vis=123, vil værdien 123 ligge i variablen $_GET['vis'] og ikke $_GET['id'].
Så skulle den hedde:
produkt.phpid=123
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 10:57 #4
Manglede lige et ?
produkt.php?id=123
Avatar billede shafter Nybegynder
30. oktober 2004 - 11:11 #5
okay, det kan jeg tildels godt forstå, men kan ikke lige helt overskue, hvordan jeg retter min fil fra det jeg postede først til, sådan at det bliver rigtigt. den tager nemlig kun de 2 valg med, og ikke "id" nr'et.

eller for at være helt ærlig, så vil den ikke poste noget resultat, så længe jeg har:  $_SESSION["id"] = $_GET["id"]; og , $_GET['id'] i min if sætning. fjerner jeg dette, vil den godt vise resultalt.
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 11:19 #6
SÅdan her:
if (isset($_GET['bh'], $_GET['antal'], $_GET['vis'])) {
  session_start(); // Lad os begynde!
  $_SESSION["bh"] = $_GET["bh"];
  $_SESSION["id"] = $_GET["vis"];
  $_SESSION["antal"] = $_GET["antal"]; // Gem
}

Så ligger den $_GET['vis'] over i $_SESSION['id']
Avatar billede shafter Nybegynder
30. oktober 2004 - 11:24 #7
nu virker det..til dels, dog på min næste side, kan jeg ikke trække id'et ud ?
min næste side, den der bliver linket til, ser sådan ud:
<?php
session_start();
?>

<html>
<head>
    <title>kurv</title>
</head>
<body>


<?php print "Antal: <b>".$_SESSION['antal']."</b>";?> <br>
<?php print "Bh valg: <b>".$_SESSION['bh']."</b>";?> <br>
<?php print "id nr: <b>".$_SESSION['id']."</b>";?> <br>


</body>
</html>

Det er som om at den ikke smider id'et op i adresse linie, fra den første side af, fordi den ser bare sådan her ud:
http://minside/session1.php?antal=3&bh=c
hvor jeg tror den skal se sådanne ud:
http://minside/session1.php?antal=3&bh=c&id=3 (eksemple)
Avatar billede atheist Nybegynder
30. oktober 2004 - 11:26 #8
du skal ha indsat
<? session_start(); ?>
i toppen dokumentet, dvs på allerførste linje, også før <html>, på alle sider hvor du bruger sessions.
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 11:30 #9
Jeg kan ikke finde ud af hvilken side du starter på.
På den side hvor du har dine select bokse, er der ikke noget med id.
Avatar billede shafter Nybegynder
30. oktober 2004 - 12:37 #10
okie, det er sådan her:
har 3 sider:
side 1:
<? include  ("db.php") ;  ?>

<hr width=100%>
<?php
// Hent først data ud
$resultat = mysql_query("select * from produkt");

// Kør så igennem for hver række
while ($raekke = mysql_fetch_array($resultat)) {
  echo "<b>
<a href=produkt.php?vis=".$raekke['id']."><img src=./billeder/".$raekke['billed']." width=40 height=55></a> -
<a href=produkt.php?vis=".$raekke['id'].">Art nr: ".$raekke['artnr']"</a> -
<a href=produkt.php?vis=".$raekke['id'].">Info: ".$raekke['tekst'].</a>
<a href=produkt.php?vis=".$raekke['id'].">Pris: ".$raekke['pris'].</a>
<a href=produkt.php?vis=".$raekke['id'].">Vis</a>

<br>
<br/>";   
}
?>
<hr width=100%>

side 2:
<?php
if (isset($_GET['bh'], $_GET['antal'], $_GET['vis'])) {
  session_start(); // Lad os begynde!
  $_SESSION["bh"] = $_GET["bh"];
  $_SESSION["id"] = $_GET["vis"];
  $_SESSION["antal"] = $_GET["antal"]; // Gem
}

    include("dbconnect.php"); ?>
<table  border="0">
  <tr>
  <td>
<?php

    // Kontroller om der er sendt et id. Hvis der er og det er et tal,
    // så bruger vi det. Ellers søtter vi id til 0:
    $id =(isset($_GET['vis']) && is_numeric($_GET['vis'])) ? $_GET['vis'] : 0;

    if(!$id){
      // vis fejlbesked eller noget i den stil
    } else {
        $resultat = mysql_query("select * from produkt WHERE id = $id");
        $raekke = mysql_fetch_assoc($resultat);
        echo "
        <img src=\"./billeder/".$raekke['billed']."\" width=\"40\" height=\"55\"><br>
        Art nr: ".$raekke['artnr']."<br>
        Info: ".$raekke['tekst']." <br>
    Pris: ".$raekke['pris']."<br>
";   
    }
?>



<?php if (isset($_GET['antal'])) { ?>

<b>Tak for det!</b><br>
Klik her for at kigge i din <a href="side3.php">kurv</a>
<br>
Eller her for at kigge videre i vores <a href="kollektion.php">Kollektion</a>

<?php } else { ?>
<form action="side3.php">

<table width="126" border="0">
  <tr>
    <td>Antal:</td>
    <td align="right" valign="bottom"> <select name="antal">
          <option>1</option>
          <option>2</option>
          <option>3</option>
          <option>4</option>
          <option>5</option>
        </select></td>
  </tr>
  <tr>
    <td>BH:</td>
    <td align="right" valign="bottom"><select name="bh">
          <option>a</option>
          <option>b</option>
          <option>c</option>
          <option>d</option>
          <option>e</option>
        </select></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td  align="right" valign="bottom"><input type="submit" value="køb">
</form>
  </tr>
</table>

<?php } ?>

</body>
</html>

side 3:

<?php
session_start();
?>


<html>
<head>
    <title>side3.php</title>
</head>
<body>


<?php print "Antal: <b>".$_SESSION['antal']."</b>";?> <br>
<?php print "Bh valg: <b>".$_SESSION['bh']."</b>";?> <br>
<?php print "id nr: <b>".$_SESSION['id']."</b>";?> <br>


</body>
</html>


brug for mere? fordi har ikke så meget mere
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 13:44 #11
Du kan jo bare sende id'et med i den næste form:
<?php } else { ?>
<form action="side3.php?id=<?php echo $_GET['vis']; ?>">

<table width="126" border="0">
Avatar billede shafter Nybegynder
31. oktober 2004 - 14:07 #12
Nej, det gør den af en eller anden underlig grund ikke :(
adresse linien ser kun sådan her ud:
side2.php?antal=5&bh=b
den mangler ligesom &id= / eller &vis= må det jo næsten være
Avatar billede shafter Nybegynder
31. oktober 2004 - 16:07 #13
aaah fandt ud af det selv :o)
  $_SESSION['id1'] = $id;
sådan skulle session'en laves.

men tak tak :)
Avatar billede shafter Nybegynder
31. oktober 2004 - 17:51 #14
og nu virker det så ikke igen... har intet gjort... :|
Avatar billede hmortensen Nybegynder
31. oktober 2004 - 17:54 #15
Hvorfor id1 ?
Jeg er slet ikke med på hvad du har gang i...
Avatar billede shafter Nybegynder
31. oktober 2004 - 18:01 #16
nå, det var bare fordi jeg lige ville prøve at gøre det lidt mere overskueligt for mine øjne.
Men nu virker det som sagt ikke igen, meget underligt.

Du har ikke en ide, måske endda script? til det jeg er i gang med? er i bund og grund bare en indkøbs kurv, hvor efter man har klikket sig ind på produktet, så kan tilføje det i kurven.
Lige pt. er det kun de 2 valg fra min form der kommer over i den.
og de ting som pris osv. så er hentet fra databasen.


Men en anden ting som jeg ikke lige kan overskue, er hvordan den vil/skal håndtere når man køber flere forskellige vare, fordi på denne måde her, har de jo samme session, og så overskriver den vel bare den forgående session, når den tilføjes igen, ikk?
Avatar billede shafter Nybegynder
31. oktober 2004 - 18:27 #17
eller kan jeg smide alle mine informationer som jeg skal bruge på side 2 ind i et array, altså både fra databassen, og fra de valg man laver på side 2, gemme det i en session, og så hente det ud igen på  side 3?
og er det så muligt at trække de individuelle ting ud fra array'et fra den session man har ført videre til side 3?
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