Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan tudom megoldani azt,...

Hogyan tudom megoldani azt, hogy ne csak az első tétel adatait vigye át a kosárba (részletek kód a leírásban)?

Figyelt kérdés

lista.php

<!DOCTYPE html>

<html>

<head>

<title>Rendelés</title>


</head>

<body>

<style>

.box {

display:block;

font-size: 16pt;

font-family:arial;

width:100%;

position:relative;

background-color:#eeefef;

text-align:center;

margin:3px 0;

/*padding:5px;*/

border: 1px solid #666;

}

.nr {

display:inline-block;

font-size: 10pt;

position:relative;

background-color:#01506a;

color:white;

font-weight:bold;

text-align:right;

width:18px;

height:18px;

margin:2px;

padding: 8px;

border: 1px solid #999;

border-radius: 38px;

}


.aru {

display:inline-block;

text-align:left;

position:relative;

width:70%;

/* height:50px; */

margin:2px;

/* border: 1px solid #999;*/

}


.gombbox {

display:inline-block;

position:relative;

width:auto;

/*height:50px;*/

margin:2px;

padding: 10px;

/*border: 1px solid #999;*/

}

.nevbox {

display:inline-block;

font-weight:bold;

position:relative;

padding: 10px;

/*border: 1px solid #999;*/

}



.leiras {

display:inline-block;

position:relative;

padding: 10px;

/*border: 1px solid #999;*/

}

.gomb

{

background: #01506a;

color: #fff;

border-radius: 5px;

-webkit-border-radius: 5px;

-moz-border-radius: 5px;

font-weigt: bold;

font-size: 18px;

border: 2px solid #bebebe;

width: 150px;

height: 50 px;

padding: 6px 10px;



}


.gomb:hover

{

border: 2px solid #45ff5b;

background: #0379a0;

}

ol

{ list-style-position:inside;}


#rejtett{display:none;}

</style>


<?php require_once 'catalog.php';

print '<hr><h2>Alkatrészek</h2><ol>

';

foreach($alkatresz as $alkatresz) {

echo ' <div class="box"> <div class="nr"><li></li></div> <div class="aru">


<div class="nevbox"><b>' . $alkatresz[0] . ',<br /></h2>';

echo '</b>

</div>


<div class="leiras">' . $alkatresz[2] . '</div>



</div>

<div class="gombbox">

<form name="frmProduct1" method="post" action="./cart.php" id="Form1" onsubmit="return ValidatefrmProduct1(this)">';

print '<div id="rejtett">';

for($i=1; $i<=count($alkatresz); $i++){

$c = ($i==1) ? "checked='checked'" : "";

print '<input style=" padding-left:50px; class="kat1" type="radio" name="rendel[alkatresz]" value="'.$i.'" '.$c.'>'.$alkatresz[$i][0].' '.$alkatresz[$i][1].' FT <br><br>';

}

print '</div><input type="submit" id="Button1" class="gomb" name="addtocart" value="'.$alkatresz[1].' ft"></input></div>';


print '</form></div>';

}

print '</ol><hr>';


?>


</body>

</html>



-----catalog.php


<?php

$alkatresz = Array (


1 => Array(" Váz " , 16500 , " Budapest B acél "),

2 => Array(" Kormány " , 12500 , " MTB acél emelt 600x70x1,4 mm "),

3 => Array(" Nyereg " , 9900 , " Selle Royal 8072DC rugós "),

4 => Array(" Kerék " , 4100 , " 26-28col duplafalú Beretta, alu "),

5 => Array(" Sárvédő " , 1200 , " Festett acél+flap +prizma "),


);

?>



------cart.php


<?php

session_start();


ini_set('display_errors', 1);

error_reporting(0);



require_once 'catalog.php';



if ($_SERVER['REQUEST_METHOD'] == 'POST')

{

if (isset($_POST['rendel']))

{

AddToCart();

}

else

{

$action = isset($_POST['action']) ? $_POST['action'] : '';

$value = strtoupper(substr($action, 0, 5));

switch ($value)

{


}

}

}


function AddToCart(){

global $alkatresz;


$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';

$ic = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;

$ar = 0;


$n="".$alkatresz[$_POST['rendel']['alkatresz']][0]."";

$ar+=$alkatresz[$_POST['rendel']['alkatresz']][1];



$cart['ar'][$ic] = $ar;

$cart['name'][$ic] = $n;


$ic++;


$_SESSION['cart'] = $cart;

$_SESSION['itemcount'] = $ic;

}


?>



<?php



$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';

$itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;


$strHTML = "";


