webForumDet fria alternativet

Tips till liten webshop

7 svar · 467 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#1

Tjabba wF :h

Har en liten fråga ang. en webshop jag bygger just nu. Men har fastnat där jag ska lägga in alla produkter man vill beställa i databasen. Själv INSERT koden alltså... Såhär loopar jag ut alla produkter och så får man välja antalet också.

<?
$SQL = mysql_query("SELECT * FROM products order by product_name") or die (mysql_error());
?>

<form action="forms/product.php" action="method">
<input type="hidden" name="query" value="buy">
<? while($objRS = mysql_fetch_array($SQL)) { ?>
<?=$objRS['product_name']?> - <?=$objRS['price']?> kr || Antal: <select name="<?=$objRS[id]?>">
<option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option>
</select><br>
<? } ?>
<input type="submit" value="Beställ">
</form>

Produkternas tabell ser ut såhär:

id
product_name
price

Har inte skapat någon tabell för var alla saker man ska köpa hamnar, tänkte att det får ingå i "tipset" :). Vore verkligen skoj om någon kunde hjälpa mig med detta eftersom det är till mitt lilla projektarbete i 3an.

Tack på förhand!

MeleaMedlem sedan juli 20033 147 inlägg
#2

Kommit en bit på vägen men pID (produktID:et) blir alltid den första produkten... det sparas alltså tre stycken punkter i databasen (antalet produkter) med samma värden.

<?
$SQL = mysql_query("SELECT Count(id) AS iCount FROM products") or die (mysql_error());
$objN = mysql_fetch_array($SQL);

$SQL = mysql_query("SELECT * FROM products order by product_name") or die (mysql_error());
?>
<form action="forms/product.php" method="post">
<input type="hidden" name="nmr_of_products" value="<?=$objN['iCount']?>">
<input type="hidden" name="query" value="buy">
<? while($objRS = mysql_fetch_array($SQL)) { ?>
<input type="hidden" name="pID" value="<?=$objRS[id]?>"><?=$objRS['product_name']?> - <?=$objRS['price']?> kr || Antal: <select name="products">
<option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option>
</select><br>
<? } ?>
Bordsnummer: <input type="text" name="tbl_nmr" size="3"><br>
<input type="submit" value="Beställ">
</form>

Sen insertkoden ser ut såhär:

for ($i = 1; $i<= $_POST['nmr_of_products']; $i++) {

$SQL = "INSERT INTO products_buy (pID, nmr_of_products, tbl_nmr) VALUES ($_POST[pID],'$_POST[products]','$_POST[tbl_nmr]')";
mysql_query($SQL) or die (mysql_error());

}

Varför funkar inte pID:et? Ser inte vad felet ligger...
Hjälp snälla! :e

Mvh

WebslaveMedlem sedan maj 2002647 inlägg
#3

Ska inte <?=$objRS[id]?> vara <?=$objRS['id']?>?

*trött... somnar nu*

MeleaMedlem sedan juli 20033 147 inlägg
#4

Nja, eftersom det är ett nummer så behövs det väl inga fnuttar?

PeeerMedlem sedan mars 20025 907 inlägg
#5

Melea skrev:

Nja, eftersom det är ett nummer så behövs det väl inga fnuttar?

Jopp, i sql-satser ska det inte vara några fnuttar, men i variabelnamn ska det vara det.

MeleaMedlem sedan juli 20033 147 inlägg
#6

Hur som helst så låg inte felet där... den vill inte ta tre stycken unika poster utan kör tre stycken lika dana (första produktID:et och antalet produkter blir samma i alla tre poster(tre produkter).

jawbreakerMedlem sedan jan. 2003296 inlägg
#7

Först och främst, om du ska ha flera formelement med samma namn så måste de heta [] på slutet.

<input type="hidden" name="pID" ...>

blir istället

<input type="hidden" name="pID[]" ...>

Samma sak gäller för dina selectboxar "products".

Din insert borde bli något åt det här hållet:

for ( $i = 0; $i < $_POST['nmr_of_products']; $i++ )
{
    $SQL = "INSERT INTO products_buy (pID, nmr_of_products, tbl_nmr) VALUES ({$_POST['pID'][$i]},'{$_POST['products'][$i]}','{$_POST[tbl_nmr]}')";
    mysql_query($SQL) or die (mysql_error());
}
MeleaMedlem sedan juli 20033 147 inlägg
#8

/Red Löste det, tack så mycket ;)

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)