MeleaMedlem sedan juli 20033 147 inlägg 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 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
Ska inte <?=$objRS[id]?> vara <?=$objRS['id']?>?
*trött... somnar nu*
MeleaMedlem sedan juli 20033 147 inlägg Nja, eftersom det är ett nummer så behövs det väl inga fnuttar?
PeeerMedlem sedan mars 20025 907 inlägg
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 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).
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 /Red Löste det, tack så mycket ;)