Koszyk na zakupy - dodanie funkcji mnożenia danego artykułu

2015-07-06 19:45

Rejestracja: 5 lat temu

Ostatnio: 1 miesiąc temu

0

Witam
Mam taki problem, chciałem do swojego koszyka dodać możliwość mnożenia danego artykułu przez pewną ilość podana przez użytkownika i teraz mi nie działa. Nie wiem dlaczego ale nie chce mi przechodzić ze strony z towarami na strone z koszykiem. Czy mógłby ktoś zerknąć i coś podpowiedzieć?

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

if(isSet($_GET['powierzchnia'])){
  $_SESSION['koszyk_powierzchnia'][$_GET['kup']]=$_GET['powierzchnia'];
}

if (isset($_GET['kup']))
{
// jezeli dodajemy jaki¶ produkt do koszyka
  $_SESSION['koszyk'][] = $_GET['kup'];

// przekierowanie z uwzględnieniem nie działaj±cych ciasteczek
header('location: '.$_SERVER['PHP_SELF']. '?' .SID);
exit();
}

?>

<b>Twoj koszyk zawiera: 
<?php print count($_SESSION['koszyk']); ?> produktow.</b>
<p><a href="koszyk.php">Zobacz koszyk</a></p>

<?php //definicja tablic z towarami oraz cenami

$lacz = mysql_connect('localhost','root','444') or
die('Padl serwer');
$lacz = mysql_select_db('stronaphp') or die('Padla baza');

$wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug ") or die('Błąd zapytania');

?>
<table border="1">
 <thead>
  <tr>
      <th>ID</th>
      <th>Opis towaru</th>
        <th>cena</th>
    </tr>
 </thead>
<tbody>

<?php //wyswietlamy towary z tablicy

$i= isset($_GET['i']) ? (int)$_GET['i'] : 0;

$towary = array();
$ceny = array();

while ($row = mysql_fetch_array($wynik))
{
$towary[]=$row['Nazwa_uslugi'];
    $ceny[]=$row['Cena_za_metr'];

        $ilosc=1;
        $ilosc=$_SESSION['powierzchnia'];

        print '<tr><td>'.$row['ID'].'</td>';
print '<td>'.$row['Nazwa_uslugi'].'</td>';
print '<td>'.$row['Cena_za_metr'].'</td>';

echo "<td>
<form method=\"get\" action=".$_SERVER['PHP_SELF']."\">
<input type=\"hidden\" name=\"kup\" value={$row['ID']}>
<input type=\"text\" name=\"powierzchnia\" value=\"$ilosc\">
<input type=\"submit\" value=\"Kup produkt\">
</form>
<td>";

}
?>
 </tbody>
</table>
</body>
</html>

      </body>
    </html>

i kod koszyka

<?php
session_start();

/* inicjuje zmienna */
if(empty($_SESSION['powierzchnia'])){
  $_SESSION['powierzchnia'] = 0;
}
if(isset($_GET['powierzchnia'])){
  /* przetwarza dane formularza powierzchni */
  $_SESSION['koszyk_powierzchnia'][$_GET['kup']]=$_GET['powierzchnia'];
}

if (!isset($_SESSION['koszyk'])) {
  $_SESSION['koszyk'] = array();
}

if (isset($_GET['reset']))  //chcemy wyczy¶cić koszyk
{
      unset($_SESSION['koszyk']);
            header('location: '. $_SERVER['PHP_SELF']. '?'. SID);
            exit();
}
?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Firma budowlana </title>
  </head>
  <body>
<h1>Twoj koszyk z zakupami</h1>

<?php

   // definicja tablic z towarami oraz cenami

$i= isset($_GET['i']) ? (int)$_GET['i'] : 0;

$q = mysql_connect('localhost','root','444') or
die('Padl serwer');
$q = mysql_select_db('stronaphp') or die('Padla baza');

$wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug") 
or die('Błąd zapytania'); 

$towary = array();
$ceny = array();
while ($row = mysql_fetch_array($wynik))
{
    $towary[$row['ID']]=$row['Nazwa_uslugi'];
    $ceny[$row['ID']]=$row['Cena_za_metr'];
}
?>

<table border="1">
  </thead>     
             <tr>

                   <th>Nazwa usługi</th>
                     <th>Cena za metr</th>
                </tr>
        </thead>
    <tbody>

<?php
$suma = 0;
$ilosc = 1;
if($_SESSION['koszyk_powierzchnia']>0){
  $ilosc = $_SESSION['koszyk_powierzchnia'];
}
for ($i=0;$i < count($_SESSION['koszyk']); $i++)
{
        echo '<tr>';
        echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
        echo '<td align="right">';
        echo $ilosc.' m<sup>2</sup> x '.number_format (($ceny[$_SESSION['koszyk'][$i]])* $ilosc,2);
        echo ' zlotych</td></tr>';
        $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]]);
}
?>