if ($itemcount == 0){

$strHTML = "<h3>Még nem rendelt</h3>";

}else{

$strHTML = "<div style=\"overflow:auto; height=358px;\">"."\n";

$strHTML .= "<table border=\"1\" cellpadding=\"3\" cellspacing=\"2\" width=\"100%\">"."\n";

$strHTML .= "<tr>"."\n";

$strHTML .= "<td><b>Tetel</b></td>"."\n";

$strHTML .= "<td><b>Ar</b></td>"."\n";

$strHTML .= "<td><b>Reszosszeg</b></td></tr>"."\n";


$total = 0;

for ($i=0; $i<$itemcount; $i++)

{

$strHTML .= "<tr>"."\n";

$strHTML .= "<td><b>".$cart[name][$i]."</b><hr></td>"."\n";

$strHTML .= "<td>".$cart[ar][$i]." Ft  </td>"."\n";

$total += $cart[ar][$i];

$strHTML .= "<td>".$total." Ft<hr></td>"."\n";

$strHTML .= "</tr>"."\n";

}


$strHTML .= "<tr>"."\n";

$strHTML .= "<td></td>"."\n";

$strHTML .= "<td style='color:orange;'>Total:  </td>"."\n";

$strHTML .= "<td style='color:orange;'>"." ".$total." Ft</td>"."\n";

$strHTML .= "</tr>"."\n";

$strHTML .= "</table>"."\n";

$strHTML .= "</div>"."\n";

}

echo $strHTML;



?>

<hr>



<input type="button" id="rendel" onclick="window.location='./lista.php';return false;" name="meg" value="MEG RENDELEK" >

<br>


<input type="button" id="torol" onclick="window.location='./cancel.php';return false;" name="cancel" value="TORLES" >

<br>



<hr>


-----

ez egy tolálisan egyszerű webshop alap , de valami miatt csak az 1. tételét lehet a kosárba rakni bármelyik másik rendel gombjára klikkelek.


Mi a hiba?

A tömböt szépen beolvassa.

Valaki tud segíteni?



#php #weblap #shopingcart
2016. ápr. 17. 14:25
 1/6 anonim ***** válasza:
Ha segítséget szeretnél, először is töröld a kódból a CSS-t, aminek biztosan semmi köze a problémához, másodszor tedd fel a maradékot a pastebin.comra vagy hasonló oldalra, ahol megmaradnak a behúzások, mert ezt a karakterömlenyt én végig nem olvasom ingyen. Könnyítsd meg egy kicsit a válaszolók dolgát.
2016. ápr. 17. 18:25
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

pastebin.comra másolva-


lista.php

Paste ID:uzv6hJXe


catalog.php


Paste ID: tV9L94P4


cart.php

Paste ID: KzN36U7Z

2016. ápr. 17. 22:21
 3/6 anonim ***** válasza:

Egyelőre csak az elsőt néztem.


foreach($alkatresz as $alkatresz)

Ez biztosan hibás, nem használhatjuk ugyanazt a változót a tömb és az elem neveként.

2016. ápr. 17. 23:27
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Ha cserélem erre:

foreach($alkatresz as $alkatresz1)

akkor is ugyanazt az eredményt kapom. A "kosárba" bármelyik árra nyomva csak az 1. "Váz" kerül át, tehát a tömb első sora. Mintha csak azt érzékelné.

2016. ápr. 18. 04:49
 5/6 anonim ***** válasza:

De utána több helyen is át kell írni a ciklusban... Jobb lenne eleve beszédesebb neveket használni. Egy tömb, amit több alkatrész adatainak a tárolására használsz, nem lehet $alkatresz, mert az egyes számban van, és csak arra jó, hogy összezavarja a gondolkodásodat, ahogy meg is tette, plusz hogy összezavarja mások gondolkodását is, akik a kódodat olvasni akarják.

A tömb helyes neve $alkatreszek.

A ciklus így alakul: foreach ($alkatreszek as $alkatresz)

Nézd át az egész kódot abból a szempontból, hol dolgozol egyetlen alkatrésszel, és hol az összes alkatrész tömbjével. Ez keveredett össze nagyon, és szerintem ha ezt a fejedben és a programodban is rendbe teszed, akkor jó eséllyel ki fog javulni a hiba. A ciklus attól ciklus, hogy a belsejében a ciklusváltozót használjuk fel, ami jelen esetben a foreach 2. paramétere.

2016. ápr. 18. 06:44
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:

Több helyen átírtam a ciklusban a változót, de úgy sem lett jobb. Gondolom valahogy arra kellene rájöjjek, hogyan kezeljen le a ciklus több elemet(alkatrészek), mert a jelenlegi formában csak 1-et tud. print $aklatresz[1][0] . " ," .$alkatresz[1][1] . "ft"; Arra már rájöttem, hogy igy iratom ki az 1. sor Nevét és árát, de hogy ezt ciklusban hogyan viszem át az rejtély... Kipróbáltam, de a kosárba sem a nevet sem az árat(helyette 0-át) nem vitte át. :(


A a változó név képzéssel nem akartam összezavarni senkit, és a jövőben odafigyelek a többesszámra is.

2016. ápr. 18. 09:34

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!