Avatar billede Morten Professor
14. april 2015 - 11:25 Der er 12 kommentarer og
1 løsning

Vil gerne igang med session i mysqli

Hej

Jeg vil høre om der er nogen der kan sætte mig i gang, med nogle så simple måder at komme i gang med session mysqli, jeg må hellere tage mig sammen så jeg er klar, til at bruge mysqli.
Avatar billede olsensweb.dk Ekspert
14. april 2015 - 12:38 #1
hvis vi genbruger løkken fra http://www.eksperten.dk/spm/1003064 , og retter sql fejlen så har vi dette at starte op på

connection.php

<?php
// ligger externt da connection skal bruges i flere filer
$db_host = "localhost";
$db_username ="root";
$db_password="";
$db = "test";
$test_database_session = mysqli_connect($db_host, $db_username, $db_password, $db);
if (!$test_database_session) {
    echo 'Der opstod en fejl.';
    exit();
}
mysqli_set_charset($test_database_session, "utf8");
?>





<?php
if(! isset($_SESSION) ){
    session_start();
    $_SESSION['kurv'] = array();   
   
    // test data skal slettes senere
    $_SESSION['kurv']=array(
        "4"=>array("id"=>4, "antal"=>2),
        "2"=>array("id"=>2, "antal"=>2),
        "1"=>array("id"=>1, "antal"=>2),
        "7"=>array("id"=>7, "antal"=>2)
    );
   
}
require_once("connection.php");

foreach($_SESSION["kurv"] as $varer => $vare){
    $id = $vare['id'];
    $antal = $vare['antal'];
    $query_rsVarer = "SELECT * FROM tbl_vare WHERE id = ".$id;
   
   
    $rsVarer = mysqli_query($test_database_session, $query_rsVarer) or die(mysqli_error($test_database_session));
    $row_rsVarer = mysqli_fetch_assoc($rsVarer);
    echo '<br /><a href="slet_en_vare.php?id='.$id.'">Slet</a><br />';
    echo '<br /><a href="slet_antal.php?id='.$id.'">Slet antal</a><br />';
    echo $id;
    echo "<br />";
    echo $id = $row_rsVarer['name'];
    echo "<br />";
    echo "Om varen: ".$row_rsVarer['tekst'];
    echo "<br />";
    echo "Pris: ".$row_rsVarer['pris']." kr.";
    echo "<br />";
    echo "Antal: ".$antal;
    echo "<br />";
    echo "Pris i alt: ".$antal * $row_rsVarer['pris']. " kr. i alt.";
    echo "<br />";
}
?>
Avatar billede olsensweb.dk Ekspert
14. april 2015 - 12:43 #2
sql fil

---------------------------------

--
-- Database: `test`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `tbl_vare`
--