</tbody>
 <tfoot>
  <tr>
      <th align="right">Naleznosc: </th><br>
        <th align="right"><?php echo number_format($suma,2); ?> zlotych.</th>
    </tr>
 </tfoot>
</table>

<p><a href="towary.php">Kupuj dalej</a> lub też: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?reset=1">Wyczysc swoj koszyk</a></p>
</body>
</html>
edytowany 2x, ostatnio: furious programming, 2015-07-06 23:01
Cóż masz w koszyku czerwony kapturku? Banda gratulujących siedzi na murku. I nie znosi innych racji. Czy @furious programming przy kolacji jadąc z odległej kolejowej stacji uświadomi temu ziomowi, że nie każdy język koszyka wymaga jak góralska ciupaga, niech moderuje na pohybel gratulujące zbóje. Następnym razem może lepiej otaguje. - olesio 2015-07-06 20:01
@olesio, zamiast bredzić jak potłuczony mógłbyś po prostu samemu dodać tag języka, upomnieć autora albo przenieść wątek do kosza. To co obecnie wyprawiasz kwalifikuje się pod trolling. - somekind 2015-07-06 22:09
Ja bredziłem w temacie z gratulacjami? W zabawny i wierszowany sposób namawiam innego moda żeby spojrzał dodatkowymi oczami czy tylko mi tagi nie leżą. Później znowu ma być gównoburza, że śmiałem coś wymoderować. A nasze tłumaczenie stanie na przeciw argumentowi jakże rzeczowym, że koszyk zakupów można zaimplementować w każdym języku. I bardzo ważne jest wspomnienie o nim w tagach. - olesio 2015-07-06 22:36
Naniosłem małe poprawki; - furious programming 2015-07-06 23:02
@olesio, Twój foch i popadanie w skrajność jest skrajnym obciachem. Ile Ty masz lat? 12? - somekind 2015-07-07 00:05
Mam trochę więcej. Dlatego będę po konsultacji z Shalomem poprawiał tagi etc. Ale mniej koszował. A i jak tutaj nie mieć "focha"? Skoro jakiś anonim robi borute gratulacjami, a ja nie uzyskuje poparcia żadnego. Bo sobie gość uroił, że do worka WinAPI można wrzucić wszystko nawet brainfaka. I nie przyjmuje żadnych argumentów, a ja się mam czuć jako sprawca zamieszania. - olesio 2015-07-07 00:35

Pozostało 580 znaków

2015-07-06 21:43
Moderator

Rejestracja: 12 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

1

Generalnie to najlepiej wyrzuć ten kod.
Rozdziel logikę aplikacji od widoku, poczytaj o MVC.


Pozostało 580 znaków

2015-07-06 21:45

Rejestracja: 5 lat temu

Ostatnio: 1 miesiąc temu

0

Czemu wyrzucić? Do tej pory wszystko pięknie działało tylko teraz coś nie chce działać po wprowadzeniu tych pól do wpisywania ilości

Pozostało 580 znaków

2015-07-06 21:46
Moderator

Rejestracja: 12 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

2

Ponieważ to wszystko jest jednym, wielkim, nieczytelnym spaghetti code i dzieje się tutaj jednocześnie i wszystko, i nic.


Obrażasz spaghetti code. To jest zupa tagów (daleko bardziej g...orszy kod). Spaghetti code to gdy funkcja woła funkcję, która woła funkcję itd... Przykład jak namieszać ze zmiennymi: https://pl.wikipedia.org/wiki/Spaghetti_code, zupa tagów: http://blog.codinghorror.com/web-development-as-tag-soup/ - vpiotr 2015-07-06 22:19
Spagetti kojarzy się raczej z czymś kompletnie poplątanym - przynajmniej mnie; - furious programming 2015-07-06 23:02
Dla mnie ten kod jest właśnie zupełnie poplątany. Mieszanie wszystkiego w jedno. - Patryk27 2015-07-06 23:35

Pozostało 580 znaków

2015-07-06 22:11

Rejestracja: 5 lat temu

Ostatnio: 1 miesiąc temu

0

To może inaczej zapytam, jest jakiś sposób abym mógł oddzielnie dla każdej linii w koszyku wpisać ilość i to zatwierdzić? Chodzi mi o tą część kodu przede wszystkim:

 for ($i=0;$i < count($_SESSION['koszyk']); $i++)
{
        echo '<tr>';
        echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
        echo '<td align="right">';
        echo $ilosc.' m<sup>2</sup> x '.number_format (($ceny[$_SESSION['koszyk'][$i]])* $ilosc,2);
        echo ' zlotych</td></tr>';
        $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]]);
}

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0