Prob mit DB-Eintrag

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

Prob mit DB-Eintrag

Beitrag von thl1000 »

Moin,

wahrscheinlich bin ich heute zu blöde...

Folgendes Prob:

Code: Alles auswählen

$sql = "SELECT * FROM  " . PRODUCTS_TABLE . " WHERE cat_id = " . $viewcat . "  ORDER BY prod_price";

if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query products information', '', __LINE__, __FILE__, $sql);
	}

	$product_data = array();

	while( $row = $db->sql_fetchrow($result) )
	{
		$product_data[] = $row;
		reset($product_data);
	}

	if ( !($total_products = count($product_data)) )
	{
		message_die(GENERAL_MESSAGE, "In dieser Kategorie sind keine Speisen vorhanden!");
	}

	for($j = 0; $j < $total_products; $j++)
	{
		if ( !empty($product_data) )
		{					
			$product_id = $product_data[$j]['prod_id'];
			$product_name = $product_data[$j]['prod_name'];
			$product_desc = $product_data[$j]['prod_desc'];
			$product_price = $product_data[$j]['prod_price'];

			$s_hidden_fields = '<input type="hidden" name="prod_price" value="' . $product_price . '" /><input type="hidden" name="prod_id" value="' . $product_id . '" />';
			
			$template->assign_block_vars('forumrow', array(
				'PRODUCT_ID' => $product_id,
				'PRODUCT_NAME' => $product_name,
				'PRODUCT_DESC' => $product_desc,
				'PRODUCT_PRICE' => $product_price . " €",
				
				'S_HIDDEN_FORM_FIELDS' => $s_hidden_fields
				)
			);
		}
	}
}

if ( $prod_id )
{
	if ( !$userdata['session_logged_in'] )
	{
		$redirect = POST_CAT_URL . "=" . $viewcat;
		redirect(append_sid("login.$phpEx?redirect=card.$phpEx&" . $redirect, true));	
	}
	
	$sql = "SELECT session_id FROM " . SESSIONS_TABLE . " WHERE session_user_id = " . $userdata['user_id'];
	
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain session information', '', __LINE__, __FILE__, $sql);
	}
	
	$row = $db->sql_fetchrow($result);
	$session_id = $row['session_id'];
	
	$sql = "SELECT MAX(cart_id) AS total FROM " . CART_TABLE;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain next cart_id information', '', __LINE__, __FILE__, $sql);
	}

	if ( !($row = $db->sql_fetchrow($result)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain next cart_id information', '', __LINE__, __FILE__, $sql);
	}
	
	$new_id = $row['total'] + 1;
	
	$prod_id = $HTTP_POST_VARS['prod_id'];
	$prod_price = $HTTP_POST_VARS['prod_price'];
	
	
	$sql = "INSERT INTO " . CART_TABLE . " (cart_id, cart_quantity, session_id, user_id, session_ip, prod_id, prod_price) VALUES ('$new_id', '$quantity', '$session_id', '$userdata[user_id]', '$userdata[session_ip]', '$prod_id', '$prod_price')";
	
	if ( !$db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not insert data into cart table', '', __LINE__, __FILE__, $sql);
	}
}

$template->assign_vars(array(
	'L_ITEM' => "Menge",
	'L_PRICE' => "Preis",
	'L_ADD_TO_CART' => "zum Warenkorb hinzufügen",
	'L_ORDER' => "Bestellung abgeben",
	
	'S_ADD_TO_CART' => append_sid("card.$phpEx?c=" . $viewcat),
	'U_VIEW_CART' => append_sid("view_cart.$phpEx")
	)
);
Wenn ich nun den Submit-Button anklicke, wird immer das letze Produkt in die DB eingetragen, ich komme nicht auuf den Fehler...

Hier noch das Template:

Code: Alles auswählen