CREATE TABLE IF NOT EXISTS `tbl_vare` (
`id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `pris` float NOT NULL,
  `tekst` text COLLATE utf8_danish_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;

--
-- Data dump for tabellen `tbl_vare`
--

INSERT INTO `tbl_vare` (`id`, `name`, `pris`, `tekst`) VALUES
(1, 'sofa0', 12.5, 'brun læder sofa0'),
(2, 'sofa1', 12.5, 'brun læder sofa1'),
(3, 'sofa2', 12.5, 'brun læder sofa2'),
(4, 'sofa3', 12.5, 'brun læder sofa3');
Avatar billede Morten Professor
14. april 2015 - 14:36 #3
Hej ronols

Så er alt klar.

men jeg får kun udskrevet de her arrays
    $_SESSION['kurv']=array(
        "4"=>array("id"=>11, "antal"=>2),
        "2"=>array("id"=>2, "antal"=>2),
        "1"=>array("id"=>1, "antal"=>2),
        "7"=>array("id"=>7, "antal"=>2)
    );
   
}
Hvordan ændre jeg det?
Avatar billede Morten Professor
14. april 2015 - 14:53 #4
Jeg kan fint udskrive fra den med forskellig id jeg har tilføjet til session. feks. id 11
Så kommer alt det som står fra databasen, så det virker rigtig godt.

Men kan ikke lave noget udover det som står i den arrayen.
Avatar billede Morten Professor
14. april 2015 - 14:54 #5
Altså i
      "4"=>array("id"=>11, "antal"=>2),
        "2"=>array("id"=>2, "antal"=>2),
        "1"=>array("id"=>1, "antal"=>2),
        "7"=>array("id"=>7, "antal"=>2)
Avatar billede olsensweb.dk Ekspert
14. april 2015 - 15:56 #6
>men jeg får kun udskrevet de her arrays
ja dit session array indeholder ikke mere

>Hvordan ændre jeg det?
ligger noget mere i kurven

// tilføje en vare til kurven
$_SESSION['kurv'][$vare_id]=array("id"=>$vare_id, "antal"=>$antal);


så du skal overføre dit $vare_id og et antal, du vil "købe"
der kan du enten bruge sammen side eller en ny side

her på sammen side

<?php
if(! isset($_SESSION) ){
    session_start();       
}
if(! isset($_SESSION['kurv']) ){
    $_SESSION['kurv'] = array();   
}

if (isset($_POST['action'])) {
    $action = $_POST['action'];
    $id = $_POST['id'];
    switch ($action) {
        case 'add':
            $quantity = $_POST['quantity'];
            $_SESSION['kurv'][$id] = array("id" => $id, "antal" => $quantity);
            break;
        default: break;
    }
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title>demo</title>
   
    <style type="text/css">
    </style>
    <script type="text/javascript">
   
    </script>
</head>
<body>
<?php
require_once("vis_kurv.php");
?>
        alle vare
        <div>
            <span>navn</span>
            <span>beskrivelse</span>
            <span>antal</span>
            <span>pris</span>
            <span>tilføj</span>
        </div>

        <?php
            $str = "";
            $sql ="SELECT * FROM tbl_vare";
            $rs = mysqli_query($test_database_session, $sql) or die(mysqli_error($test_database_session));
            while($row = mysqli_fetch_assoc($rs)){       
            $str.="\n";
            $str.='<div>';
            $str.='<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
            $id = $row['id'];
            $str.='<input type="hidden" name="id" value="' . $id . '" >';
            $str.='<span>' . $row['name'] . '</span>';
            $str.='<span>' . $row['tekst'] . '</span>';
            $str.='<span><input type="number" name="quantity" min="1" max="5"></span>';
            $str.='<span>' . $row['pris'] . '</span>';
            $str.='<span><input type="submit" name="action" value="add"></span>';
            $str.="</form>";
            $str.='</div>';
        }
        echo $str;
        ?>
</body>
</html>

lidt hurtigt lavet http://experten.olsensweb.dk/1003082.zip
Avatar billede Morten Professor
15. april 2015 - 16:38 #7
Tak ronols

Det virker rigtig godt, tak for hjælpen så kan jeg rigtig udforske det.

Vil du lave et svar, så du kan få dine velfortjente point :o)

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
16. april 2015 - 10:16 #8
får du her
Avatar billede olsensweb.dk Ekspert
16. april 2015 - 10:23 #9
du har så "bare en lille opgave", alle de ting du bruger i det gamle API, skal du til at convaterer til mysqli.
så er du klar til det gamle API udgår

på sigt bør du kigge på Prepared Statements
http://www.eksperten.dk/guide/1480
http://www.eksperten.dk/guide/1479
Avatar billede Morten Professor
16. april 2015 - 19:50 #10
Ja det må jeg hellere jeg kommer godt nok på arbejde. :o)
Har en del sider jeg skal holde.

Jeg vil kigge på det.
Og mange tak det vil jeg kigge på.

Jeg har leget lidt med det.
Så jeg kunne se en vare af gangen og det virker fint, så jeg kan nøjes med at skrive et id, da brugeren nok gerne vil se varerende i katagoriger.

Jeg får nogle fejl ved opsætning.
Det virker fint men lidt træls med de fejlmeldinger.



Notice: Undefined variable: pris in C:\wamp\www\odderloppetorv_webshop\mysqli_kurv\vis_kurv.php on line 36

Notice: Undefined variable: antalvarer in C:\wamp\www\odderloppetorv_webshop\mysqli_kurv\vis_kurv.php on line 37

Notice: Undefined index: id in C:\wamp\www\odderloppetorv_webshop\mysqli_kurv\index.php on line 49

Ker er den redigerede kode.

    echo '<div style="float:left;">';
    echo '<div>';
    echo '<br /><a href="slet_en_vare.php?id='.$id.'">Slet</a><br />';
    echo '<br /><a href="slet_antal.php?id='.$id.'">Slet antal</a><br />';
    echo '<a class="thumbnail" href="../uploads/'.$row_rsVarer['billede'].'" rel="lightbox[roadtrip]" class="gallerycontainer"><img src="../uploads/'.$row_rsVarer['billede'].'" width="100px" border="0" /><span><img src="../uploads/'.$row_rsVarer['billede'].'" /><br />'.$row_rsVarer['vare'].'</span></a>';
    echo "<br />";
    echo $id;
    echo "<br />";
    echo $id = $row_rsVarer['vare'];
    echo "<br />";
    echo "Om varen: ".$row_rsVarer['tekst'];
    echo "<br />";
    echo "Pris: ".$row_rsVarer['pris']." kr.";
    echo "<br />";
    echo "Antal: ".$antal." stk.";
    echo "<br />";
    echo "Pris i alt: ".$antal * $row_rsVarer['pris']. " kr. i alt.";
    echo "<br />";
    echo '</div>';
    echo '</div>';
    $pris += $row_rsVarer['pris'] * $antal;
    $antalvarer += $antal;
}
?>


<div><br />
<?php
echo '<div>Samlet antal '; echo $antalvarer. " stk.".'</div>';
echo '<div>Samlet pris '; echo $pris. " kr.".'</div>';
?>
</div>
Avatar billede Morten Professor
16. april 2015 - 20:15 #11
<?php
            $str = "";
            $sql ="SELECT * FROM vare WHERE id =". $_GET['id'];
            $rs = mysqli_query($test_database_session, $sql) or die(mysqli_error($test_database_session));
            while($row = mysqli_fetch_assoc($rs)){       
            $str.="\n";
            $str.='<div>';
            $str.='<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
            $id = $row['id'];
            $str.='<input type="hidden" name="id" value="' . $id . '" >';
            $str.='<span>' . $row['vare'] . '</span>';
            $str.='<span>' . $row['tekst'] . '</span>';
            $str.='<span><input type="number" name="quantity" min="1" max="5"></span>';
            $str.='<span>' . $row['pris'] . '</span>';
            $str.='<span><input type="submit" name="action" value="add"></span>';
            $str.="</form>";
            $str.='</div>';
        }
        echo $str;
        ?>
Avatar billede Morten Professor
16. april 2015 - 20:29 #12
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Avatar billede Morten Professor
16. april 2015 - 21:45 #13
Hov det er lige meget undskyld

Det er bare fordi der mangler et id i browseren når jeg har tilføjet.
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