31. oktober 2009 - 16:37Der er
8 kommentarer og 1 løsning
Ligge tal sammen i php
Hey
Har et script som ligger nogle tal samme ud fra brugers ønsker.. Men har et problem med to tal 10 og 11.. når jeg skriver dem ind og submit ligger den kun 1 til.
Hvad skal jeg gøre for at løse dette lille problem..
Ikke forstaaet. Jeg har proevet at analysere og forstaa koden. Jeg har et problem med strukturen. Der er 10 {s men 11 }s. Der testes tidligt (saa vidt jeg forstaar koden) om $key indeholder substrengen 'qty'. Hvis ja, saa fjernes 'qty' (eller bliver erstattet med''. Hvis nej, saa sker der tilsyneladende slet ikke noget.
Saa siger du at koden "ligger nogle tal sammen." Mener du at koden laegger tal sammen (5 + 3 + 7...). Jeg har ikke kunnet finde hvor koden laegger tal sammen, kun hvor den concatenerer noget (saasom $newcart .= ',' . $item;)
Hvis du har mere forklaring saa proever jeg igen. Ellers maa jeg give op.
Her har du hele koden.. det andet var bare et udklip fra koden..
// Process actions $cart = $_SESSION['cart']; $action = $_GET['action']; switch ($action) { case 'add': if ($cart) { $cart .= ','.$_GET['id']; } else { $cart = $_GET['id']; } echo "<script type='text/javascript'>document.getElementById('').style.textDecoration='blink';</script>"; break; case 'delete': if ($cart) { $items = explode(',',$cart); $newcart = ''; foreach ($items as $item) { if ($_GET['id'] != $item) { if ($newcart != '') { $newcart .= ','.$item; } else { $newcart = $item; } } } $cart = $newcart; echo "<meta http-equiv='refresh' content='1'>"; } break; case 'update': if ($cart) { $newcart = ''; foreach ($_POST as $key=>$value) { if (stristr($key,'qty')) { $id = str_replace('qty','',$key); $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart); $newcart = ''; foreach ($items as $item) { if ($id != $item) { if ($newcart != '') { $newcart .= ','.$item; } else { $newcart = $item; } } } for ($i=1;$i<=$value;$i++) { if ($newcart != '') { $newcart .= ','.$id; } else { $newcart = $id; } } } } } $cart = $newcart; break; } $_SESSION['cart'] = $cart;
Det som den gøre er at der kommer et tal fra en form. eksp: 10. Så tager den så det pågælende id og ligger ind i Session 10 gang.. men det kan den ikke finde ud af. Kun hvis det er 9 og ned efter.
Så min tank er bare om jeg på en eller anden måde kan gøre sådan at den tager 10 for 10 og ikke som 1??
Jeg kan ikke gennemskue det. Drejer det sig om at brugeren fylder en form med ting, for eksempel kaffefiltre, der skal laegges i en shoppingcart og at en af felterne i formen angiver hvor mange kaffefiltre, for eksempel 10, og at der saa er en funktion der skal loopes 10 gange? Der maa et eller andet sted vaere kode for formen som leverer de forskellige felter i $_POST, og hvor kommer vaerdierne i $_GET fra? Hvis det er alt sammen indeholdt i det du har sendt saa er det mig der er tumpet. Hvis du ikke har sendt mig den kode er det maaske fordi du vil hemmeligholde den. I begge tilfaelde maa vi stoppe. Hvis du vil at det skal kikkes paa saa maa du sende mig koden.
Jeg beklager, jeg maa stoppe. Jeg har analyseret koderne i flere timer, men jeg har ikke kunnet gennemskue hvad problemet er (hvad programmet skal goere men ikke goer.) Det er nok min erfaring med shopping baskets der er for ringe.
Spoergsmaalet er nu flere dage gammelt og du har ikke haft indput fra andre end mig. Jeg vil foreslaa (og bede om) at du afslutter spoergsmaalet (giver dig selv pointerne.) Det giver god orden, og saa staar spoergsmaalet ikke laengere som aabent i min liste af input.
Reglerne tillader at du stiller spoergsmaalet igen med flere points for at se om du kan lokke eksperter med mere ekspertise til (15 points er ikke ret meget og du har points nok at give af.) Jeg ville saa foreslaa at du stiller spoergsmaalet paa en anden maade, for eksempel: I mit shoppingbasket program naar programmet skal udregne totalprisen ved at gange pris med qty saa regner programmet kun rigtigt med encifrede tal. Hvis for eksempel qty = 11 saa ganger den kun prisen med 1 [hvis det er det der er problemets kaerne, eller naar den skal lave en leveringsliste med et antal linier for hvert item, hvis antal er et tocifret tal saa bruger det kun det foerste ciffer og ignorere resten, for eksempel hvis qty = 11 saa laver den kun en raekke]. Som du oprindeligt stillede spoergsmaalet vil det ikke vaere forstaaeligt, selv ikke for 200 points.
Dk-anderson, forventer du flere input paa dit spoergsmaal? Det er nu tre dage gammelt, og saa sker der erfaringsmaessigt ikke mere. Det ville vaere godt hvis du ville lukke spoergsmaalet. Det giver god orden, og saa staar det ikke laengere som aabent i min liste af indlaeg (du fik ikke noget svar, saa du maa selv ifoelge reglerne lave et svar og acceptere det.)
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.