Forsøger at foretage et funktionsopkald til en ekstern fil med PhP, MySQL ved hjælp af WAMP

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er sikker på, at der er et simpelt svar på dette, men jeg har fumlet med alt i næsten en uge nu og overgivet. Jeg forsøger at opbygge en indkøbskurv-app, og hver kodende løsning, jeg opbygger, vil fungere, når jeg medtager koden på den samme side, men når jeg forsøger at bruge en ekstern side til at køre funktionen, synes det ikke at returnere dataene. Jeg har forsøgt forskellige overvågningsteknikker til at bestemme, hvad det sker.


Her er koden til hovedsiden:
    


<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>


Her er den relevante kode på siden 'shoppingCart.php':


<?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>";
        }

......
?>


Når jeg forsøger at indlæse hovedsiden, vil den vise de to
 linjer og det er alt. Jeg debugged alle fejlene, da jeg først oprettede koden og troede, at det ville fungere. Da jeg skrev den oprindelige version af denne side, lagde jeg 'forbindelse' -koden på samme side, og bordet blev vist fint, så jeg ved ikke, hvad det ellers kunne være.
Jeg installerede WAMP på min Windows XP-boks, og det ser ud til at fungere fint. Jeg har ikke rørt konfigurationsfilerne til nogen af ​​programmerne, og al min anden testkode synes at fungere fint. Det er lige, når jeg prøver at kontakte en ekstern fil.
Enhver hjælp ville blive meget værdsat, da jeg tror, ​​at min hjerne vender sig til mush.
Tak

Bedste reference


Du skal sandsynligvis inkludere filen ShoppingCart.php på din hovedside, så den har definitionen af ​​ShoppingCart-klassen. Prøv at sætte øverst på din hovedside:


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


Hvad jeg synes kunne ske, er at vognobjektet bliver unserialised fra sessionen, men der er ingen klassedeposition, så det bliver en forekomst af en ufuldstændig klasse. Når du derefter kalder en metode på det, får du en fatal fejl. Hvad der sandsynligvis ikke hjælper er, at du måske ikke viser fejl, så scriptet vil bare ende. Du kan også prøve at sætte øverst på hovedsiden:


<?php ini\_set('display\_errors', true); ?> 


Dette skal gøre PHP fejl blive vist.


Rediger


Det kan være værd at påpege, at du ikke kan gemme en databaseforbindelse i sessionen. Du skal forbinde til serveren/vælge databasen mv. På hver anmodning. Jeg tror ikke, at dit script er i færd med at gøre det.


Du kan også gemme objekter i sessionen uden at bekymre sig om serialiseringen selv, her er et hurtigt eksempel:


<?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.

Andre referencer 1


Du skal


include\_once("ShoppingCart.php");


Læs om de forskellige måder at inkludere filer på


http://www.w3schools.com/PHP/php\_includes.asp[7]