D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

Re: [LUG] php mysql help

 

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