Estoy seguro que no hay una respuesta simple a esta, pero he estado buscando a tientas con todo por casi una semana y la entrega. Estoy tratando de construir un carrito de la compra de la aplicación y cada una de codificación de la solución que voy a construir va a trabajar cuando tengo que incluir el código en la misma página, pero cuando trato de usar una página externa para ejecutar la función no parece para devolver los datos. He probado varias técnicas de monitoreo para determinar qué es lo que está sucediendo.

Aquí está el código de la página principal:

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <title>Cart Connection</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    </head>

    <body>
            <p>Will this display?</p>
            <p><a href='<?php echo "showCart.php?PHPSESSID=" . session_id() ?>'>View Cart</a></p>

            <?php
                $Database = "L3TtL2B5DdY";
                $Table = "tblProds";

                if (isset($_SESSION['curCart']))
                    $Cart = unserialize($_SESSION['curCart']);
                else
                {
                    if (class_exists("shoppingCart"))
                    {
                        $Cart = new shoppingCart();
                        $Cart->setDatabase($Database);
                        echo ("<p>If statement ran successfully</p>");
                    }
                    else
                        exit("<p>The shoppingCart class is not available!");
                }


                $Cart->setTable($Table);
                $Cart->getProductList();
                $_SESSION['curCart'] = serialize($Cart);
            ?>
            <p><a href='<?php echo "showCart.php?PHPSESSID=" . session_id() ?>'>View Cart</a></p>

    </body>
</html>

Aquí está el código correspondiente en el «shoppingCart.php» página:

<?php
class shoppingCart
{
private $dbConn = "";
private $dbName = "";
private $tableName = "";
private $orders = array();
private $orderTable = array();
function _construct()
{
$this->dbConn = @new mysqli("localhost", "root", "");
if (mysqli_connect_errno()) 
die("<p>Unable to connect to the database server.</p>" . "<p>Error Code " . 
mysqli_connect_errno() . ": " . mysqli_connect_error() . "</p>");
}
public function setDatabase($Database)
{
$this->dbName = $Database;
@$this->dbConn->select_db($this->dbName)
Or die("<p>Unable to select the database.</p>" . "<p>Error code " . mysqli_errno($this->dbConn) . 
": " . mysqli_error($this->dbConn) . "</p>");
}
public function setTable($Table)
{
$this->tableName = $Table;
}
public function getProductList()
{
$sqlString = "SELECT prodID, prodName, prodPrice FROM $this->tableName";
@$qryResult = $this->dbConn->query($sqlString)
Or die("<p>Unable to perform the query.</p>" . "<p>Error code " . mysqli_errno($this->dbConn) . 
": " . mysqli_error($this->dbConn) . "</p>");
echo "<table width='100%' border='1'>";
echo "<tr><th>Product ID</th><th>Product Name</th><th>Product Price</th><th>Select Item</th></tr>";
$row = $qryResult->fetch_row();
do
{
echo "<tr><td>{$row[0]}</td>";
echo "<td>{$row[1]}</td>";
echo "<td>{$row[2]}</td>";
echo "<td><a href='showCart.php?PHPSESSID=" . session_id() . "&operation=addItem&productID=" . $row[0] . 
"'>Add</a></td></tr>";
$row = $qryResult->fetch_row();
} while ($row);
echo "</table>";
}
......
?>

Cuando intento cargar la página principal mostrará los dos

líneas y eso es todo. Yo depurar todos los errores cuando por primera vez creado el código y pensé que se iba a trabajar. Cuando escribí la versión original de esta página se me puso la «conexión» código en la misma página y en la tabla mostrada bien, así que no sé qué otra cosa podría ser.
He instalado WAMP en mi Windows XP cuadro y parece que funciona bien. No he tocado la configuración de los archivos de cualquiera de los programas y todos mis otros código de la prueba parece funcionar bien. Es sólo cuando trato de contactar a un archivo externo.
Cualquier ayuda sería muy apreciada como creo que mi cerebro está girando a la papilla.
Gracias

InformationsquelleAutor | 2009-06-11

2 Comentarios

  1. 1

    Es probable que tenga que incluir la ShoppingCart.php en el archivo de la página principal, por lo que tiene la definición de la ShoppingCart clase. Trate de poner en la parte superior de la página principal:

    <?php require('ShoppingCart.php'); ?>

    Lo que creo que podría estar sucediendo es que el carro objeto es llegar unserialised de la Sesión, pero no hay ninguna definición de la clase, por lo que se convierte en una instancia de una incompleta de la clase. Cuando, a continuación, llamar a un método, usted está recibiendo un error fatal. Lo que probablemente no ayuda es que no se puede mostrar los errores, de manera que el script acaba de terminar. También se podría tratar de poner en la parte superior de la página principal:

    <?php ini_set('display_errors', true); ?> 

    Esto debería hacer que PHP errores de obtener la muestra.

    Editar

    Podría ser vale la pena señalar que no se puede almacenar una conexión de base de datos en la sesión. Usted necesita para conectar con el servidor /selecciona la base de datos etc. en cada solicitud. No creo que el guión está actualmente haciendo.

    También, usted puede almacenar objetos en la sesión sin tener que preocuparse acerca de la seriación ti mismo, aquí está un ejemplo rápido:

    <?php
    //include class definition before starting session.
    require('ShoppingCart.php');
    session_start();
    if (!isset($session['cart'])) {
    $session['cart'] = new ShoppingCart();
    }
    $cart = $session['cart'];
    //do stuff to cart
    $cart->doSomething();
    //changes are now saved back to the session when the script is terminated, without you having to do anything.
    • Buena convocatoria en la deserialización.
    • UY pensé que copiar el código completo de la página principal. Tengo el requiere código añadido. Esto es lo que tengo antes de que el código ya he publicado: <?php require_once(«shoppingCart.php»); session_start(); $_SESSION[‘curCart’]; ?><!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN» «w3.org/TR/xhtml1/DTD/xhtml1-strict-dtd«> <html xmlns=»w3.org/1999/xhtml«> <head> <title>Carrito de Conexión</title> <meta http-equiv=»content-type» content=»text/html; charset=iso-8859-1″ /> </head> …

Dejar respuesta

Please enter your comment!
Please enter your name here