[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
On Sun, 2011-04-24 at 00:31 +0100, Joe Buckle wrote:
> 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
Sorry, forgot to say, beyond here is within the loop... my mistake,
don't get it confused with the sample above.
>
> $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