<form action="{S_ADD_TO_CART}" method="post">
<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
	<tr> 
		<!-- BEGIN catrow -->
		<th class="row1" height="25" colspan="2" nowrap="nowrap">&nbsp;{catrow.CAT_TITLE}&nbsp;</th>
		<!-- END catrow -->
  	</tr>
  	<tr> 
		<th class="thCornerL" height="25" width="70%" nowrap="nowrap">&nbsp;{L_PRODUCT}&nbsp;</th>
		<th class="thCornerL" height="25" width="15%" nowrap="nowrap">&nbsp;{L_ITEM}&nbsp;</th>
		<th class="thCornerL" height="25" width="15%" nowrap="nowrap">&nbsp;{L_PRICE}&nbsp;</th>	
  	</tr>
  	<!-- BEGIN forumrow -->
  	<tr> 
		<td bgcolor="{forumrow.ROW_COLOR}" width="70%" height="50">
			<span class="forumlink"> 
				<a href="#">{forumrow.PRODUCT_NAME}</a>
				<br />
	  		</span> 
	  		<span class="genmed">
	  			{forumrow.PRODUCT_DESC}
	  			<br />
	  		</span>
		</td>
		<td class="row2" align="center" valign="middle" height="50">
			<span class="gensmall">
				<input type="text" name="quantity" value="1" size="2" maxlength="2">
			</span>
		</td>
		<td class="row2" align="center" valign="middle" height="50">
			<span class="gensmall">
				{forumrow.PRODUCT_PRICE}
			</span>
		</td>
		<td class="row1" align="center" valign="middle">
			{forumrow.S_HIDDEN_FORM_FIELDS}
			<input type="submit" name="submit" class="mainoption" value="{L_ADD_TO_CART}" />
		</td>
	<!-- END forumrow -->
</table>
</form>
Bin für jede Hilfe dankbar...
M.f.G.

thl1000
Dwing
Ehrenadmin
Beiträge: 1965
Registriert: 17.06.2001 02:00

Re: Prob mit DB-Eintrag

Beitrag von Dwing »

thl1000 hat geschrieben: Wenn ich nun den Submit-Button anklicke, wird immer das letze Produkt in die DB eingetragen, ich komme nicht auuf den Fehler...
Und was soll es eintragen?
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

RE

Beitrag von thl1000 »

Hallo,

es soll folgendes eingtragen werden:

Code: Alles auswählen

$sql = "INSERT INTO " . CART_TABLE . " (cart_id, cart_quantity, session_id, user_id, session_ip, prod_id, prod_price) VALUES ('$new_id', '$quantity', '$session_id', '$userdata[user_id]', '$userdata[session_ip]', '$prod_id', '$prod_price')";
Steht doch oben schon im Code...

Es sollen also, unteranderem, die Produkt-Id, der Produkt-Preis und die Produktmenge eingetragen werden. Das sind eben die Punkte, wo es nicht funktioniert. Es werden immer die Daten des letzten Produktes eingetragen, und nicht die Daten des gewählten Produktes.
M.f.G.

thl1000
Dwing
Ehrenadmin
Beiträge: 1965
Registriert: 17.06.2001 02:00

Beitrag von Dwing »

Ich find jetzt auf Anhieb auch keinen Fehler.
Was du mal versuchen könntest, alle Variable die im Query stehen, bevor sie definiert werden durch unset(); schicken.

Code: Alles auswählen

unset($prod_price);
unset($prod_id);
unset($new_id);
unset(...);

$new_id = $row['total'] + 1;
   
$prod_id = $HTTP_POST_VARS['prod_id'];
$prod_price = $HTTP_POST_VARS['prod_price']; 
thl1000
Mitglied
Beiträge: 41
Registriert: 29.12.2001 01:00
Wohnort: Mülheim a.d. Ruhr
Kontaktdaten:

RE

Beitrag von thl1000 »

Das funzt auch nicht,

in den Variablen

Code: Alles auswählen

$prod_id = $HTTP_POST_VARS['prod_id'];
$prod_price = $HTTP_POST_VARS['prod_price'];
stehen immer nur die ID und der Preis des letzten Produktes.

Ich verzweifle noch...
M.f.G.

thl1000
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Wenn du in ein Formular zig Felder mit dem selben Namen einbaust, muss sich der Browser ja für einen Wert entscheiden, den er senden soll. Beginne und beende das Formular mal innerhalb des forumrow-Blocks (wieso eigentlich forumrow?).
Antworten

Zurück zu „Coding & Technik“