Hej, Jeg er ved at lave en butik på nettet, men jeg får en fejl når jeg opdatere stk. i min indkøbskurv. Kan du fortælle mig hvorfor? Fejlkoden er: Notice: Array to string conversion in /home/virtual/purecreation.dk/public_html/shop/library/config.php on line 51
Notice: Array to string conversion in /home/virtual/purecreation.dk/public_html/shop/library/config.php on line 51
Notice: Array to string conversion in /home/virtual/purecreation.dk/public_html/shop/library/config.php on line 51 Unknown column 'A' in 'where clause'
Dette er hvad der står i og omkring linie 51: 48 if (!get_magic_quotes_gpc()) { 49 if (isset($_POST)) { 50 foreach ($_POST as $key => $value) { 51 $_POST[$key] = trim(addslashes($value)); 52 } 53 }
Dette er funktionen til at updatere: function updateCart() { $cartId = $_POST['hidCartId']; $productId = $_POST['hidProductId']; $itemQty = $_POST['txtQty']; $numItem = count($itemQty); $numDeleted = 0; $notice = '';
for ($i = 0; $i < $numItem; $i++) { $newQty = (int)$itemQty[$i]; if ($newQty < 1) { // remove this item from shopping cart deleteFromCart($cartId[$i]); $numDeleted += 1; } else { // check current stock $sql = "SELECT pd_name, pd_qty FROM tbl_product WHERE pd_id = {$productId[$i]}"; $result = dbQuery($sql); $row = dbFetchAssoc($result);
if ($newQty > $row['pd_qty']) { // we only have this much in stock $newQty = $row['pd_qty'];
// if the customer put more than // we have in stock, give a notice if ($row['pd_qty'] > 0) { setError('Der er desværre ikke det ønskede antal for dette produkt på lager. Vælg venligst et mindre antal'); } else { // the product is no longer in stock setError('Desværre er produktet, (' . $row['pd_name'] . '), ikke længere på lager');
// remove this item from shopping cart deleteFromCart($cartId[$i]); $numDeleted += 1; } }
// update product quantity $sql = "UPDATE tbl_cart SET ct_qty = $newQty WHERE ct_id = {$cartId[$i]}";
dbQuery($sql); } }
if ($numDeleted == $numItem) { // if all item deleted return to the last page that // the customer visited before going to shopping cart header("Location: $returnUrl" . $_SESSION['shop_return_url']); } else { header('Location: cart.php'); }
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Nu er det jo dig, der bruger addslashes ... så det ved du vel?? Du kan sikkert klare det på samme måde, som du gør med $_POST, som jo også er et array.
Sjovt jeg sidder netop idag med akkurat samme problem - jeg tilpasser en shopping-cart som öjensynligt er den samme, som ham der har startet dette emne, og baade min tilpassede OG den uändrede version, som jeg har downloadet og installeret paa min egen computer har samme fejl. Udviklerens eksempel paa hans egen hjemmeside har dog ikke denne fejl. Derfor formoder jeg det kan have noget at göre med opsätning eller versionsnumrene af min apache, php, sql, whatever. Synes ihvertfald det ville väre underligt hvis den version som den oprindelige udvikler har lagt til download skulle adskille sig fra den han selv körer paa det site der präsenterer shopping-cart'en. Jeg kan desvärre ikke lave link til den lige her, da jeg ikke skriver hjemmefra (derfor de dumme tyske bogstaver), men senere idag eller imorgen poster jeg linket -
hvis jeg finder en lösning skal jeg nok ogsaa skrive den her, ligesom jeg selvfölgelig vil väre yderst taknemmelig for enhver hjälp til lösning af det her problem.
naa, jeg ville bare lige skrive at jeg sidder med akkurat det samme, og at jeg vender tilbage senere.
================================================= ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On =================================================
(den står garanteret til 'off')
problemet er at ham der har lavet plain-cart selv har sin magic_quotes til 'on' så han har ikke opdaget at der er et problem i hans if-magic-quotes-off (omkring linie 51 i library/config.php) - den tager nemlig ikke højde for de tilfælde hvor der er tale om et array. Det ved han ikke, da han på grund af sine indstillinger aldrig har set indholdet af if'en. Så du må enten ændre dine indstillinger eller omskrive hans if-magic-quotes-off så den gør noget andet hvis variablen er et array...
Giver det mening?
... måske skulle jeg skrive en email til ham der har lavet plaincart...?
Nu hoster jeg ikke selv mine sider, så jeg kan vel ikke rigtig gå ind og ændre i indstillingen i php.ini? Eller også har jeg ikke forstået hvor php.ini filen ligger henne?! Måske kan jeg spørge min host om hvad der står?!
Men jo måske sku du skrive til ham og spørge/sige det! Jeg har spurgt om hjælp til fejlen, men han svarer ikke!
Sku måske lige tilføje at jeg ved ikke lige hvordan jeg skulle skrive en "if-magic-quotes-off", så hvis du har en start/idé så kan jeg måske godt komme igang med den, men finder den sgu ikke selv! :-(
Har lige tjekket mit webhotels php5 opsætning, og magic_quotes_gpc er sat til on, men magic_quotes_runtime og _sybase er sat til off, ville det ændre noget at ændre dem?
Nå, jeg troede du selv havde skrevet koden, men så var det bare sådan et program du havde hentet. Det lyder lidt mærkeligt at du har magic_quotes_gpc sat til "on" og alligevel udfører den funktion. Men det jeg tænkte på tidligere var bare dette (skitse/utestet):
if (!get_magic_quotes_gpc()) { if (isset($_POST)) { foreach ($_POST as $key => $value) { if (is_array($_POST[$key])) { foreach ($_POST[$key] as $key2 => $value2) { $_POST[$key][$key2] = trim(addslashes($value2)); } } else { $_POST[$key] = trim(addslashes($value)); } } }
Men det lyder nu ikke som om det oprindelige script er synderlig gennemtænkt - på dette punkt i hvert fald, jeg har ikke kigget på andet.
Du kunne selvfølgelig heller ikke vide det ikke var noget jeg havde skrevet!
Tak det virker! I config filen står der nedenunder den nævnte problem på linie 51, det samme bare med GET i stedet, men hvis jeg ikke bruger GET på noget tidspunkt er det vel ligemeget at det står der!?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.