Conseguir com que consiga fazer "echo" na página index

Aphex

Power Member
Boas pessoal,

Estou com uma dúvida em PHP, estou a fazer uma loja on-line, tenho o cart.php e index.php, está tudo a funcionar. E agora quero adaptar o cart.php ao index.php. Quero que apareça o nome do produto numa tabela que já tenho feita.


[CART.PHP]

<?php


session_start();


$page = 'index.php';


mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('vincoseagulha') or die(mysql_error());


if (isset($_GET['add'])) {
$quantity = mysql_query('SELECT id, quantity FROM products WHERE id='.mysql_real_escape_string((int)$_GET['add']));
while ($quantity_row = mysql_fetch_assoc($quantity)) {
if ($quantity_row['quantity'] != $_SESSION['cart_'.(int)$_GET['add']]) { //continua a adicionar enquanto a quantidade for menor que a que está na base de dados
$_SESSION['cart_'.(int)$_GET['add']]+='1';
}
}
header('Location: '.$page);
}


if (isset($_GET['retirar'])) {
$_SESSION['cart_'.(int)$_GET['retirar']]--;
header('Location: '.$page);
}


if (isset($_GET['apagar'])) {
$_SESSION['cart_'.$_GET['apagar']]='0';
header('Location: '.$page);
}


function products() {
$get = mysql_query('SELECT id, name, description, price FROM Products WHERE quantity > 0 ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo "Não existem produtos a serem mostrados!";
} else {
while ($get_row = mysql_fetch_assoc($get)) {
echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />'.number_format($get_row['price'], 2).'€'.' <a href="cart.php?add=' .$get_row['id'].'">Add</a></p>';
}
}
}


function paypal_items() {
$num = 0;
foreach($_SESSION as $name => $value) {
if ($value!=0) {
if (substr($name, 0, 5)=='cart_') {
$id = substr($name, 5, strlen($name)-5);
$get = mysql_query('SELECT id, name, price, shipping FROM products WHERE id='.mysql_real_escape_string((int)$id));
while ($get_row = mysql_fetch_assoc($get)) {
$num++;
echo '<input type="hidden" name="item_number_'.$num.'" value="'.$id.'">';
echo '<input type="hidden" name="item_name_'.$num.'" value="'.$get_row['name'].'">';
echo '<input type="hidden" name="amount_'.$num.'" value="'.$get_row['price'].'">';
echo '<input type="hidden" name="shipping_'.$num.'" value="'.$get_row['shipping'].'">';
echo '<input type="hidden" name="shipping2_'.$num.'" value="'.$get_row['shipping'].'">';
echo '<input type="hidden" name="quantity_'.$num.'" value="'.$value.'">';
}
}
}
}
}




function cart() {
foreach($_SESSION as $name => $value) {
if ($value > 0) {
if (substr($name, 0, 5)=='cart_') {
$id = substr($name, 5, (strlen($name)-5));
$get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string($id));

while ($get_row = mysql_fetch_assoc($get)) {
$sub = $get_row['price']*$value;
echo $get_row['name'].' x '.$value.' @ '.number_format($get_row['price'], 2).' = '.number_format($sub, 2).'€'.'<a href="cart.php?retirar='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?apagar='.$id.'">[Apagar]</a><br />';
}

/*} else {
//echo 'Empty!';*/
}
}
@$total += $sub;
}
if ($total == 0) {
//echo "Não tem serviços adicionados!";

} else {
echo '<p>Total: '.number_format($total, 2).'€'.'</p>';

?>

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="[email protected]">

<?php paypal_items(); ?>

<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="<?php echo $total; ?>">
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but03.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>

<?php

}
}


?>

[INDEX.PHP]

[...]

<ul class="list">
<li class="l1 i1 column1">
<h2> </h2>

[...]


E eu quero fazer assim:

<ul class="list">
<li class="l1 i1 column1">
<h2> <?php $get_row['name']; </h2>

Só que dá-me erro embora eu ja esteja a includir o cart.php no index.php que a melhor maneira de fazer isto? (Notice: Undefined variable: get_row on line 136 )

Obrigado
 
Aqui não é preciso o mysql_real_escape: mysql_real_escape_string((int)$_GET['add']) porque o (int) torna o valor num número.

@$total += $sub;
O error supressor é um bocado mais lento, podes declarar numa linha antes:
$total = 0;

Por último, aconselho a usar PDO ou MySQLi, para além de serem seguros (não precisas de te preocupar com SQL Injection), as funções mysql_* foram deprecated nas versões PHP mais recentes. Ou seja, quando usas dá um aviso (Será removido nas próximas versões).

O MySQLi é muito parecido ao mysql_* normal!

Quanto à resposta ao problema, o $get_row não foi definido no index.php, daí o erro. Se queres passar os items no cart assim de uma maneira rápida, podes guardar o nome dos items numa array na $_SESSION.
E retiras os mesmos no index.php
 
Back
Topo