[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
On Sat, 2011-04-23 at 20:56 +0100, Kevin Lucas wrote: > Hi all hope you are enjoying this Easter sunshine break? > > I am pondering over something that I have wanted to achieve for some > time with my LAMP system to run the Shop. > > In a nutshell I have a "multicheck box" form which I select many items > then post it to a php script to fetch the complete details of the item > from the Db then add quantities and put in a Temp table in Mysql. > > I have the problem of the post index "box" is mostly numeric ie 123456 > format but there are a few valid id's like SP123456 or even AbcDefGHIJK > in some cases. > The table schema has this "box" as being VARCHAR(20) so it should handle > all these chars. > > and it's these alpha chars that give me a problem. > > the php I have tried is below > > //this first bit gets the string in a var called $val > > echo "<br> get the checkboxes in a while list<br>"; > > $box=$_POST['box']; > echo "you have chosen "; > while (list ($key,$val) = @each ($box)) { > echo "'$val',"; > } > > // now I can see I have all the checkbox id's and try to get them in a > format to use the SELECT... FROM ....WHERE ... IN type query > > echo "<br> implode results"; > // if ok need to put code in select query > $code = "(".implode(",", $_POST['box']).")"; > echo "$code"; > echo "<br>"; > > > $query="select code, product, product2 FROM shelflables WHERE code IN > $code group by code order by code"; > $result=mysql_query($query); > > > ///diag to see if the query worked > echo "<br> raw output of query to see whats fetched <br> "; > if ($dbResult = mysql_query($query)) > { > while($recordData = mysql_fetch_assoc($dbResult)) > { > print_r($recordData); // output raw contents of $recordData > } > } > else > print('Could not SELECT data from database. Query sent: > '.$query.'<br/>'."\n".'Error given: '.mysql_error().'<br/>'."\n"); > /// > $num=mysql_numrows($result); > > mysql_close(); > > > //this bit is a life saver as it displays the error on the web page > instead of me looking at the logs. > > The var $code works without any modification for all numeric records. > > If a Alpha char is in the string the format (12345,12346,AP12345) fails > on > > Could not SELECT data from database. Query sent: select code, product, > product2 FROM shelflables WHERE code IN (12345,12346,AP12345) group by > code order by code > Error given: Unknown column 'AP12345' in 'where clause' > > If I manually type in the query and put each element in a ' ' the query > runs OK. Why does the code run for numeric but not Alpha chars? > > So I have got as far as this with $check_val replacing the $code var > > > //another method > echo "<br> loop round count of checkboxes and add (comma and ' ') "; > if(isset($_POST['box'])) > { $check_val .="('"; //adds the opening bracket > for ($i=0; $i<count($_POST['box']);$i++) { > //here I am trying to create a String in the form > //('id1','id2','id3') > > > $check_val .= $_POST['box'][$i]; > $check_val .="','"; > > }$check_val .=")"; > } > echo "<br>"; > echo $check_val; > echo "<br>"; > > //but I get a ,' left at the end so the query wont run > > So is there an easier way of collecting the string together with commas > between and delimited by ' ' ? i don't know if this will be any use. i'm not 100% clear.. $string = "id1,id2,id3; $value = "'".implode("','",explode(",",$string))."'"; // translate csv with '' delimits $query= mysql_query("select code, product, product2 FROM shelflables WHERE code IN ".$code." group by code order by code"); while ($row = mysql_fetch_array($query)) { echo "'".implode("','",explode(",",$row))."'"; // output your stuff } i'd start with that.. but not too sure, its a rough draft! haha! > > Apologies for the length of this but I hope I have explained it > correctly! > > -- > Regards > > Kevin Lucas > Minions Post Master(Sub) > Eleven Years in the Making! > www.minionsbandb.co.uk > www.tearooms.minionsbandb.co.uk > FaceBook Minions_shop > Po House, Minions, > Liskeard Cornwall > PL14 5LE > 01579363386 > > -- The Mailing List for the Devon & Cornwall LUG http://mailman.dclug.org.uk/listinfo/list FAQ: http://www.dcglug.org.uk/listfaq