Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

Pracujem na menšom maturitnom projekte :) Pridávanie do košíka a všetko okolo toho mám ale keď chcem produkt z karty (z databázy) vymazať nefunguje mi to. Potreboval by som pomoc či mi v kóde niečo chýba alebo prečo nefunguje

Karta:

<!DOCTYPE HTML PUBLIC>
 <?php
 include("funkcie/funkcia.php");
 ?>
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="001.css">
<title>XXXXXX</title>


</head>

<body>

<?php
 include("menu.php");
 ?>

    <div id="obal">

        <div id="produkt_box">

            <from action="" method="post" enctype="multipart/from-data">

                <table align="center" width="700">

                    <tr align="center">
                        <th>Zmazať</th>
                        <th>Produkt</th>
                        <th>Množstvo</th>
                        <th>Cena produktu</th>
                    </tr>

    <?php
    $celkom = 0;

    global $con;

    $ip = getIp();

    $sel_cena = "select * from karta where ip_adres='$ip'";

    $run_cena = mysqli_query($con, $sel_cena);

    while($p_cena = mysqli_fetch_array($run_cena)){

        $pro_id = $p_cena["p_id"];

        $pro_cena = "select * from produkt where produkt_id='$pro_id'";

        $run_pro_cena = mysqli_query($con,$pro_cena);

        while ($pp_cena = mysqli_fetch_array($run_pro_cena)) {

            $produkt_cena = array($pp_cena["cena"]);

            $produkt_nazov = $pp_cena["nazov"];

            $produkt_obr = $pp_cena["obrazok"];

            $cena_produktu = $pp_cena["cena"];

            $hodnota = array_sum($produkt_cena);

            $celkom +=$hodnota;

    ?>

                    <tr align="center">
                        <td> <input type="checkbox" name="remove[]" value="<?php echo $pro_id; ?>"/> </td>
                        <td><?php echo $produkt_nazov;?><br>
                            <img src="Admin/obrazky/<?php echo $produkt_obr;?>" width="60px" height="60px" />
                        </td>
                        <td><input type="text" size="4" name="mnozstvo"/></td>

                        <td><?php echo $cena_produktu . " €"; ?></td>
                    </tr>


    <?php  } }?>

                <tr align="center">
                    <td><b>Spolu:</b></td>
                    <td colspan="3"><?php echo $celkom . "€";?></td>
                </tr>


                    <tr align="center">
                        <td> <input type="submit" name="aktualizovat" value="Aktualizovať"/> </td>
                        <td><input type="submit" name="pokracovat" value="Pokračovať v nákupe"/></td>
                        <td><button><a href="pokladna.php" style="text-decoration: none; color: black; ">Pokladňa</a></button></td>
                    </tr>
                </table>


            </from>
             <?php

            $ip = getIp();

            if(isset($_POST['aktualizovat'])){

                foreach ($_POST['remove'] as $remove_id){

                    $delete_produkt = "DELETE FROM karta WHERE p_id='$remove_id' AND ip_adres='$ip'";

                    $run_delete = mysqli_query($con, $delete_produkt);

                    if($run_delete){

                        echo "<script>window.open('karta.php','_self');</script>";
                    }
                }
            }

            ?>

        </div>


</div>


</body>
</html>

Vo funkcie.php (include("fun­kcie/funkcia.php");) je s kartou spojené iba toto :)

<?php
$con = mysqli_connect("localhost","root", "","druha");
mysqli_query($con,"SET NAMES 'utf8'");


function getIp() {
    $ip = $_SERVER['REMOTE_ADDR'];

    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

    return $ip;
}
?>
  • databaza :)

(Keby bol niekto ochotný to skúsiť vyriešiť cez skype moc by som bol rád :) )

Ďakujem všetkým čo sa na to kuknú.

Editováno 30.12.2014 20:17
 
Odpovědět 30.12.2014 20:15
Avatar
Odpovídá na Matej Bandik
Martin Konečný (pavelco1998):

Co ti vypíše proměnná $delete_produkt?

 
Nahoru Odpovědět 30.12.2014 20:35
Avatar
Ori
Člen
Avatar
Odpovídá na Matej Bandik
Ori:

tak za prvé určite by som to nemazal podľa IP adresy ... na jednej IP môže byť viacej užívateľov, teoreticky. čiže by si mal mať v DB p_id(asi id predmetu), user_id, potom aj niečo z časom čo by košík po jednom dni premazalo, preistotu.

za

$delete_produkt = "DELETE FROM karta WHERE p_id='$remove_id'....

si vypíš obsah toho $delete_produkt a potom daj die; a výsledok si pozri či odpovedá nejakému záznamu v DB, možno tam nejako zle predávaš tie parametre alebo niečo v tom zmysle

 
Nahoru Odpovědět  +3 30.12.2014 20:40
Avatar
sahlepik
Člen
Avatar
sahlepik:

Jen malá poznámka: oprav si definici formuláře. Místo párové značky <form></form> máš použito <from></from>

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 30.12.2014 22:11
Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

Tiež som nad IP rozmýšľal a prišlo mi to ako najľahší spôsob kedy môžu nakupovať 10 (pravdaže nie celá rodinka :) ) ľudia bez toho aby vznikol nejaký problém (riešenie je dočasná a "najľahšie" PHP študujem iba chvíľku) :) áno p_id je id produktu

 
Nahoru Odpovědět 30.12.2014 22:13
Avatar
Matej Bandik
Člen
Avatar
Odpovídá na sahlepik
Matej Bandik:

Od vtedy ako sa venujem PHPčku strávim nad hľadaním chyb viac ako nad samotným programovaním :D <from> Ako som mohol ? :D diky ;) a teraz myslieť nad vylepšením :)

 
Nahoru Odpovědět 30.12.2014 22:21
Avatar
Matej Bandik
Člen
Avatar
Odpovídá na sahlepik
Matej Bandik:

Od vtedy ako sa venujem PHPčku strávim nad hľadaním chyb viac ako nad samotným programovaním :D <from> Ako som mohol ? :D diky ;) a teraz myslieť nad vylepšením :)

 
Nahoru Odpovědět  +1 30.12.2014 22:21
Avatar
sahlepik
Člen
Avatar
sahlepik:

Vytvoř si tabulku nakupni_kosik, kde bude mít každý nákup svoje vlastní ID a podle toho se dá spolehlivě mazat. I kdyby stejný uživatel udělal tentýž den další nákup, ID dalšího nákupu bude jiné a jedinečné vůči ostatním nakupujícím i jiným nákupům tohoto uživatele. :)

 
Nahoru Odpovědět 30.12.2014 22:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.